2.8 KiB
2.8 KiB
Architecture
System architecture for GPS-denied UAV/UGV navigation.
Overview
The system uses vision-based navigation with GPS reserved only for geofencing.
Vision Sensors (Cameras)
|
v
Visual Odometry & Optical Flow
|
v
Position Estimator (EKF)
|
v
ArduPilot Flight Controller
|
v
Motor Control
Components
Perception
- Forward Camera: Visual odometry, feature tracking
- Downward Camera: Optical flow, ground plane detection
- IMU: Angular velocity, acceleration
Localization
- Visual Odometry: Estimates motion from camera images
- Optical Flow: Velocity estimation from downward camera
- EKF Fusion: Combines all sensor inputs into position estimate
Navigation
- Waypoint Navigation: Relative coordinates (meters from origin)
- Path Planning: Collision-free paths using local map
- Position Hold: Maintain position using vision
Control
- ArduPilot: Flight controller firmware
- MAVROS: ROS interface to ArduPilot
- Velocity/Position Control: Low-level motor commands
Safety
- Geofencing: GPS-based boundary checking (safety only)
- Altitude Limits: Maximum flight ceiling
- Failsafe: RTL on signal loss or boundary breach
Coordinate Frames
| Frame | Description |
|---|---|
| body | Attached to vehicle, X forward, Y right, Z down |
| odom | Origin at takeoff, accumulates drift |
| map | Fixed world frame (may be corrected) |
All navigation commands use local coordinates relative to takeoff point.
Data Flow
Camera Images
|
v
Feature Detection (ORB/SIFT)
|
v
Feature Matching (frame to frame)
|
v
Motion Estimation (Essential Matrix)
|
v
EKF Update (fuse with IMU)
|
v
Position Estimate (x, y, z, roll, pitch, yaw)
|
v
ArduPilot (external position input)
|
v
PID Control -> Motor PWM
ArduPilot Integration
ArduPilot receives external position via MAVLink:
- Visual odometry →
VISION_POSITION_ESTIMATE - EKF uses external source (EK3_SRC1_POSXY=6)
- GPS disabled for navigation (GPS_TYPE=0 or EK3_SRC1_POSXY!=1)
Geofencing
GPS is only used for safety boundaries:
- GPS position → lat/lon
- Check against polygon/circle boundary
- If outside: trigger RTL or LAND
Navigation continues using vision regardless of GPS status.
ROS 2 Topics
| Topic | Type | Description |
|---|---|---|
| /uav/camera/forward/image_raw | sensor_msgs/Image | Forward camera |
| /uav/camera/downward/image_raw | sensor_msgs/Image | Downward camera |
| /mavros/local_position/pose | geometry_msgs/PoseStamped | Current position |
| /mavros/setpoint_position/local | geometry_msgs/PoseStamped | Target position |
| /mavros/imu/data | sensor_msgs/Imu | IMU data |