尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

鱼香ROS-202610-28

鱼香ROS-202610-28 ros2架构概览通信是 ROS 2 的底层核心能力但不是它的全部功能ROS 2 是用通信把机器人软件组件组织起来的开发框架。ROS 2 的架构核心可以概括为一句话它是一套构建在真实操作系统之上的中间件栈以 DDS 为通信基石通过 RMW 抽象层解耦具体实现围绕“节点”与“ROS 图”组织分布式计算。分层软件栈从应用到操作系统从软件堆栈的角度看ROS 2 可以清晰地划分为以下几层层级核心内容关键作用应用层用户编写的机器人业务代码感知、规划、控制等实现具体功能库层ROS 客户端库rclcpp、rclpy等为不同语言提供一致的 ROS API抽象层RMWROS MiddleWare Interface将上层 API 与底层具体中间件解耦通信中间件层DDS / RTPSFast DDS、Cyclone DDS 等提供实际的数据分发、发现与传输OS 层Linux、Windows、macOS、RTOS乃至裸机提供进程、网络等基础服务ROS 2 支持跨平台运行不再像 ROS 1 那样主要局限于 Linux。库层与抽象层是理解其灵活性的关键rcl提供核心公共功能rclcpp/rclpy是语言绑定rmw则隐藏了底层是 Fast DDS、Cyclone DDS 还是 Zenoh 的差异使应用代码不绑定于特定厂商实现。核心通信基石DDS 与 RMWROS 2 与 ROS 1 最根本的架构分水岭是用去中心化的 DDS 取代了中心化的 Master。DDSData Distribution Service是 OMG 标准化的数据中心化发布/订阅中间件。它通过 Topic、类型系统和QoS在去中心化发现机制下分发数据线上互操作依赖DDSI-RTPS协议。ROS 2 借助 DDS 获得了数据运输、消息序列化以及分布式的节点与话题发现能力。RMW 抽象层是这一设计的关键缓冲带。DDS 规范本身包含众多 QoS 策略RMW 将其中一部分映射为 ROS 2 层面更简洁的 QoS 配置如 default、sensor data 等同时让开发者无需深入 DDS 厂商细节即可使用。默认情况下Fast DDS 是 ROS 2 长期支持版本中最常用的中间件实现之一组织的核心节点与 ROS 图节点是 ROS 2 中的计算单元通常对应一个进程或进程中的一组功能。每个节点通过客户端库与其他节点通信可以发布/订阅话题、提供/调用服务、使用动作并拥有可配置的参数。所有节点及其连接关系共同构成了ROS 图ROS Graph。这是 ROS 2 系统运行时的逻辑视图描述了“谁在和谁通信、通过什么方式通信”。节点之间的连接由底层中间件自动发现完成节点启动后会在同一 ROS 域内广播自身存在并持续通告状态无需任何中心协调者。四种通信模式话题、服务、行动、参数ROS 2 提供了四种标准化的交互模式各自对应不同的应用场景话题Topic是异步、单向的发布/订阅模型适合持续的高频数据流如传感器读数、状态广播。发布者与订阅者相互解耦可以灵活替换。服务Service是同步的请求—响应模型适合原子性的短操作如查询电量、设置参数。客户端发出请求后等待明确的响应但不适合长时间运行或需要中途反馈的任务。行动Action在服务基础上扩展用于长时间、目标导向的任务如“导航到某点”。它内部组合了服务与话题目标通过服务发送反馈通过话题持续流出最终结果通过另一个服务获取。行动支持中途取消和进度监控。参数Parameter是与节点关联的运行时配置允许在不重启进程的情况下读取或修改节点的行为设定。关键补充QoS 与执行器QoS服务质量贯穿所有 DDS 通信。发布端与订阅端的 QoS 设置必须兼容才能建立连接可靠性、历史深度、截止期等策略直接决定了通信的实时性与容错行为。这也是 ROS 2 能够适配从“尽力而为”的传感器流到“可靠送达”的控制信号等不同需求的原因。执行器Executor负责调度节点的回调定时器、订阅回调、服务请求等。rclpy.spin()或rclcpp::spin()启动的事件循环本质上就是在运行执行器没有执行器调度节点不会处理任何到达的消息或事件。Linux基本操作ctrlaltt 打开终端cd 进入目录ls 列出当前目录下的文件mkdir chapt1 创建文件夹touch hello.txt 创建文件nano hello.txt编辑文件内容 ctrlo 保存 ctrlx 推出cat hello.txt 查看文件的内容命令 --help 查看帮助rm hello.txt 删除文件ros2 run --help ros2 run 命令的帮助在linux中安装软件ubuntu 安装.deb安装包程序--sudo dpkg -i vscode.deb 可以在终端输入vscode启动程序sudo apt install git自动脚本安装 ./autorun.sh
返回列表