示例#1
0
    def run(self):
        # Read the vehicle ID from the vehicle ID stream.
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug("@{}: Received Vehicle ID: {}".format(
            vehicle_id_msg.timestamp, vehicle_id))

        # Connect to the world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        if world is None:
            raise ValueError("There was an issue connecting to the simulator.")

        self._vehicle = get_vehicle_handle(world, vehicle_id)
        self._map = world.get_map()

        # Install the lane-invasion sensor.
        lane_invasion_blueprint = world.get_blueprint_library().find(
            'sensor.other.lane_invasion')

        self._logger.debug("Spawning a lane invasion sensor.")
        self._lane_invasion_sensor = world.spawn_actor(lane_invasion_blueprint,
                                                       carla.Transform(),
                                                       attach_to=self._vehicle)

        # Register the callback on the lane-invasion sensor.
        self._lane_invasion_sensor.listen(self.process_lane_invasion)
示例#2
0
    def run(self):
        # Read the vehicle ID from the vehicle ID stream.
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug("@{}: Received Vehicle ID: {}".format(
            vehicle_id_msg.timestamp, vehicle_id))

        # Connect to the world.
        _, world = get_world(self._flags.simulator_host,
                             self._flags.simulator_port,
                             self._flags.simulator_timeout)

        self._vehicle = get_vehicle_handle(world, vehicle_id)

        # Install the collision sensor.
        collision_blueprint = world.get_blueprint_library().find(
            'sensor.other.collision')
        self._logger.debug("Spawning a collision sensor.")
        self._collision_sensor = world.spawn_actor(
            collision_blueprint,
            Transform().as_simulator_transform(),
            attach_to=self._vehicle)

        # Register the callback on the collision sensor.
        self._collision_sensor.listen(self.process_collision)
示例#3
0
    def run(self):
        # Read the vehicle id from the vehicle id stream
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug(
            "The CarlaIMUDriverOperator received the vehicle id: {}".format(
                vehicle_id))

        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        if world is None:
            raise ValueError("There was an issue connecting to the simulator.")
        if self._flags.carla_synchronous_mode:
            set_synchronous_mode(world, self._flags.carla_fps)

        self._vehicle = get_vehicle_handle(world, vehicle_id)

        # Install the IMU.
        imu_blueprint = world.get_blueprint_library().find('sensor.other.imu')

        transform = self._imu_setup.get_transform().as_carla_transform()

        self._logger.debug("Spawning an IMU: {}".format(self._imu_setup))

        self._imu = world.spawn_actor(imu_blueprint,
                                      transform,
                                      attach_to=self._vehicle)

        # Register the callback on the IMU.
        self._imu.listen(self.process_imu)
示例#4
0
    def run(self):
        # Read the vehicle id from the vehicle id stream
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug(
            "The LidarDriverOperator received the vehicle id: {}".format(
                vehicle_id))

        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        client, world = get_world(self._flags.simulator_host,
                                  self._flags.simulator_port,
                                  self._flags.simulator_timeout)
        simulator_version = client.get_client_version()
        set_simulation_mode(world, self._flags)

        self._vehicle = get_vehicle_handle(world, vehicle_id)

        # Install the Lidar.
        lidar_blueprint = world.get_blueprint_library().find(
            self._lidar_setup.lidar_type)
        lidar_blueprint.set_attribute('channels',
                                      str(self._lidar_setup.channels))
        if not (simulator_version.startswith('0.8') or re.match(
                '0\.9\.[0-6]', simulator_version) is not None):  # noqa: W605
            # Any simulator version after 0.9.6.
            lidar_blueprint.set_attribute(
                'range', str(self._lidar_setup.get_range_in_meters()))
        else:
            lidar_blueprint.set_attribute('range',
                                          str(self._lidar_setup.range))
        lidar_blueprint.set_attribute('points_per_second',
                                      str(self._lidar_setup.points_per_second))
        lidar_blueprint.set_attribute(
            'rotation_frequency', str(self._lidar_setup.rotation_frequency))
        lidar_blueprint.set_attribute('upper_fov',
                                      str(self._lidar_setup.upper_fov))
        lidar_blueprint.set_attribute('lower_fov',
                                      str(self._lidar_setup.lower_fov))
        if self._flags.simulator_lidar_frequency == -1:
            lidar_blueprint.set_attribute('sensor_tick', '0.0')
        else:
            lidar_blueprint.set_attribute(
                'sensor_tick',
                str(1.0 / self._flags.simulator_lidar_frequency))

        transform = self._lidar_setup.get_transform().as_simulator_transform()

        self._logger.debug("Spawning a lidar: {}".format(self._lidar_setup))
        # NOTE: The LiDAR can be attached on a rigid or a spring arm. If the
        # LiDAR is attached too low, on a rigit, then the point cloud is empty.
        # Otherwise, if the LiDAR is attached on a SpringArm it won't provide
        # 360 degrees point clouds.
        self._lidar = world.spawn_actor(lidar_blueprint,
                                        transform,
                                        attach_to=self._vehicle)

        # Register the callback on the Lidar.
        self._lidar.listen(self.process_point_clouds)
    def run(self):
        # Read the vehicle ID from the vehicle ID stream.
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data

        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        set_simulation_mode(world, self._flags)

        self._vehicle = get_vehicle_handle(world, vehicle_id)
示例#6
0
    def run(self):
        # Read the vehicle id from the vehicle id stream
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug(
            "The IMUDriverOperator received the vehicle id: {}".format(
                vehicle_id))

        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        _, world = get_world(self._flags.simulator_host,
                             self._flags.simulator_port,
                             self._flags.simulator_timeout)
        set_simulation_mode(world, self._flags)

        self._vehicle = get_vehicle_handle(world, vehicle_id)

        # Install the IMU.
        imu_blueprint = world.get_blueprint_library().find('sensor.other.imu')

        # Set noise attributes.
        imu_blueprint.set_attribute('noise_accel_stddev_x',
                                    str(self._flags.accel_noise_stddev_x))
        imu_blueprint.set_attribute('noise_accel_stddev_y',
                                    str(self._flags.accel_noise_stddev_y))
        imu_blueprint.set_attribute('noise_accel_stddev_z',
                                    str(self._flags.accel_noise_stddev_z))
        imu_blueprint.set_attribute('noise_gyro_stddev_x',
                                    str(self._flags.gyro_noise_stddev_x))
        imu_blueprint.set_attribute('noise_gyro_stddev_y',
                                    str(self._flags.gyro_noise_stddev_y))
        imu_blueprint.set_attribute('noise_gyro_stddev_z',
                                    str(self._flags.gyro_noise_stddev_z))

        if self._flags.simulator_imu_frequency == -1:
            imu_blueprint.set_attribute('sensor_tick', '0.0')
        else:
            imu_blueprint.set_attribute(
                'sensor_tick', str(1.0 / self._flags.simulator_imu_frequency))

        transform = self._imu_setup.get_transform().as_simulator_transform()

        self._logger.debug("Spawning an IMU: {}".format(self._imu_setup))

        self._imu = world.spawn_actor(imu_blueprint,
                                      transform,
                                      attach_to=self._vehicle)

        # Register the callback on the IMU.
        self._imu.listen(self.process_imu)
    def run(self):
        # Read the vehicle ID from the vehicle ID stream.
        vehicle_id = self._vehicle_id_stream.read().data
        self._logger.debug(
            "The GNSSDriverOperator received the vehicle id: {}".format(
                vehicle_id))

        # Connect to the world.
        _, world = get_world(self._flags.simulator_host,
                             self._flags.simulator_port,
                             self._flags.simulator_timeout)
        set_simulation_mode(world, self._flags)

        # Retrieve the vehicle and install the GNSS sensor.
        self._vehicle = get_vehicle_handle(world, vehicle_id)
        gnss_blueprint = world.get_blueprint_library().find(
            'sensor.other.gnss')

        # Set the noise and bias parameters.
        gnss_blueprint.set_attribute('noise_alt_stddev',
                                     str(self._flags.gnss_noise_stddev_alt))
        gnss_blueprint.set_attribute('noise_lat_stddev',
                                     str(self._flags.gnss_noise_stddev_lat))
        gnss_blueprint.set_attribute('noise_lon_stddev',
                                     str(self._flags.gnss_noise_stddev_lon))
        gnss_blueprint.set_attribute('noise_alt_bias',
                                     str(self._flags.gnss_bias_alt))
        gnss_blueprint.set_attribute('noise_lat_bias',
                                     str(self._flags.gnss_bias_lat))
        gnss_blueprint.set_attribute('noise_lon_bias',
                                     str(self._flags.gnss_bias_lon))

        if self._flags.simulator_gnss_frequency == -1:
            gnss_blueprint.set_attribute('sensor_tick', '0.0')
        else:
            gnss_blueprint.set_attribute(
                'sensor_tick', str(1.0 / self._flags.simulator_gnss_frequency))
        transform = self._gnss_setup.get_transform().as_simulator_transform()
        self._logger.debug("Spawning a GNSS sensor: {}".format(
            self._gnss_setup))
        self._gnss = world.spawn_actor(gnss_blueprint,
                                       transform,
                                       attach_to=self._vehicle)

        # Register the callback on the GNSS sensor.
        self._gnss.listen(self.process_gnss)
示例#8
0
    def run(self):
        # Read the vehicle id from the vehicle id stream
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        if world is None:
            raise ValueError("There was an issue connecting to the simulator.")

        self._vehicle = get_vehicle_handle(world, vehicle_id)
        collision_bp = world.get_blueprint_library().find(
            'sensor.other.collision')
        self._collision_sensor = world.spawn_actor(collision_bp,
                                                   carla.Transform(),
                                                   attach_to=self._vehicle)
        self._collision_sensor.listen(self.on_collision)
示例#9
0
    def run(self):
        # Read the vehicle id from the vehicle id stream
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug(
            "The CarlaCameraDriverOperator received the vehicle id: {}".format(
                vehicle_id))

        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        if world is None:
            raise ValueError("There was an issue connecting to the simulator.")
        set_simulation_mode(world, self._flags)

        self._vehicle = get_vehicle_handle(world, vehicle_id)

        # Install the camera.
        camera_blueprint = world.get_blueprint_library().find(
            self._camera_setup.camera_type)

        camera_blueprint.set_attribute('image_size_x',
                                       str(self._camera_setup.width))
        camera_blueprint.set_attribute('image_size_y',
                                       str(self._camera_setup.height))
        camera_blueprint.set_attribute('fov', str(self._camera_setup.fov))
        if self._flags.carla_camera_frequency == -1:
            camera_blueprint.set_attribute('sensor_tick', '0.0')
        else:
            camera_blueprint.set_attribute(
                'sensor_tick', str(1.0 / self._flags.carla_camera_frequency))

        transform = self._camera_setup.get_transform().as_carla_transform()

        self._logger.debug("Spawning a camera: {}".format(self._camera_setup))

        self._camera = world.spawn_actor(camera_blueprint,
                                         transform,
                                         attach_to=self._vehicle)

        # Register the callback on the camera.
        self._camera.listen(self.process_images)
示例#10
0
    def run(self):
        # Read the vehicle ID from the vehicle ID stream.
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug("@{}: Received Vehicle ID: {}".format(
            vehicle_id_msg.timestamp, vehicle_id))

        # Connect to the world.
        _, self._world = get_world(self._flags.simulator_host,
                                   self._flags.simulator_port,
                                   self._flags.simulator_timeout)
        self._map = self._world.get_map()

        # Retrieve all the traffic lights from the world.
        while len(self._world.get_actors()) == 0:
            time.sleep(1)
        for _actor in self._world.get_actors():
            if 'traffic_light' in _actor.type_id:
                center, waypoints = self.get_traffic_light_waypoints(_actor)
                self._traffic_lights.append((_actor, center, waypoints))

        # Retrieve the vehicle.
        self._vehicle = get_vehicle_handle(self._world, vehicle_id)
示例#11
0
    def run(self):
        # Read the vehicle ID from the vehicle ID stream.
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug("@[{}]: Received Vehicle ID: {}".format(
            vehicle_id_msg.timestamp, vehicle_id))

        # Connect to the world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        if world is None:
            raise ValueError("There was an issue connecting to the simulator.")
        self._world, self._map = world, world.get_map()

        # Retrieve all the traffic lights from the world.
        while len(world.get_actors()) == 0:
            time.sleep(1)
        for _actor in world.get_actors():
            if 'traffic_light' in _actor.type_id:
                center, waypoints = self.get_traffic_light_waypoints(_actor)
                self._traffic_lights.append((_actor, center, waypoints))

        # Retrieve the vehicle.
        self._vehicle = get_vehicle_handle(world, vehicle_id)
    def run(self):
        # Read the vehicle id from the vehicle id stream
        vehicle_id_msg = self._vehicle_id_stream.read()
        vehicle_id = vehicle_id_msg.data
        self._logger.debug(
            "The CarlaLidarDriverOperator received the vehicle id: {}".format(
                vehicle_id))

        # Connect to the world. We connect here instead of in the constructor
        # to ensure we're connected to the latest world.
        _, world = get_world(self._flags.carla_host, self._flags.carla_port,
                             self._flags.carla_timeout)
        if world is None:
            raise ValueError("There was an issue connecting to the simulator.")
        set_simulation_mode(world, self._flags)

        self._vehicle = get_vehicle_handle(world, vehicle_id)

        # Install the Lidar.
        lidar_blueprint = world.get_blueprint_library().find(
            self._lidar_setup.lidar_type)
        lidar_blueprint.set_attribute('channels',
                                      str(self._lidar_setup.channels))
        if (self._flags.carla_version == '0.9.7'
                or self._flags.carla_version == '0.9.8'):
            lidar_blueprint.set_attribute(
                'range', str(self._lidar_setup.get_range_in_meters()))
        else:
            lidar_blueprint.set_attribute('range',
                                          str(self._lidar_setup.range))
        lidar_blueprint.set_attribute('points_per_second',
                                      str(self._lidar_setup.points_per_second))
        lidar_blueprint.set_attribute(
            'rotation_frequency', str(self._lidar_setup.rotation_frequency))
        lidar_blueprint.set_attribute('upper_fov',
                                      str(self._lidar_setup.upper_fov))
        lidar_blueprint.set_attribute('lower_fov',
                                      str(self._lidar_setup.lower_fov))
        if self._flags.carla_lidar_frequency == -1:
            lidar_blueprint.set_attribute('sensor_tick', '0.0')
        else:
            lidar_blueprint.set_attribute(
                'sensor_tick', str(1.0 / self._flags.carla_lidar_frequency))

        transform = self._lidar_setup.get_transform().as_carla_transform()

        self._logger.debug("Spawning a lidar: {}".format(self._lidar_setup))

        if self._flags.carla_version == '0.9.8':
            # Must attach lidar with a SpringArm, otherwise the point cloud is
            # empty.
            self._lidar = world.spawn_actor(
                lidar_blueprint,
                transform,
                attach_to=self._vehicle,
                attachment_type=carla.AttachmentType.SpringArm)
        else:
            self._lidar = world.spawn_actor(lidar_blueprint,
                                            transform,
                                            attach_to=self._vehicle)

        # Register the callback on the Lidar.
        self._lidar.listen(self.process_point_clouds)