Пример #1
0
 def toggle_play_pause(self):
     """
     toggle play/pause
     """
     if self.carla_status.synchronous_mode:
         if self.carla_status.synchronous_mode_running:
             self.carla_control_publisher.publish(
                 CarlaControl(command=CarlaControl.PAUSE))
         else:
             self.carla_control_publisher.publish(
                 CarlaControl(command=CarlaControl.PLAY))
    def __init__(self):
        super().__init__()
        metadata = {'render.modes': ['human']}

        rospy.init_node('carla_ego_gym', anonymous=True)
        self.rate = rospy.Rate(20)  # 100Hz

        # control data
        self.pub_ackermann_cmd = rospy.Publisher(
            '/carla/ego_vehicle/ackermann_cmd', AckermannDrive, queue_size=5)
        self.ackermann_cmd = AckermannDrive()
        self.pub_carla_control_cmd = rospy.Publisher('/carla/control',
                                                     CarlaControl,
                                                     queue_size=5)
        self.carla_ctrl_cmd = CarlaControl()
        self.carla_ctrl_cmd.command = self.carla_ctrl_cmd.PLAY
        self.pub_carla_control_cmd.publish(self.carla_ctrl_cmd)
        self.carla_ctrl_cmd.command = self.carla_ctrl_cmd.STEP_ONCE

        self.image_subscriber = rospy.Subscriber(
            "/carla/ego_vehicle/camera/rgb/front/image_color", Image,
            self.on_image)
        self.collision_subscriber = rospy.Subscriber(
            "/carla/ego_vehicle/collision", CarlaCollisionEvent,
            self.on_collision)
        self.lane_invasion_subscriber = rospy.Subscriber(
            "/carla/ego_vehicle/lane_invasion", CarlaLaneInvasionEvent,
            self.on_lane_invasion)

        self.ego = EgoHandler()

        # sensors data
        self._reset_data()
        self._steering_threshold = 0.3

        # History data
        self.last_steering = 0.0
        max_steering = self.ego.get_max_steering_angle()
        self.total_reward = 0.0

        self._action_spec = array_spec.BoundedArraySpec(
            shape=(2, ),
            dtype=np.float32,
            minimum=[0.0, (-1 * max_steering)],
            maximum=[12.0, max_steering],
            name='action')
        self._observation_spec = array_spec.BoundedArraySpec(
            shape=(84, 84, 3),
            dtype=np.float32,
            minimum=0,
            maximum=1,
            name='observation')

        self._send_command([0, 0])
Пример #3
0
 def step_once(self):
     """
     execute one step
     """
     self.carla_control_publisher.publish(
         CarlaControl(command=CarlaControl.STEP_ONCE))