ROS 介绍

发布时间: 更新时间: 总字数:1629 阅读时间:4m 作者: IP上海 分享 网址

Robot Operating System (ROS, 机器人操作系统) 是专为机器人软件开发所设计出来的一套电脑操作系统架构。

介绍

  • ROS 是一个开源的元级操作系统,2007年11月,提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序

    • ROS1 架构中,所有节点需要使用 Master 进行管理
    • ROS2 使用基于 DDS 的 Discovery 机制,解除了 Master 的中心化
  • 相关技术

    • OpenCV
    • AMCL
    • TF
    • MoveIt
    • DWAPlanner
    • GlobaIPlanner
    • LocalPlanner
    • BahaviorTree
    • PointCloudLibrary
    • SMACH
    • Navigation
    • CostMap
    • Gazebo
    • OMPL
  • 安装部署:http://wiki.ros.org/noetic/Installation

  • ros2 相关代码:ros2_21_tutorials

  • ros1 wpr_simulation

  • 命令行 ros2 --help

  • 核心概念

    • workspace 工作空间是存放项目开发文件的目录
      • src source space
      • build build space
      • install install space
      • log log space
    • node 节点是机器人的工作细胞
      • 支持使用不同语言开发
      • 分布式运行
      • 执行具体任务的进程,独立的可执行文件
      • 通过节点名称管理:ros2 run <xxx> <xxx>
      • 常见的节点
        • 超声波Node:sensor_package/ssr_pkg
        • 底盘Node
    • topic 话题是节点间传递数据的桥梁
      • 发布/订阅模型
      • 订阅者或发布者可以不唯一:一对一、一对多、多对多
      • 异步通信机制
      • topic 发送的内容称为 message,使用 .msg 文件定义通信的消息结构
      • ros2 topic --helpros2 topic listros2 topic pub <topic> <content>
      • 常见的话题
        • /scan 雷达数据话题,雷达节点发送,sensor_msgs:LaserScan
        • /cmd_vel 速度控制话题,雷达避障节点发出,指导机器人底盘节点
        • /imu/data IMU 数据话题
          • IMU(Inertial Measurement Unit, 惯性测量单元),获取空间姿态,sensor_msgs:Imu.msg
          • 通过 /cmd_vel 控制底盘
        • /map 地图使用栅格划分 nav_msgs:OccupancyGrid
        • rqt_graph 命令绘制关系UI
    • service
    • bag
  • 开发环境

    • vscode
      • 插件:URDF
    • 客户端
      • pip3 install rosdepc 或使用 apt install python3-rosdep
      • rosdepc init && rosdepc update
      • rosdepc install -i --from-path src --rosdistro humble -y
      • build: apt install python3-colcon-ros && colcon build
      • env setup: source install/local_setup.sh
    • 创建功能包:ros2 pkg create --build-type <build-type> <package-name>
  • 服务:节点间的你问我答

    • 客户端/服务器(C/S)模型
    • 同步通信机制
    • 服务器唯一,客户端可以不唯一
    • .srv 文件定义请求和应答数据结构
  • 通信接口:数据传递的标准结构

    • .msg 话题文件
    • .srv 服务文件
    • .action 动作文件
    • https://index.ros.org 搜索消息包:
      • std_msgs 标准消息包
      • common_msgs 常规消息包
        • sensor_msgs 传感器消息包
        • geometry_msgs 几何消息包
        • nav_msgs 导航消息包
  • 动作:完整行为的流程管理

    • 机器人运动
      • 矢量运动:由 X/Y/Z 轴分量组成
      • 旋转运动:由 X/Y/Z 轴分量组成,angular 表示角度
    • 使用 topic: /cmd_vel 控制
      • command_velocity
  • 参数:机器人系统的全局字典

    • 全局共享字典
    • 有键与值组成
    • 可实现动态监控
    • ros2 param list
  • 分布式通信:多计算平台任务分配

  • DDS(Data Distribution Service, 数据分发服务):机器人的神经网络,2004年由对象管理组织(OMG, Object Management Group)发布

    • 专门为实时系统设计的数据分发/订阅标准,DDS强调以数据为中心
    • 常见的通信模式:点对点、Broker模式、广播模式、数据为中心模式
  • Launch:多节点启动与配置脚本,参考

    • 支持多节点多服务的启动
  • TF(TransForm):机器人坐标管理系统,主要描述两个坐标系的空间关系,即坐标系变换

    • /tf 话题
    • 静态TF广播
  • URDF(Unified Robot Description Format, 统一机器人描述格式):ROS 机器人建模方法

    • XML 格式
    • 包括:robot、link 和 join 自身及相关属性的描述信息。XACRO 格式支持宏定义和调用
  • Gazebo:是一款三维物理仿真平台,是用来模拟真实机器人发出传感器数据的工具(作用:创造数据)

    • 强大的物理引擎,高质量的图形渲染
    • 方便的编程与图形接口
    • 开源免费
    • 使用场景:测试机器人算法、机器人设计、现实场景下的回溯测试
      • RGB-D 摄像头仿真(kinect)
      • 激光雷达仿真
    • apt install ros-humble-gazebo-*
  • Ignition 新一代 Gazebo,官网

    • apt install ros-humble-ros-ign
  • Rviz(The Robot Visualization Tool):是一款 三维可视化显示平台,可以兼容基于 ROS 框架的机器人平台(作用:显示数据)

    • 使用 xml 对机器人、周围物体等进行描述,包括尺寸、质量、位置、关节、材质等
    • 命令:ros2 run rviz rviz [-d <xxx>.rviz]
  • RQT:模块化可视化工具

    • apt install ros-humble-rqt
  • SLAM(Simultaneous Localization And Mapping, 同时定位于地图构建) 通过参照物、电子标签等实现

    • 数据流:/scan -> SLAM节点 -> /map -> Rviz 显示
    • 实现
      • Hector_Mapping
        • apt install ros-humble-hector-mapping
      • slam_gmapping

相关硬件

  • IMU 是附着在机器人身上的,实时发布机器人的旋转倾斜等姿态信息的单元模块
  • 雷达
    • 单线雷达
    • 多线雷达
    • 三角测距雷达
    • TOF 雷达
    • 机械旋转雷达
    • 固态雷达

ROS 使用

logo
logo

参考

  1. https://www.ros.org/
  2. https://wiki.ros.org/ROS/Tutorials
  3. https://index.ros.org/
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数