2.7 KiB
2.7 KiB
Architecture Overview
Operation Modes
1. Standalone (Any Platform, 1 Terminal)
python standalone_simulation.py --pattern circular
┌────────────────────────────────────────┐
│ standalone_simulation.py │
│ PyBullet Physics + Camera + Controllers│
└────────────────────────────────────────┘
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 + Gazebo (2 Terminals)
Terminal 1:
gz sim -v4 -r ~/ardupilot_gazebo/worlds/iris_runway.sdf
Terminal 2:
sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --console
Terminal 1 Terminal 2
┌───────────────────┐ ┌───────────────────┐
│ Gazebo + │◄──────►│ ArduPilot SITL │
│ ArduPilot Plugin │ JSON │ + MAVProxy │
└───────────────────┘ UDP └───────────────────┘
Key features:
- Full ArduPilot flight controller
- EKF, stabilization, failsafes
- MAVLink protocol
- Compatible with QGroundControl, Mission Planner
Key Components
| Component | Description |
|---|---|
standalone_simulation.py |
All-in-one PyBullet simulation |
run_gazebo.py |
Gazebo bridge + controllers |
drone_controller.py |
Your landing algorithm |
camera_viewer.py |
Camera display window |
ROS 2 Topics (Gazebo Mode)
| Topic | Direction | Description |
|---|---|---|
/drone/telemetry |
← | Sensor data (JSON) |
/cmd_vel |
→ | Velocity commands |
/drone/camera |
← | Camera images |
Sensors
| Sensor | Data |
|---|---|
| IMU | orientation, angular_velocity |
| Altimeter | altitude, vertical_velocity |
| Velocity | x, y, z (m/s) |
| Camera | 320x240 image |
| Landing Pad | relative_x, relative_y (when visible) |