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])
def step_once(self): """ execute one step """ self.carla_control_publisher.publish( CarlaControl(command=CarlaControl.STEP_ONCE))