一、Mavros简介 顾名思义, mavros就是mavlink+ros。mavros是PX4官方提供的一个运行于ros下收发mavlink消息的工具,利用mavros可以发送mavlink消息给飞控(可以控制飞机),并且可以从飞控中接受数据(例如:飞控的位置速度 IMU数据等等)。在px4中,mavlink模块负责接收和发送mavlink消息。(比如和QGC地面站通信)在机载电脑中,mavros底层代码负责接收和发送mavlink消息。我们利用plugin发布的ros话题去编写代码,实现功能,然后发布控制相关的ros话题,plugin接收我们的话题,替我们发送给飞控。 二、ROS与PX4通讯关系如下图: 如需要进行上层开发则在ROS中编写代码,订阅或发布MAVROS话题,从而订阅无人机的状态,及发布无人机的期望位置或期望速度,px4飞控追踪此期望运动。因此无论上层控制程序多么复杂,最后都是分解成为控制无人机的位置,速度或姿态等,通过mavros发布给飞控进行跟踪。若进行底层飞控的开发,需研读px4开发手册,修改px4代码。其中MAVROS与MAVLink不需修改。因此学习MAVROS是ROS控制无人机需要首先学习的。 三、PX4无人机消息 1、uorb理解 uORB(Micro Object Request Broker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。实际上uORB是一套跨「进程」 的IPC通讯模块。在Pixhawk中, 所有的功能被独立以进程模块为单位进行实现并工作。而进程间的数据交互就由为重要,必须要能够符合实时、有序的特点。 PX4中所有消息都有自己对应的uorb消息名称。 链接: PX4消息理解 2、Mavlink协议理解 https://www.cnblogs.com/daxuezhidao/p/5750143.html 3、ros通信原理 链接: ros通信原理 四、Plugin理解 plugins:可以理解为是mavros包提供给我们的一些接口,如果需要用到某 个plugin,建议可以看看plugin的源码,有的时候它默认的方向定义和一些 细节可以自己修改一下,方便使用。有些plugin对于我们的任务是用不到的, 可以将它添加到黑名单中禁用 链接: MAVROS黑名单设置 五、Mavros中的Plugin的作用 1、读取飞控发送出来的封装成mavlink的消息,解码后转为ROS消息类型的话题或者服务消息,提供给ROS上层进行订阅和调用 2、订阅我们发布的话题,封装成mavlink消息,编码,然后发送给飞控 六、飞控mavlink模块的作用 1、接收:读取ROS机载电脑发送过来的消息,转为uorb消息,提供底层飞控使用 2、发布:订阅飞控中的uorb消息,封装成mavlink消息发布出去 3、开发过程:我们利用plugin发布的ros话题去编写代码,实现功能,然后发布控制相关的ros话题,plugin接收我们的话题,替我们发送给飞控