Ros学习
Ros:
2007年诞生于斯坦福,起因Eric Berger 和 Keenan Wyrobek为解决机器人协作,后因斯坦福的 DARPA 无人驾驶挑战赛冠军一举成名,由Open Source Robotics Foundation (OSRF) 接手维护。本质上是在linux之上开发的一系列软件包。 ROS 很重要的4个设计:
- Message (消息): ROS 定义好了各种常见传感器的数据格式(通过.msg 文件定义新的数据结构,ROS 就可以自动生成对应的头文件类似protobuf);
- Topic (话题):基于发布和订阅;
- Node (节点):一个节点只提供单一功能。
- Service (服务):节点订阅topic做为输入,发布topic作为输出节点服务);
其它关键点:
- ROS Gazebo 仿真环境:用于调试,加快迭代。
- 实时性:linux做算法,实时性由rtos胜任,中间通过rosserial(ROS1) 和 micro_ros(ROS2,主要是为了在单片机上运行ros api)进行通讯;

- rosserial 和 micro_ros对比
ros版本 rosserial micro_ros rt-thread解决方案 ROS1 1通过设置 ROS_MASTER_URI 和 ROS_HOST_NAME 环境变量发现主机; 2者的移植包;libmicroros.a 库形式提供,暂只支持 Cortex M0,Cortex M3,Cortex M4,Cortex M7; ROS2 1 通过DDS发现主机; 支持串口和 TCP 通信;只支持C++ 支持串口和 UDP 通信;支持C/C++ -
libmicroros.a是什么?它是 micro-ROS 的静态库,包含:
- 启动流程:
micro_ros 的启动流程,先设置 micro_ros client 的 IP 地址,UPD 端口号,在启动注册相关的节点,最后订阅自己需要的话题 (topic),启动 executor 设置相关的回调函数;micro-ROS 本身 不直接与 ROS 2 节点通信,而是通过 Agent(运行在 Linux/ROS 2 主机上)做桥接。Agent 负责将 micro-ROS 的 XRCE-DDS 流量转换为标准 ROS 2 DDS 流量
————————————————
原文链接:https://club.rt-thread.org/ask/article/253b0b658c915e36.html
移植:
micro-ROS + STM32 + FreeRTOS 示例,

浙公网安备 33010602011771号