pixhawk添加一个新的MAVLink 消息

前期准备

  • 源 码:自己到github上下载。可参阅这篇博客
  • 工 具:ecilpse用来查看源代码。

说明:

  • 主代码区是指ardupilot/ArduCopter目录下的文件
  • 库是指ardupilot/libraries目录下的文件

###添加一个新的MAVLink 消息###
pixhawk和地面站之间是使用MAVLink协议来进行传输,pixhawk飞控板通过串口连到电脑的地面站上(地面站有mission planner,Droid Planner近10款之多,并且有针对不同的平台)。

这部分介绍仅仅在Linux上被测试过,我是在虚拟机的ubuntu上测试的。如何装虚拟机请自行百度。

步骤一
首先确保你已经下载了ArduPilot项目最新的代码,然后检查mavproxy,在终端窗口里输入一下命令,能完成mavproxy的更新。

sudo pip install --upgrade mavproxy

步骤二
首先决定你想要添加什么类型的消息,让它怎样和已存在的MAVlink消息不冲突。

举个例子:你可能想要发送一个新的导航命令到四旋翼上,它将会在一个任务中间被发送。这种情况下你需要一个类似于MAV_CMD_NAV_WAYPOINT这个定义的MAV_CMD_NAV_TRICK定义,你可以在 MAVLink messages这个页面找到MAV_CMD_NAV_WAYPOINT。

另外,你可能需要发送一个从飞控到地面站的新类型的传感器数据。这类似于 SCALED_PRESSURE这个消息。

步骤三
在 common.xml 或ardupilotmega.xml配置文件里添加新的消息定义。 这两个文件在ardupilot/modules/mavlink/message_definitions/v1.0/目录下。如果你仅仅是个人使用或者仅仅用于Copter这种顶层应用(你可以看在ardupilot下还有Plane,Rover等顶层应用)。那么你应该将这个定义,添加到 ardupilotmega.xml文件中。

步骤四
当你在主机器代码中添加了新的MAVlink消息用于向地面站发送或接收来自地面站的命令前,首先需要进行编译(make px4-v2)用于产生一个mavlink包代码,以确保在编辑了XML配置文件之后新的消息生效。这个mavlink消息如果编译成功之后会马上生效,不会因为其他代码的改变而不生效。

关于mavlink的顶层代码在主代码区的 GCS_MAVLink.cpp文件中和/libraries/GCS_MAVLink/GCS 类中。

举一个例子,如果你想为一个新的导航命令提供支持,你需要完成如下内容:

  • 拓展在 AP_Mission库中的mission_cmd_to_mavlink()和mavlink_to_mission_cmd()函数来将 MAVProxy命令转化为一个AP_Mission::Mission_Command 的结构。
  • 在主代码区的commands_logic.cpp的start_command()和verify_command()中添加一些新的函数来检查这个新的MAV_CMD_NAV_TRICK消息是否到达。这两个新的函数是do_trick()和verify_trick(),主要是用于检查新的消息有没有被传递成功。
    在这里插入图片描述
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值