# Sensing

This page describes the interface of the Sensing component. See the [Sensing component design](<../../../components/sensing/index.md>) for the concepts.

The Sensing component takes the data of the sensor drivers and preprocesses it for Perception and Localization. The sensor kit of a vehicle launches the drivers and the preprocessing. The topic names below come from [`sample_sensor_kit_launch`](<https://github.com/autowarefoundation/autoware_launch/tree/main/sensor_kit/sample_sensor_kit_launch>) and the launch files of [`autoware_sensing_launch`](<https://github.com/autowarefoundation/autoware_launch/tree/main/autoware_universe_launch/autoware_sensing_launch>). Another sensor kit can use other names for the driver topics.

Each kind of sensor data goes through its own preprocessing before Perception and Localization use it.

## Inputs

| Name | Topic | Type | Description |
| --- | --- | --- | --- |
| Camera image | `/sensing/camera/<camera name>/image_raw` | [sensor\_msgs/msg/Image](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Image.msg>) | Image data from a camera driver. |
| Radar tracks | `/sensing/radar/<radar name>/objects_raw` | [radar\_msgs/msg/RadarTracks](<https://github.com/ros-perception/radar_msgs/blob/ros2/msg/RadarTracks.msg>) | Tracks from a radar driver. |
| Radar scan | Not defined | [radar\_msgs/msg/RadarScan](<https://github.com/ros-perception/radar_msgs/blob/ros2/msg/RadarScan.msg>) | Scan from a radar driver. |
| LiDAR point cloud | `/sensing/lidar/<lidar name>/pointcloud_raw_ex` | [sensor\_msgs/msg/PointCloud2](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/PointCloud2.msg>) | Point cloud from a LiDAR driver. |
| GNSS position | `/sensing/gnss/<receiver>/nav_sat_fix` | [sensor\_msgs/msg/NavSatFix](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/NavSatFix.msg>) | Position from a GNSS driver. |
| GNSS-INS orientation | `/autoware_orientation` | [autoware\_sensing\_msgs/msg/GnssInsOrientationStamped](<https://github.com/autowarefoundation/autoware_msgs/blob/main/autoware_sensing_msgs/msg/GnssInsOrientationStamped.msg>) | Orientation from a GNSS-INS driver. |
| IMU data | `/sensing/imu/<imu name>/imu_raw` | [sensor\_msgs/msg/Imu](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Imu.msg>) | Angular velocity and linear acceleration from an IMU driver. |
| Vehicle velocity | `/vehicle/status/velocity_status` | [autoware\_vehicle\_msgs/msg/VelocityReport](<https://github.com/autowarefoundation/autoware_msgs/blob/main/autoware_vehicle_msgs/msg/VelocityReport.msg>) | Velocity from the [vehicle interface](<../vehicle-interface/index.md>). |
| Ultrasonics | Not defined | [sensor\_msgs/msg/Range](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Range.msg>) | Distance data from an ultrasonic sensor driver. |
| GNSS velocity | Not defined | [geometry\_msgs/msg/TwistWithCovarianceStamped](<https://github.com/ros2/common_interfaces/blob/rolling/geometry_msgs/msg/TwistWithCovarianceStamped.msg>) | Velocity from a GNSS driver. |
| GNSS acceleration | Not defined | [geometry\_msgs/msg/AccelWithCovarianceStamped](<https://github.com/ros2/common_interfaces/blob/rolling/geometry_msgs/msg/AccelWithCovarianceStamped.msg>) | Acceleration from a GNSS driver. |

## Outputs

| Name | Topic | Type | Description |
| --- | --- | --- | --- |
| Camera image | `/sensing/camera/<camera name>/image_rect_color` | [sensor\_msgs/msg/Image](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Image.msg>) | Image after lens distortion correction. Perception uses it. |
| Radar objects | `/sensing/radar/detected_objects` | [autoware\_perception\_msgs/msg/DetectedObjects](<https://github.com/autowarefoundation/autoware_msgs/blob/main/autoware_perception_msgs/msg/DetectedObjects.msg>) | The objects of all radars in one topic. See the radar notes below the table. Perception uses it in the object recognition modes with radar. |
| LiDAR point cloud | `/sensing/lidar/<lidar name>/pointcloud_before_sync` | [sensor\_msgs/msg/PointCloud2](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/PointCloud2.msg>) | The point cloud of one LiDAR after cropping, distortion correction, and the ring outlier filter. |
| Concatenated point cloud | `/sensing/lidar/concatenated/pointcloud` | [sensor\_msgs/msg/PointCloud2](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/PointCloud2.msg>) | The point clouds of all LiDARs, synchronized and concatenated. Perception and Localization use it. |
| GNSS pose | `/sensing/gnss/pose_with_covariance` | [geometry\_msgs/msg/PoseWithCovarianceStamped](<https://github.com/ros2/common_interfaces/blob/rolling/geometry_msgs/msg/PoseWithCovarianceStamped.msg>) | The pose of the vehicle from GNSS, in the `map` frame. `autoware_gnss_poser` makes it from the GNSS position and the GNSS-INS orientation. Localization uses it. |
| IMU data | `/sensing/imu/imu_data` | [sensor\_msgs/msg/Imu](<https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Imu.msg>) | IMU data after `autoware_imu_corrector`. Localization and the distortion correction of the point cloud use it. |
| Vehicle twist | `/sensing/vehicle_velocity_converter/twist_with_covariance` | [geometry\_msgs/msg/TwistWithCovarianceStamped](<https://github.com/ros2/common_interfaces/blob/rolling/geometry_msgs/msg/TwistWithCovarianceStamped.msg>) | The vehicle velocity as a twist with covariance, from `autoware_vehicle_velocity_converter`. Localization and the distortion correction of the point cloud use it. |

Radar topics: No sensor kit in `autoware_launch` 0.53.0 launches a radar. The [`radar_tracks_postprocessor.launch.xml`](<https://github.com/autowarefoundation/autoware_launch/blob/0.53.0/autoware_universe_launch/autoware_sensing_launch/launch/radar_tracks_postprocessor.launch.xml>) launch file runs the noise filter and `autoware_radar_tracks_msgs_converter`. Its topic names are relative. If a sensor kit includes it in the namespace `/sensing/radar/<radar name>`, it reads `/sensing/radar/<radar name>/objects_raw` and publishes `/sensing/radar/<radar name>/detected_objects`. The Perception launch files read one topic, `/sensing/radar/detected_objects`, by default (the `input/radar` argument of [`object_recognition_lidar_radar.launch.xml`](<https://github.com/autowarefoundation/autoware_launch/blob/0.53.0/autoware_universe_launch/autoware_perception_launch/launch/object_recognition/object_recognition_lidar_radar.launch.xml>), for example). So a sensor kit must merge the objects of all radars into this topic. For example, the [`aip_xx1_gen2_launch`](<https://github.com/tier4/aip_launcher/blob/f2401f29e1afdf7d504572e65a0e6790a1694a87/aip_xx1_gen2_launch/launch/radar.launch.xml>) sensor kit of TIER IV merges its radars with `autoware_simple_object_merger`, and it relays the topic of a single radar with `topic_tools relay`.

Inputs marked "Not defined": Autoware 2.0.0 defines no Sensing topic for these inputs. The `autoware_component_interface_specs` package does not define them, no launch file in `autoware_launch` uses them, and the Sensing component has no outputs for them. A search of the Autoware 2.0.0 workspace found only these related topics:

- Ultrasonics: no topic, no node, and no launch file.
- Radar scan: the Nebula drivers of the Continental ARS548 and SRR520 radars publish `radar_msgs/msg/RadarScan` topics (for example `scan_raw`) in the namespace of the radar. No launch file in `autoware_launch` uses them.
- GNSS velocity: the u-blox driver of `sample_sensor_kit_launch` publishes `/sensing/gnss/ublox/fix_velocity` and `/sensing/gnss/ublox/navpvt`. The Sensing component does not process them. [Eagleye](<https://github.com/autowarefoundation/autoware_launch/blob/0.53.0/autoware_universe_launch/autoware_localization_config/config/eagleye_config.param.yaml>), an optional localization method, reads the GNSS velocity directly from `/sensing/gnss/ublox/navpvt`.
- GNSS acceleration: no topic, no node, and no launch file.
