新建Mavlink消息

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

如下图完成操作:
mavlink生成器
生成的文件:
输出文件
打开common文件夹,搜索生成的头文件:
.h头文件
打开生成的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);//打包为Buff
    //发送
    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

这里利用串口实现和地面站的连接,利用数传通信!

测试视频

自定义Mavlink消息效果测试

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白猿成长记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值