顾名思义, 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消息名称。
https://yiming.blog.csdn.net/article/details/46880637?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-46880637-blog-50728254.235%5Ev38%5Epc_relevant_sort_base3&depth_1-utm_source=dis
2、Mavlink协议理解
https://www.cnblogs.com/daxuezhidao/p/5750143.html
3、ros通信原理
https://blog.csdn.net/qq_66257231/article/details/125023331
实例演示:
Plugin理解
plugins:可以理解为是mavros包提供给我们的一些接口,如果需要用到某
个plugin,建议可以看看plugin的源码,有的时候它默认的方向定义和一些
细节可以自己修改一下,方便使用。有些plugin对于我们的任务是用不到的,
可以将它添加到黑名单中禁用。
https://blog.csdn.net/sinat_16643223/article/details/114810737