ROS的框架

张开发
2026/4/17 2:27:48 15 分钟阅读

分享文章

ROS的框架
ROSRobot Operating System本质上不是操作系统而是一个机器人软件框架 通信中间件 工具链。它的目标是解决机器人开发中的三个核心问题模块化开发进程间通信工具生态简单一句话概括ROS 机器人软件模块管理 分布式通信 开发工具一、ROS整体架构┌────────────────────────────┐│ 应用层 (Application) ││ SLAM / Navigation / MoveIt │└────────────────────────────┘┌────────────────────────────┐│ 功能包层 (Packages) ││ perception / mapping / control │└────────────────────────────┘┌────────────────────────────┐│ 通信层 (ROS Middleware) ││ Topic / Service / Action │└────────────────────────────┘┌────────────────────────────┐│ OS层 (Linux / Ubuntu) │└────────────────────────────┘层级作用OSUbuntu / LinuxMiddlewareROS通信机制Packages功能模块Application完整机器人系统二、ROS核心组件ROS系统由多个核心组件组成。最重要的有7个ROS System│├── Master├── Node├── Topic├── Service├── Action├── Parameter Server└── Message三、Node节点Node是ROS最基本的执行单元。可以理解为一个节点 一个独立进程例如机器人系统机器人系统│├── 摄像头节点├── 激光雷达节点├── SLAM节点├── 路径规划节点└── 控制节点每个节点独立运行独立进程可以用不同语言写四、MasterROS MasterROS Master是整个ROS网络的管理中心作用1 节点注册2 节点发现3 Topic管理4 参数服务器运行ROS系统必须先运行roscore五、Topic话题通信Topic是ROS最常用的通信方式特点发布/订阅模型异步通信多对多结构Publisher --- Topic --- Subscriber例如camera_node││ publish▼/camera/image▲│ subscribeimage_process_node意思camera_node 发布图像image_process_node 订阅图像代码例子C发布ros::Publisher pub nh.advertisestd_msgs::String(chatter,1000);订阅ros::Subscriber sub nh.subscribe(chatter,1000,callback);六、Service服务通信Service是同步通信机制特点请求/响应一对一阻塞结构Client ----request---- ServerClient ---response----例如导航节点 ---- 请求路径规划节点 ---- 返回路径七、Action动作通信Action用于长时间任务比如导航机械臂运动路径规划特点1 可以反馈进度2 可以取消任务3 非阻塞八、Message消息节点之间通信需要数据格式。ROS使用.msg例子std_msgs/String定义string data复杂一点sensor_msgs/Image消息流程NodeA - Message - NodeB九、Parameter Server参数服务器作用存储全局配置例如机器人速度地图参数相机参数存储方式key-value十、Package功能包OS的代码组织单位是Package一个包包含package├── src├── include├── launch├── msg├── srv└── CMakeLists.txt十一、Launch启动系统ROS通常要启动多个节点。例如cameraslamnavigationrviz使用.launch启动roslaunch robot start.launch十二、ROS整体运行流程假设机器人运行流程1 启动ROSroscore↓2 启动节点camera_nodelaser_nodeslam_nodenavigation_node↓3 节点注册到Master↓4 节点建立通信↓5 Topic传输数据十三、ROS的优势ROS流行原因1 模块化节点独立开发。2 分布式可以跨机器通信。PC1 - cameraPC2 - slamPC3 - navigation3 开源生态大量开源算法SLAMNavigationMoveItAutoware4 工具丰富ROS工具rviz 可视化rqt GUI工具rosbag 数据记录roslaunch 启动系统

更多文章