3.2 KiB
3.2 KiB
Architecture Overview
Operation Modes
1. Standalone (Any Platform)
Single process, no ROS 2 required:
python standalone_simulation.py --pattern circular
┌────────────────────────────────────────┐
│ standalone_simulation.py │
│ ┌──────────────────────────────────┐ │
│ │ PyBullet Physics + Camera │ │
│ │ Built-in Controller │ │
│ │ Rover Movement │ │
│ └──────────────────────────────────┘ │
└────────────────────────────────────────┘
2. Gazebo + ROS 2 (2 Terminals)
Terminal 1:
ros2 launch gazebo/launch/drone_landing.launch.py
Terminal 2:
python run_gazebo.py --pattern circular
Terminal 1 Terminal 2
┌───────────────────┐ ┌───────────────────┐
│ Gazebo + Bridge │◄──────►│ run_gazebo.py │
│ (Physics) │ ROS │ + Controllers │
└───────────────────┘ └───────────────────┘
3. ArduPilot SITL (2 Terminals)
Terminal 1:
ros2 launch ardupilot_gz_bringup iris_runway.launch.py
Terminal 2:
mavproxy.py --console --map --master=:14550
┌─────────────────────────────────────────────┐
│ Single Launch Command │
│ (Starts SITL + Gazebo + RViz) │
├─────────────────────────────────────────────┤
│ ArduPilot SITL ◄──► Gazebo ◄──► ROS 2 │
│ ▲ │
│ │ /ap/* topics │
│ ▼ │
│ MAVProxy (GCS) │
└─────────────────────────────────────────────┘
Key Components
| Component | Description |
|---|---|
drone_controller.py |
Your landing algorithm |
gazebo_bridge.py |
Gazebo ↔ ROS bridge |
mavlink_bridge.py |
MAVLink commands |
camera_viewer.py |
Camera display |
ROS 2 Topics
| Topic | Direction | Description |
|---|---|---|
/drone/telemetry |
← | Sensor data (JSON) |
/cmd_vel |
→ | Velocity commands |
/drone/camera |
← | Camera images |
/rover/telemetry |
← | Landing pad position |
ArduPilot Topics
| Topic | Type |
|---|---|
/ap/pose/filtered |
Position |
/ap/twist/filtered |
Velocity |
/ap/imu/filtered |
IMU |
/ap/battery |
Battery |