MAVLink Module Technicals
Overview
The DroneEngage MAVLink module (de_mavlink) provides the interface between the DroneEngage system and flight control boards (FCB) using the MAVLink protocol. It handles flight controller communication, telemetry processing, and command execution for autonomous drone operations.
Architecture
The MAVLink module is designed to support multiple flight controller types and communication methods, providing a unified interface for drone control and monitoring.
Core Components
CFCBMain - Main flight controller board interface and connection management
MAVLink SDK - Low-level MAVLink protocol implementation
Configuration System - Dynamic parameter management
Message Processing - Telemetry parsing and command handling
Rate Limiting - Message rate optimization and control
Connection Types
The module supports multiple connection methods:
Serial: Direct serial communication with flight controller
UDP: Network-based UDP communication
TCP: Reliable TCP-based communication
Key Features
Flight Controller Integration
Multi-Protocol Support: Compatible with ArduPilot and PX4
Dynamic Connection: Runtime connection type selection
Auto-Reconnection: Automatic recovery from connection losses
Telemetry Processing: Real-time data parsing and distribution
Configuration Management
JSON-based Configuration: Flexible parameter management
Dynamic Updates: Runtime configuration changes
File Monitoring: Automatic reload on file changes
Backup System: Configuration history and recovery
Rate Limiting
Message Optimization: Intelligent message rate control
Bandwidth Management: Efficient use of available bandwidth
Priority Handling: Critical message prioritization
Adaptive Rates: Dynamic rate adjustment based on conditions
RC Control
Channel Mapping: Flexible RC channel configuration
Smart Channels: Advanced channel processing
Guided Mode: Enhanced control in guided flight modes
Safety Features: Failsafe and safety mode integration
Communication Flow
Connection Setup: Establish connection with flight controller
Configuration Load: Read and apply configuration parameters
MAVLink Exchange: Begin bidirectional MAVLink communication
Telemetry Processing: Parse and distribute flight data
Command Execution: Process and send commands to FCB
Integration Points
The MAVLink module integrates with:
Communication Module: Cloud connectivity and remote control
DataBus: Inter-module telemetry and command sharing
Plugin System: Custom flight modes and behaviors
Mission Planning: Autonomous flight execution
Configuration Structure
Main Configuration
{
"fcb_connection_uri": {
"type": "serial|udp|tcp",
"ip": "connection_ip",
"port": connection_port,
"baudrate": serial_baudrate
},
"mavlink_ids": {
"de_mavlink_gcs_id": 255,
"only_allow_ardupilot_compid": 0,
"only_allow_ardupilot_sysid": 0
},
"message_timeouts": {
"message_id": [timeout_config]
}
}
RC Configuration
{
"rc_channels": {
"rc_channel_enabled": [flags],
"rc_channel_reverse": [flags],
"rc_channel_limits_max": [values],
"rc_channel_limits_min": [values]
},
"rc_smart_channels": {
"active": true,
"rc_channel_enabled": [flags],
"rc_channel_limits_max": [values],
"rc_channel_limits_min": [values]
}
}
Performance Optimization
Message Filtering: Selective message processing
Rate Limiting: Controlled message transmission rates
Buffer Management: Efficient data buffering
Thread Safety: Concurrent processing capabilities
Safety and Reliability
Connection Monitoring: Continuous health checks
Failsafe Mechanisms: Automatic recovery procedures
Error Handling: Comprehensive error management
Logging System: Detailed operation logging
This module provides the critical interface between DroneEngage software and flight controller hardware, enabling reliable autonomous drone operations with comprehensive telemetry and control capabilities.