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)进行通讯;引用自《机器人操作系统 (ROS2) 和 RT-Thread 通信》
  • 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 的静态库,包含:

    • rcl(ROS Client Library),官方预编译版本
    • rcutils, rmw_microxrcedds, microcdr
    • 传输层(serial/udp)抽象接口
    • XRCE-DDS 客户端逻辑
    • micro-ROS 的 C API ,示例

      image

       

  • 启动流程:

    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 示例

 

posted on 2025-12-22 11:06  杰瑞鼠  阅读(4)  评论(0)    收藏  举报