PX4飞控-接收MAVLINK消息(2)-生成MAVLINK_MSG_ID_***.h文件
我在自制的底板上跑vxworks操作系统中移植了MAVLINK的C库用来与PX4飞控进行通信,其中使用的C库和其他依赖文件,例如common文件夹均为从飞控源码中获取,文件获取位置为px4-Autopolite/bulid/mavlink中,因为PX4源码中自带MAVLINK的依赖项在编译过程中会自动处理common.xml文件,所以不需要再把common.xml文件导入生成MAVLINk的C库(不需要执行下图的操作)
那么如何生成自定义的MAVLINK数据包呢,首先我们打开路径PX4-Autopilot/src/modules/mavlink/mavlink/message_definitions/v1.0
找到common.xml文件,在下图位置添加,定义的结构体和ID号
<message id="228" name="COMMAND_CONTROL"> //ID号不能与其他ID号冲突(不能重复)
<description>xzy creat it.</description>
<field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
<field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
<field type="uint8_t" name="status_mode">System STATUS_MODE.</field>
<field type="uint8_t" name="track_validity">hang ji you xiao xing.</field>
<field type="float" name="attitude1">position1 jing du 1.</field>
<field type="float" name="longtitude1">position1 wei du 1.</field>
<field type="float" name="altitude1">position1 gao du 1.</field>
<field type="int16_t" name="vx1">position1 dongxiangsudu.</field>
<field type="int16_t" name="vy1">position1 beixiangsudu.</field>
<field type="int16_t" name="vz1">position1 tianxiangsudu.</field>
<field type="int16_t" name="accx1">position1 dongxiangjiasudu.</field>
<field type="int16_t" name="accy1">position1 beixiangjiasudu.</field>
<field type="int16_t" name="accz1">position1 tianxiangjiasudu.</field>
<field type="uint16_t" name="headingangle1">position1 hangxiangjiao1.</field>
<field type="int16_t" name="headingangularvelocity1">position1 hangxiangjiaosudu.</field>
<field type="uint8_t" name="locus1">position1 guiji1.</field>
<field type="float" name="attitude2">position2 jing du 2.</field>
<field type="float" name="longtitude2">position2 wei du 2.</field>
<field type="float" name="altitude2">position2 gao du 2.</field>
<field type="int16_t" name="vx2">position2 dongxiangsudu.</field>
<field type="int16_t" name="vy2">position2 beixiangsudu.</field>
<field type="int16_t" name="vz2">position2 tianxiangsudu.</field>
<field type="int16_t" name="accx2">position2 dongxiangjiasudu.</field>
<field type="int16_t" name="accy2">position2 beixiangjiasudu.</field>
<field type="int16_t" name="accz2">position2 tianxiangjiasudu.</field>
<field type="uint16_t" name="headingangle2">position2 hangxiangjiao2.</field>
<field type="int16_t" name="headingangularvelocity2">position2 hangxiangjiaosudu2.</field>
<field type="uint8_t" name="locus2">position1 guiji2.</field>
<field type="float" name="attitude3">position3 jing du 3.</field>
<field type="float" name="longtitude3">position3 wei du 3.</field>
<field type="float" name="altitude3">position3 gao du 3.</field>
<field type="int16_t" name="vx3">position3 dongxiangsudu.</field>
<field type="int16_t" name="vy3">position3 beixiangsudu.</field>
<field type="int16_t" name="vz3">position3 tianxiangsudu.</field>
<field type="int16_t" name="accx3">position3 dongxiangjiasudu.</field>
<field type="int16_t" name="accy3">position3 beixiangjiasudu.</field>
<field type="int16_t" name="accz3">position3 tianxiangjiasudu.</field>
<field type="uint16_t" name="headingangle3">position3 hangxiangjiao3.</field>
<field type="int16_t" name="headingangularvelocity3">position3 hangxiangjiaosudu3.</field>
<field type="uint8_t" name="locus3">position3 guiji3.</field>
<field type="float" name="altitude">gao du.</field>
<field type="int16_t" name="vx">qianhouyidongsudu.</field>
<field type="int16_t" name="vy">zuoyouyidongsudu.</field>
<field type="int16_t" name="vz">shangxiayidongsudu.</field>
<field type="int16_t" name="headingangularvelocity">hangxiangjiaosudu.</field>
<field type="uint8_t" name="enmergencyconntrolcommand">jin ji kong zhi zhi ling.</field>
</message>
然后编译源码make zhty_norax_default
在编译生成的目录中Autopolite/bulid/mavlink/common/中可以找到生成的mavlink_msg_id_command_control.h文件
使用时将其移到C库的Common中即可,具体使用方法看后面文章