多层数据采集
结合应用埋点、ROS 2 原生统计与 tracing,记录消息发布、接收和回调执行,形成可以关联的通信观测记录。
从通信到应用,构建机器人开发能力
五个递进式项目,一条完整的工程实践路径。
从看见通信问题,到理解中间件底层,再到完成移动机器人业务,让每一步都有可追踪的证据与可落地的成果。
核心实战项目
统一技术体系
从问题到应用
OBSERVE. UNDERSTAND. BUILD.LEARNING PATH · 递进式学习路线
以实际问题为起点,在统一的 ROS 2 技术体系中逐步深入,最终把工程方法用于机器人业务。
00 · 项目概览
从可观测平台到移动机器人应用,建立能定位、能解释、能实现的工程能力。
让通信过程可见,用数据而不是猜测定位问题。
复现瓶颈、修复代码,让每一次优化都有证据。
在可复现的条件下比较机制,不做脱离配置的排名。
追踪一条消息的完整代码路径,理解可靠性的边界。
从仿真走向业务,让前四个项目的方法真正落地。
01 · 看见问题
项目目标 / PROJECT GOAL
搭建一套机器人通信与性能分析平台,通过应用埋点、ROS 2 原生统计和 tracing,记录消息发布、接收与回调执行过程,分析端到端延迟、回调耗时、消息年龄、序号缺口及 QoS 事件,并生成可视化报告。
工程原则序号缺口是观测现象,不等于已确认的队列丢弃。
关联时间记录 · 分析端到端延迟
观测结构示意 · 指标由实际采集数据计算
结合应用埋点、ROS 2 原生统计与 tracing,记录消息发布、接收和回调执行,形成可以关联的通信观测记录。
分析端到端延迟、回调耗时、消息年龄、序号缺口及 QoS 事件,用可视化报告呈现通信与执行特征。
区分明确的队列丢弃、未完成消息和原因未知的消息缺失,不将序号缺口直接等同于某一层的丢包。
辨识哪些通信阶段可以直接测量,哪些阶段缺少证据、需要进一步增加探针,避免超出数据支持范围的归因。
消息与回调观测记录、关键指标可视化报告、消息缺失分类结果。
学会用数据定位问题,理解可测量范围和证据边界,为后续性能诊断建立可靠基线。
02 · 解决问题
项目目标 / PROJECT GOAL
围绕机器人开发中的典型性能问题,提供“故障复现—数据采集—原因分析—代码修复—效果对比”的完整实验流程。覆盖慢回调阻塞、数据过载、队列积压、锁竞争、大数据复制、带宽压力、同步日志、时间戳与 TF 对齐、QoS 不兼容等场景,并结合 Executor、Callback Group 和组件通信开展优化。
工程原则优化不只是更快,还需要说明数据与资源付出了什么代价。
用数据验证每一次修复
实验闭环示意 · 在相同条件下对比优化效果
复现慢回调阻塞与锁竞争,结合 Executor 和 Callback Group 分析调度、并发和共享资源对处理过程的影响。
覆盖数据过载、队列积压、大数据复制、带宽压力和同步日志,结合组件通信开展针对性优化。
分析时间戳与 TF 对齐、QoS 不兼容问题,区分性能瓶颈与配置或数据一致性导致的异常。
从故障复现到代码修复形成完整实验闭环,解释优化对实时性、数据完整性和资源消耗的影响,而非只看单一速度指标。
可复现的性能故障实验、修复代码、优化前后的数据对比与权衡说明。
能够判断性能瓶颈,选择有针对性的优化方法,并解释实时性、数据完整性与资源消耗之间的权衡。
03 · 对比通信方案
项目目标 / PROJECT GOAL
搭建可复现的通信基准框架,对 TCP、Unix Socket、自研中间件,以及 ROS 2 下的 Fast DDS、Cyclone DDS、Zenoh RMW 和原生 Zenoh 进行分层测试与比较。通过预热、重复实验、载荷变化和原始样本记录,分析 RTT、尾延迟、超时与交付情况;在支持的适配器上开展持续负载、多订阅者和慢消费者实验。
工程原则先说明层级、配置与测试条件,再比较性能数字。
层级分类示意 · 不表示性能排名或能力完全相同
覆盖 TCP、Unix Socket、自研中间件、Fast DDS、Cyclone DDS、Zenoh RMW 与原生 Zenoh,保留各层语义与配置的区别。
通过预热、重复实验、载荷变化和原始样本记录减少偶然性,让测试条件与结果可以回溯。
分析 RTT、尾延迟、超时和消息交付情况,同时关注低延迟与数据交付之间的关系。
在支持的适配器上进行持续负载、多订阅者和慢消费者实验,理解适配能力与方案机制对结果的影响。
分层通信基准框架、原始样本记录、测试配置与结果分析报告。
理解不同通信方案的机制与适用条件,能够解释测试结果,避免把不同配置下的数字直接当作性能排名。
04 · 理解底层实现
项目目标 / PROJECT GOAL
使用 C++17 实现一套可运行的发布订阅通信系统,包括 Broker、客户端 SDK、命令行工具和 Python 协议客户端。围绕二进制协议、TCP 分帧、主题订阅、消息分发、有界队列、慢消费者处理、心跳、断线重连及自动重订阅逐步展开,并通过 ROS 2 网关连接业务节点。
工程原则可靠性不是无限缓存:资源上限和丢弃策略必须清晰。
自研通信系统 ↔ ROS 2 网关 ↔ 业务节点
系统结构示意 · 网关连接自研系统与 ROS 2 业务节点
设计二进制协议并实现 TCP 分帧,建立发布订阅系统中消息编码、传输与解析的基础路径。
实现 Broker、主题订阅和消息分发,提供客户端 SDK、命令行工具与 Python 协议客户端。
通过有界队列与慢消费者处理约束资源使用,理解通信可靠性、资源上限与消息丢弃策略之间的关系。
实现心跳、断线重连和自动重订阅,通过 ROS 2 网关连接业务节点,形成可运行的跨系统通信链路。
可运行的 Broker、C++17 客户端 SDK、命令行工具、Python 协议客户端与 ROS 2 网关。
能够追踪一条消息从发送到接收的完整代码路径,理解可靠性、资源上限与丢弃策略的关系。
05 · 完成机器人应用
项目目标 / PROJECT GOAL
以差速移动机器人为载体,完成从仿真到业务任务的应用开发:搭建机器人模型与 TF 坐标树,接入传感器和底盘控制,完成建图、定位、路径规划、导航避障及任务调度。项目将前四个项目的方法用于实际业务,最终实现定点导航、多点巡检、状态监控和异常恢复。
工程原则把观测、诊断、通信测试与底层实现带回真实的机器人任务。
巡检路径概念示意 · 非真实建图或导航实验结果
搭建差速机器人模型与 TF 坐标树,接入传感器和底盘控制,打通仿真与应用开发的基础链路。
完成建图、定位、路径规划和导航避障,理解各模块在 ROS 2 应用架构中的协作关系。
开展任务调度,实现定点导航、多点巡检、状态监控和异常恢复,形成基础移动机器人业务。
通过可观测平台定位导航卡顿,通过性能优化改善数据处理,通过通信测试选择合适配置,将前四个项目的方法用于实际业务。
差速移动机器人应用,包含定点导航、多点巡检、状态监控与异常恢复。
理解 ROS 2 应用架构,能够独立开发和调试基础移动机器人业务,将观测、优化、通信测试与底层理解贯通起来。
06 · 技术总结
贯通观测、诊断、通信、底层实现与应用开发。五个项目不是孤立练习,而是一套相互支撑的机器人工程方法。
ROS 2 · 业务节点 · 组件通信 · TF
应用埋点 · 原生统计 · Tracing · QoS 事件
Executor · Callback Group · 锁与队列
TCP · Unix Socket · Fast DDS · Cyclone DDS · Zenoh
C++17 · Broker · Python · 二进制协议 · ROS 2 网关
差速底盘 · 建图定位 · 规划避障 · 巡检恢复
用可观测数据定位问题,用实验验证优化,用分层测试理解通信方案,
再通过底层实现和综合应用,把知识转化为可运行、可调试的机器人业务。