Skip to content

Perception Packages

The perception module is responsible for state estimation and environment understanding. It processes sensor data to provide the robot's best estimate of its pose, velocity, and surrounding environment.

Overview

Perception forms the foundation of the autonomy stack by:

  • State Estimation: Fusing sensor data (IMU, cameras, GPS) to estimate robot position, orientation, and velocity
  • Sensor Processing: Converting raw sensor data into usable formats for downstream modules
  • Environment Understanding: Detecting and tracking objects, obstacles, and features in the environment

Launch

Launch files are located under robot/ros_ws/src/perception/perception_bringup/launch/.

The main launch command is:

ros2 launch perception_bringup perception.launch.xml

Key Topics

Outputs

  • /{robot_name}/odometry - Best estimate of robot state (position, orientation, velocities)
  • /{robot_name}/pose - Current robot pose
  • /{robot_name}/imu/data - Processed IMU data

Inputs

  • Raw sensor data from sensors layer (cameras, IMU, GPS, depth sensors)

Modules

State estimation and related perception packages live under robot/ros_ws/src/perception/. Only external motion capture is documented below today; other approaches (onboard sensor fusion, visual-inertial odometry, etc.) will be added here in future releases.

External pose (motion capture)

  • NatNet (OptiTrack) — Receives rigid-body poses from an external Motive PC over NatNet UDP and publishes /{robot_name}/perception/optitrack/... topics. Optional MAVROS bridge for PX4 vision pose. Enabled with LAUNCH_NATNET=true in .env (off by default).

Configuration

Perception parameters are configured in perception_bringup/config/ directory. Common parameters include:

  • Sensor topics to subscribe to
  • Fusion algorithm parameters
  • Output frame IDs
  • Publishing rates

See Also