查看: 765|回复: 4

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

[复制链接]

314

主题

348

帖子

977

积分

高级飞友

Rank: 4

积分
977
飞币
627
注册时间
2017-7-23
发表于 2022-11-10 05:14:38 | 显示全部楼层 |阅读模式
首先贴一张官网的Copter架构的高级视图:

APM学习笔记——Ardupilot源代码添加新的飞行模式-1.jpg

1、要改的文件都在ArduCopter文件夹里,如下:
defines.h Copter.hflight_mode.cpp新建一个飞行模式的cpp文件,这里我取名control_newflightmode.cpp下面每个部分详细说明一下。
2、defines.h 需要修改的内容
在control_mode_t枚举的底部,添加我们定义的新的飞行模式名字:

APM学习笔记——Ardupilot源代码添加新的飞行模式-2.jpg

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()



APM学习笔记——Ardupilot源代码添加新的飞行模式-3.jpg




APM学习笔记——Ardupilot源代码添加新的飞行模式-4.jpg


在update_flight_mode()里添加new_flightmode_run()

APM学习笔记——Ardupilot源代码添加新的飞行模式-5.jpg




APM学习笔记——Ardupilot源代码添加新的飞行模式-6.jpg


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

APM学习笔记——Ardupilot源代码添加新的飞行模式-7.jpg




APM学习笔记——Ardupilot源代码添加新的飞行模式-8.jpg

29

主题

777

帖子

1539

积分

金牌飞友

Rank: 6Rank: 6

积分
1539
飞币
753
注册时间
2017-8-31
发表于 2022-11-10 05:27:10 | 显示全部楼层
转发了

39

主题

789

帖子

1570

积分

金牌飞友

Rank: 6Rank: 6

积分
1570
飞币
774
注册时间
2017-8-23
发表于 2022-11-10 05:33:10 | 显示全部楼层
博主搞飞控的吗

35

主题

809

帖子

1597

积分

金牌飞友

Rank: 6Rank: 6

积分
1597
飞币
779
注册时间
2017-8-30
发表于 2022-11-10 05:47:18 | 显示全部楼层
不错

44

主题

837

帖子

1670

积分

金牌飞友

Rank: 6Rank: 6

积分
1670
飞币
831
注册时间
2017-8-11
发表于 2022-11-10 05:54:56 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表