Robot¶
The robot autonomy stack is the core of AirStack, providing layered autonomy from hardware interface through perception, planning, control, and high-level behavior.
Directory Structure¶
The robot autonomy stack is organized under robot/:
robot/
├── docker/ # Robot containerization
│ ├── docker-compose.yaml # Main launch configuration (see Launch Structure)
│ ├── robot-base-docker-compose.yaml # Shared base service
│ ├── Dockerfile.robot # Image definition
│ ├── .bashrc # Shell configuration (mounted into containers)
│ ├── robot_name_map/ # Robot identity mapping configs
│ │ └── default_robot_name_map.yaml
│ └── zed/ # ZED camera Docker files
│ ├── Dockerfile.zed-l4t
│ └── ws/
├── ros_ws/ # ROS 2 workspace
│ └── src/ # Source packages (layered architecture)
│ ├── autonomy_bringup/ # Top-level launch orchestration
│ ├── interface/ # Hardware interface & safety
│ │ ├── interface_bringup/
│ │ ├── mavros_interface/
│ │ └── ...
│ ├── sensors/ # Sensor integration
│ │ ├── sensors_bringup/
│ │ └── ...
│ ├── perception/ # State estimation & perception
│ │ ├── perception_bringup/
│ │ └── ...
│ ├── local/ # Local planning, control, world models
│ │ ├── local_bringup/
│ │ ├── planners/
│ │ ├── c_controls/
│ │ └── world_models/
│ ├── global/ # Global planning & mapping
│ │ ├── global_bringup/
│ │ ├── planners/
│ │ └── world_models/
│ └── behavior/ # High-level decision making
│ ├── behavior_bringup/
│ └── ...
└── bags/ # ROS 2 bag recordings
Launch Structure¶
The robot autonomy stack is launched via Docker Compose. The configuration is in robot/docker/docker-compose.yaml.
Multi-Profile Architecture¶
- Base service:
robot-base-docker-compose.yamldefines shared configuration for all platforms - Platform profiles: Different services for desktop/Jetson/VOXL/testing (see Docker Services)
- Layered bringup: ROS 2 launch files organized hierarchically
Launch Command Hierarchy¶
The Docker command: attribute launches the top-level ROS 2 launch file, which cascades through autonomy layers:
robot.launch.xml # Entry point (robot_bringup)
└── autonomy.launch.xml # Autonomy orchestration (autonomy_bringup)
├── interface.launch.xml # Hardware interface
├── sensors.launch.xml # Sensor drivers
├── perception.launch.xml # State estimation
├── local.launch.xml # Local planning & control
├── global.launch.xml # Global planning & mapping
└── behavior.launch.xml # Mission execution
Each *_bringup package contains launch files that orchestrate modules in that layer.
Quick Reference¶
# Start robot container (desktop development)
airstack up robot-desktop
# Start without auto-launch (for development)
AUTOLAUNCH=false airstack up robot-desktop
# Multiple robots
NUM_ROBOTS=3 airstack up robot-desktop
# Different platforms (profiles)
airstack up --profile l4t # NVIDIA Jetson
airstack up --profile voxl # ModalAI VOXL
Learn more:
- Docker Services - Detailed Docker configuration
- Autonomy Modules - Layer-by-layer breakdown
- System Architecture - Data flow diagrams
Common Topics¶
Standard ROS 2 topics used across the autonomy stack:
| Topic | Type | Description |
|---|---|---|
/$ROBOT_NAME/odometry |
nav_msgs/Odometry | Best estimate of robot state |
/$ROBOT_NAME/global_plan |
nav_msgs/Path | Target global trajectory |
/$ROBOT_NAME/trajectory_controller/trajectory_override |
airstack_msgs/TrajectoryOverride | Direct trajectory commands |
/$ROBOT_NAME/trajectory_controller/look_ahead |
geometry_msgs/PointStamped | Look-ahead point for planning |
See also:
- System Architecture - Complete data flow diagrams
- Integration Checklist - Full topic reference
Next Steps¶
- Autonomy Modules - Understand the layered architecture
- System Architecture - See how components interact
- Integration Checklist - Add new modules
- Docker Services - Configure deployment platforms