APM学习笔记——Ardupilot源代码添加新的飞行模式
首先贴一张官网的Copter架构的高级视图:1、要改的文件都在ArduCopter文件夹里,如下:
defines.h Copter.hflight_mode.cpp新建一个飞行模式的cpp文件,这里我取名control_newflightmode.cpp下面每个部分详细说明一下。
2、defines.h 需要修改的内容
在control_mode_t枚举的底部,添加我们定义的新的飞行模式名字:
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()
在update_flight_mode()里添加new_flightmode_run()
6、到这里代码就已经写完了,这是一个新的飞行模式,里面是空的,只有一个像地面站发是否切换成功的消息,我们打开mp,在全部参数列表里将飞行模式设为21,这里是和我们代码里对应上的,这样我们切到这个这个飞行模式,在地面站的消息里,就可以看到run函数发过来的消息了,根据这个消息我们就知道是否切换成功了。注意的是切换因为我们没有编译地面站,地面站的仪表盘是显示不了的,这里我们看消息是否打印出来判断就行了。
转发了 博主搞飞控的吗 不错 转发了
页:
[1]