apm 飞行模式_APM学习笔记——Ardupilot源代码添加新的飞行模式

本文介绍了如何在Ardupilot中添加新的飞行模式,涉及修改defines.h、创建control_newflightmode.cpp、更新Copter.h、flight_mode.cpp等内容,并通过MP参数设置和地面站消息验证切换成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先贴一张官网的Copter架构的高级视图:

6dfa6e12dde8cf9997785e711f665101.png

1、要改的文件都在ArduCopter文件夹里,如下:

defines.h Copter.hflight_mode.cpp新建一个飞行模式的cpp文件,这里我取名control_newflightmode.cpp

下面每个部分详细说明一下。

2、defines.h 需要修改的内容

在control_mode_t枚举的底部,添加我们定义的新的飞行模式名字:

fa415d217dcf2809fc7b2da2e6a7a429.png

3、新建control_newflightmode.cpp文件,内容如下:

#include "Copter.h"uint64_t last_time=0;//初始化函数bool Copter::new_flightmode_init(bool ignore_checks){ return true;}​//run函数,可以在地面站mp上查看消息,方便我们看模式是否切过去,1秒一次void Copter::new_flightmode_run(){ // 计算更新时间/采样间隔 uint64_t now_time = AP_HAL::millis(); if((now_time-last_time)>1000) { gcs_send_text(MAV_SEVERITY_INFO,"hello_newflight_mode"); last_time = AP_HAL::millis(); }}

4、在Copter.h里进行函数申明,主要添加:

 bool new_flightmode_init(bool ignore_checks); void new_flightmode_run();

5、flight_mode.cpp的修改

添加new_flightmode_init(bool ignore_checks)和new_flightmode_run()

在set_mode()里添加new_flightmode_init()

9f1e9bfb3bb0c7b39f8495e28d9bc853.png
36c3a535b7319e0627f5e45f7cb9f579.png

在update_flight_mode()里添加new_flightmode_run()

96256fe767f80305e1db0510f0ce3506.png
589c4fcba9e22fa18dfab68d2fad029d.png

6、到这里代码就已经写完了,这是一个新的飞行模式,里面是空的,只有一个像地面站发是否切换成功的消息,我们打开mp,在全部参数列表里将飞行模式设为21,这里是和我们代码里对应上的,这样我们切到这个这个飞行模式,在地面站的消息里,就可以看到run函数发过来的消息了,根据这个消息我们就知道是否切换成功了。注意的是切换因为我们没有编译地面站,地面站的仪表盘是显示不了的,这里我们看消息是否打印出来判断就行了。

30eef40235d66f57b072a1c029e90916.png
6bf52d6c0866936ee03e1d6c5e50f417.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值