近期项目有个需求要,使用地面控制站控制无人机外挂设备,在飞行过程中实现一些具体功能。外挂设备只有串口可用,本来想使用单独一套数传控制,但又觉得好蛋疼,明明GCS和飞控有通信链路。能不能直接使用这个链路呢,PX4和QGC官网文档过了一遍,好像没有,网上也很少有方法直接实现或者说没有完全实现。由于篇幅太长我将过程和源码分成相对独立的3部分,一步一步实现整个过程,欢迎围观。
设计构想
目的在QGC和PX4设备上串口上开一个透明的通道,实现QGC直接控制PX4串口外挂设备
QGC <--mavlink(数传)--> PX4(mavlink守护进程) <--uORB--> raw_serial_rtx <--UART--> device
内容提要
传送门:(简书)
1. PX4串口读写
2.自定义Mavlink消息实现QGC和PX4 mavlink守护进程通信
3.自定义uORB消息实现,实现PX4模块间数据传递
4.PX4 & QGC在任务中加入自定义MavLink命令并在任务模式下自动执行
效果展示
- QGC 发送接收消息
- 串口收发
- 串口收发短接,USB连接QGC,收发来回30+ms
- 串口收发短接,sik数传@57600连接QGC,收发来回270+ms