Skip to content

Perception#

This page describes the interface of the Perception component. See the Perception component design for the concepts and the reference implementation for the data flow inside the component.

Perception takes sensor data, the maps, the kinematic state of the vehicle, the route, and external traffic signals. It has four parts: obstacle segmentation, occupancy grid map, object recognition, and traffic light recognition. It sends the obstacle point cloud, the occupancy grid, the objects, and the traffic signals to Planning and Control. The labels also name the message types.SensingLiDARPointCloud2CamerasImageRadarsDetectedObjectsMapLanelet2LaneletMapBinPoint cloud mapLocalizationKinematic stateOdometryPlanningRouteLaneletRouteV2XTraffic signalsTrafficLightGroupArrayPerceptionObstacle segmentationOccupancy grid mapObject recognitionDetectionTrackingPredictionTraffic light recognitionCameras and V2XObstacle point cloudPointCloud2Occupancy gridOccupancyGridObjectsPredictedObjectsTrackedObjectsTraffic signalsTrafficLightGroupArrayPlanningand Control
The inputs, the main parts, and the outputs of the Perception component.

Inputs#

From Sensing#

NameTopicTypeDescription
Point cloud/sensing/lidar/concatenated/pointcloudsensor_msgs/msg/PointCloud2The concatenated point cloud of all LiDARs, after preprocessing.
Camera image/sensing/camera/camera*/image_rect_colorsensor_msgs/msg/ImageCamera images after lens distortion correction. The camera-based object detectors use them.
Camera image/sensing/camera/camera*/image_rawsensor_msgs/msg/ImageCamera images without lens distortion correction. Traffic light recognition uses them.
Radar objects/sensing/radar/detected_objectsautoware_perception_msgs/msg/DetectedObjectsThe objects of all radars in one topic. The sensor kit merges the objects of each radar into it. See Sensing. Only the object recognition modes with radar use them.

From Map#

NameTopic or serviceTypeDescription
Vector map/map/vector_mapautoware_map_msgs/msg/LaneletMapBinThe Lanelet2 map. Object filters, prediction, and traffic light recognition use it.
Point cloud map/map/get_differential_pointcloud_map (service) or /map/pointcloud_mapautoware_map_msgs/srv/GetDifferentialPointCloudMapThe map filter removes the points that are in the point cloud map.

Use the service for the point cloud map when you can. With the service, the size of the map file does not limit the processing.

From Localization#

NameTopicTypeDescription
Vehicle odometry/localization/kinematic_statenav_msgs/msg/OdometryThe pose and the velocity of the vehicle.

From Planning#

NameTopicTypeDescription
Route/planning/mission_planning/routeautoware_planning_msgs/msg/LaneletRouteTraffic light recognition uses the route to select the traffic lights that matter to the vehicle.

From outside Autoware#

NameTopicTypeDescription
External traffic signals/perception/traffic_light_recognition/external/traffic_signalsautoware_perception_msgs/msg/TrafficLightGroupArrayTraffic signals from an external system, for example V2X. The traffic light arbiter merges them with the recognized signals.

Outputs#

See the Perception component design for the meaning of each output.

NameTopicTypeDescription
Dynamic objects/perception/object_recognition/objectsautoware_perception_msgs/msg/PredictedObjectsObjects that were not in the map when it was made, with their class, shape, and predicted paths.
Tracked objects/perception/object_recognition/tracking/objectsautoware_perception_msgs/msg/TrackedObjectsThe same objects before prediction. The diffusion planner uses them.
Obstacles/perception/obstacle_segmentation/pointcloudsensor_msgs/msg/PointCloud2The points that are not ground. They include dynamic objects and static obstacles that the vehicle must avoid or stop in front of.
Occupancy grid map/perception/occupancy_grid_map/mapnav_msgs/msg/OccupancyGridThe probability that each cell holds an obstacle. Cells that the sensors cannot see are unknown, which shows the blind spots.
Traffic signals/perception/traffic_light_recognition/traffic_signalsautoware_perception_msgs/msg/TrafficLightGroupArrayThe state of each traffic light group, for example the color (green, amber, red) and the arrows (left, right, straight).

Predicted objects message#

autoware_perception_msgs/msg/PredictedObjects:

  • std_msgs/Header header
  • PredictedObject[] objects
    • unique_identifier_msgs/UUID object_id
    • float32 existence_probability
    • ObjectClassification[] classification
      • uint8 label: UNKNOWN, CAR, TRUCK, BUS, TRAILER, MOTORCYCLE, BICYCLE, PEDESTRIAN, ANIMAL, HAZARD, OVER_DRIVABLE, or UNDER_DRIVABLE
      • float32 probability
    • PredictedObjectKinematics kinematics
      • geometry_msgs/PoseWithCovariance initial_pose_with_covariance
      • geometry_msgs/TwistWithCovariance initial_twist_with_covariance
      • geometry_msgs/AccelWithCovariance initial_acceleration_with_covariance
      • PredictedPath[] predicted_paths
        • geometry_msgs/Pose[] path
        • builtin_interfaces/Duration time_step
        • float32 confidence
    • Shape shape
      • uint8 type: BOUNDING_BOX, CYLINDER, or POLYGON
      • geometry_msgs/Polygon footprint
      • geometry_msgs/Vector3 dimensions

Traffic signals message#

autoware_perception_msgs/msg/TrafficLightGroupArray:

  • builtin_interfaces/Time stamp
  • TrafficLightGroup[] traffic_light_groups
    • int64 traffic_light_group_id
    • TrafficLightElement[] elements
      • uint8 color: UNKNOWN, RED, AMBER, GREEN, or WHITE
      • uint8 shape: UNKNOWN, CIRCLE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, UP_LEFT_ARROW, UP_RIGHT_ARROW, DOWN_ARROW, DOWN_LEFT_ARROW, DOWN_RIGHT_ARROW, or CROSS
      • uint8 status: UNKNOWN, SOLID_OFF, SOLID_ON, or FLASHING
      • float32 confidence
    • PredictedTrafficLightState[] predictions