对于熟悉机器人应用的读者,ROS想必定是不会陌生的。ROS可以说是目前机器人相关开源社区最流行的项目。每一种类型的机器人都需要以硬件的实际情况编写符合用户需要的功能,起初代码的复用率很低,大大阻碍了机器人的发展。
ROS便是为机器人在研发的过程中的代码复用提供支持的开源框架,大量的机器人开源项目,从感知到控制、从定位到构图、从导航到可视化,几乎都使用ROS作为基础。
ROS2解决了ROS在很多层面上无法满足的性能升级的短板,诸如:实时性、对MCU的支持、网络通信的依赖程度、多机器人的支持等等。原生的ROS其实只支持单个机器人,对于多机器人的支持是不足的,而且大型机器人项目的构建、开发和部署这些需求ROS逐渐不能满足。实时性、安全性、嵌⼊式移植等方面,在工业领域也让时常无法匹配某系性能的要求。
Micro-ROS在解决了多机器人支持、非理想网络环境支持、实时系统支持之外,最重要的就是对MCU直接的支持。Micro-ROS将不再停留在MCU的边界通过串行协议集成。ROS2采⽤RTSP(Real-Time Publish-Subscribe)协议的DDS作为中间层,DDS作为⼀种⽤于实时和嵌⼊式系统发布-订阅式通信的⼯业标准,在系统容错和灵活性上会更加完善。Micro-ROS同时可以利用其中间件可插拔性来使用针对MCU进行了优化的DDS-XRCE。
32位的RA6M5 MCU是高性能Arm Cortex-M33内核,521KB内存,闪存高达2MB。集成了能够用于在ROS节点之间进行 Pub/Sub信息传递的通信接口,可以通过单线 UART 和 RS-485 控制多个伺服系统。该官方板支持的实时操作系统为FreeRTOS、ThreadX和裸机。
在Micro-ROS与硬件结合上,还有一个问题,即在嵌入式平台中运行Micro-ROS的最大的制约来自于内存的限制。由于Micro-ROS 中的内存使用是一个很复杂的问题,所以如何调整Micro-ROS 中间件的内存消耗是比较棘手的。
因为Micro-ROS的目标是MCU这一类内存资源低的设备。优先使用静态内存而不是动态内存,并优化应用程序的内存占用是一个较为可行的办法。上面我们也提到了,Micro-ROS同时可以利用其中间件可插拔性来使用针对MCU进行了优化的DDS-XRCE。
Micro-ROS的中间件通常被形容成“资源极度受限但极度灵活”,为了与Micro-ROS堆栈中的ROS中间件接口集成,DDS-XRCE引入了静态内存池,以避免在运行时动态分配内存。这些都是为了消除Micro-ROS与硬件结合时的内存限制。解决这一限制后,Micro-ROS与MCU这类硬件的结合,可以说是相当可靠的机器人控制解决方案。
链接:https://zhuanlan.zhihu.com/p/494294162
MQTT协议是一个应用层协议,他要求使用的传输层协议能提供有序的,可靠的双向字节流传输服务。
青少年机器人技术七级、八级着重于机器人智能处理能力的学习,基本编程语言为Python,采用RDK X3作为主控。
Arduino通过rosserial_arduino包与ROS进行串口通信控制舵机