查看: 693|回复: 4

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

[复制链接]

299

主题

331

帖子

930

积分

高级飞友

Rank: 4

积分
930
飞币
597
注册时间
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

26

主题

762

帖子

1507

积分

金牌飞友

Rank: 6Rank: 6

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

33

主题

773

帖子

1534

积分

金牌飞友

Rank: 6Rank: 6

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

28

主题

798

帖子

1568

积分

金牌飞友

Rank: 6Rank: 6

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

40

主题

828

帖子

1649

积分

金牌飞友

Rank: 6Rank: 6

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

本版积分规则

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