由于飞控与地面站之间的通信链路带宽有限,一般是57600波特率的串口,因此我们不可能一直发送信息,必然是满足某种触发条件的时候发送信息,比如:1、状态变化时发送一次信息(如模式切换、触发失控保护瞬间);2、定时发送,每隔固定时间间隔发送一次。下面,我们通过如下例子讲述如何发送自定义信息到地面站:

1 目标

飞控每隔1秒钟发送一次当前高度到地面站。

2 实现方法

2.1 使用Vscode软件,在任务5-1的基础上,在ArduCopter文件夹中找到Copter.cpp文件中,在one_hz_loop()函数的第一行添加如下代码:
gcs().send_text(MAV_SEVERITY_CRITICAL,
“Current altitude: %.1fm”,
copter.flightmode->get_alt_above_ground_cm() / 100.0f);
2.2 依次点击,进入目录,清理工程,配置编译目标为CUAVv5Nano,编译多旋翼固件,完成修改后的编译。

3 仿真查看结果

3.1 使用任务5-1中建立APM飞控软件仿真的方法,进行MP仿真。
3.2 在MP的HUD飞行监控面板中可以看到如图结果:
image.png
图中Current altitude:52.2m,就是由飞控发送到地面站的。
3.3 在MP的地面站的消息对话框中,也同样可以看到每秒一次收到一个高度的消息。如下图:
image.png