您的位置:首页 > 产品设计 > 产品经理

在APM中添加新的mavlink消息

2016-04-21 13:41 501 查看
在最新的APM代码中添加MAVLINK消息和教程中介绍的有些出入。

请对照“]Pixhawk源码笔记十一:增加新的MAVLink消息”进行添加

首先在common.xmlardupilotmega.xml文件中添加你的信息的定义声明。

这2个文件的实际位置和笔记十一是不同的。实际是在“Modules/mavlink/message_definitions/v1.0”之中

然后可以在common.xml中仿造添加一条消息,例如我测试的是在文件最后结尾处加入

<message id="255" name="TEMP">

               <description>send temperature to gcs</description>

               <field type="int16_t" name="temperature1">Raw Temperature measurement (raw)</field>

               <field type="int16_t" name="temperature2">Raw Temperature measurement (raw)</field>

               <field type="int16_t" name="temperature3">Raw Temperature measurement (raw)</field>

               <field type="int16_t" name="temperature4">Raw Temperature measurement (raw)</field>

</message>

添加后保存文件,编译。

会发现在Build.ArduCopter/libraries/GCS_MAVLink/include/mavlink/v1.0/common文件下 会多出来新的文件mavlink_msg_temp.h

然后在

GCS.h中的class GCS_MAVLINK

中增加新成员void send_temp(void);

然后在GCS_Common.cpp中加入函数实体

// 发送温度数据//

void GCS_MAVLINK::send_temp(void)

{

    mavlink_msg_temp_send(chan, 0x0a,0x0b,0x0c,0x0d);//四个变量,测试使用。方便在串口助手里面找到。

}

最后将这个命令加入到发送循环当中。

例如在GCS_Mavlink.cpp当中的红色的部分。

bool GCS_MAVLINK::try_send_message(enum ap_message id)

{

.....................................

case MSG_RAW_IMU2:

        CHECK_PAYLOAD_SIZE(SCALED_PRESSURE);

        copter.gcs[chan-MAVLINK_COMM_0].send_scaled_pressure(copter.barometer);

        copter.gcs[chan-MAVLINK_COMM_0].send_temp();//

.......................................................................

}

然后在电脑端利用串口助手链接PIXHAWK,你会发现可以接收到数据,但是接收不到加的这组数据。

因为你要打开MissionPlanner激活一下。然后关闭MP,打开串口助手就可以查找到

FE 08 42 01 01 FF 0A 00 0B 00 0C 00 0D 00 38 96

这组命令

以上是我自己添加mavlink的步骤和方法,内容比较少,都是干货。中间涉及的步骤和C++语言结构等等内容

希望大家帮一起补充全。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: