当前位置: 首页 > news >正文

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中即可,具体使用方法看后面文章

相关文章:

  • QEMU源码全解析 —— 块设备虚拟化(10)
  • [笔记] 系统分析师 第二章 经济管理与应用数学 (未完待续)
  • Linux系统离线安装ollama【详细版】
  • <command-line>:0:1: error: macro names must be identifiers m
  • 2000-2019年各省地方财政行政事业性收费收入数据
  • 【数据采集】技术对比:PCIe、PXIe、PCI、PXI、网口与USB
  • 线上分享会 如何用deepseek和豆包等AI平台获客?
  • 基于SSM+Vue物流信息管理系统(附源码)
  • 信竞资讯
  • MacOS 15 无法打开Docker问题(Malware Blocked)解决
  • 机器人SDF模型写法官方例子
  • csp信奥赛C++常用的数学函数详解
  • UPDclient server
  • 使用 Go 和 Gin 实现高可用负载均衡代理服务器
  • 夯实 kafka 系列|第五章:基于 kafka 分布式事件框架 eval-event
  • Java通信
  • JS—深拷贝与浅拷贝:2分钟掌握二者的区别
  • Axure RP设计软件中的各种函数:包括数字、数学、字符串、时间及中继器函数,详细解释了各函数的用途、参数及其应用场景。
  • MIPI(Mobile Industry Processor Interface)详解
  • ASP 应用HTTP.SYS短文件文件解析Access 注入数据库泄漏
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底
  • 巴基斯坦军方:印度导弹袭击巴首都附近空军基地
  • Meta正为AI眼镜开发人脸识别功能
  • 司法部:建立行政执法监督企业联系点,推行行政执法监督员制度
  • 视频丨习近平主席专机抵达莫斯科,俄战机升空护航
  • 习近平离京赴莫斯科对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典