1、下载Mavlink生成器
1.1 Git clone
//需要在翻墙的网络环境下下载
git clone https://github.com/mavlink/mavlink.git
1.2 进入mavlink目录更新子模块
cd mavlink
git submodule update --init --recursive
1.3 运行脚本
python -m mavgenerate
如果电脑安装多个Python版本,需要更换为Python3,参考链接:https://zhuanlan.zhihu.com/p/159483149
2、编辑common.xml文件自定义MavLink
2.1 找到文件common.xml文件
路径:/mavlink/message_definitions/v1.0/common.xml
在进行自定义时注意,消息id不能重复!
找到需要定义的位置:
<message id="10" name="SET_PARAMETER">
<description>2022-04-30 19:50 BY jiangchangsheng Mavlink Test.</description>
<field type="uint8_t" name="target_system">The system setting the mode</field>
<field type="uint8_t" name="base_mode" enum="MAV_MODE">The new base mode.</field>
<field type="uint32_t" name="custom_mode">The new autopilot-specific mode. This field can be ignored by an autopilot.</field>
</message>
2.2 运行mavgenerate.py
//路径为 mavlink文件夹
// python -m mavgenerate
~/mavlink_test/mavlink$ python -m mavgenerate
如下图完成操作:
生成的文件:
打开common文件夹,搜索生成的头文件:
打开生成的common.h头文件:
Ctrl +F搜索自定义消息的参数:
将生成的头文件放置项目文件,如下文件夹中:
2.3 替换文件中comm.h
ardupilotmega.h
standard.h
文件内容
2.3.1 添加校验位CRC
2.3.2 添加头文件
2.3.3 添加MAVLINK_MESSAGE_INFO
2.3.4 添加MAVLINK_MESSAGE_NAMES
下面这两个文件的操作流程是一样的
3、添加至项目中
3.1 编辑mavlink_receiver.h文件
3.2 编辑mavlink_receiver.cpp文件
3.3 编译文件
make px4_fmu-v5_default
4、 地面站添加验证消息
4.1 添加头文件
4.2 UI界面添加按钮
void widget::on_btn_37_clicked()
{
mavlink_message_t msg;
mavlink_msg_set_parameter_pack_chan(100,1,0,
&msg,
6,6,6);
qDebug()<<"消息id:"<<msg.msgid;
qDebug()<<"系统id:"<<msg.sysid;
uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
int len = mavlink_msg_to_send_buffer(buffer, &msg);
QByteArray SenTemp;
SenTemp.resize(len);
for(int i=0;i<len;i++) {
SenTemp[i]=buffer[i];
}
QByteArrayList SenTemplist;
SenTemplist.append(SenTemp);
Serial.write(SenTemp);
}
运行代码
利用地面站给无人机发送消息,若一切正常,无人机收到消息后将会由蜂鸣器发出声音!
//下载代码:
make px4_fmu-v5_default upload
这里利用串口实现和地面站的连接,利用数传通信!
测试视频
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)