控制平面与数据平面
最后更新
Microduck 的进程间通信分成两层,理解这个分层能省掉很多排查时间。
控制平面:Unix socket 上的 JSON-RPC 2.0
所有守护进程通过一套 JSON-RPC 契约通信。这里有一条对使用者很重要的性质:
每一个客户端——手机 App、网页控制台、手柄、你自己写的脚本——发送的是完全相同的调用。
也就是说,你脚本能做的事和官方 App 能做的事,接口上没有区别。没有隐藏的私有接口。
数据平面:传感器流不走控制平面
传感器数据由拥有它的那个守护进程直接发布,消费者订阅那个进程自己的 socket:
- ToF 深度数据 → 订阅
tofd的tof.stream - 手柄原始输入 → 订阅
padd
不经过 robotd 转发。
这对排查的实际影响
想看手柄的原始输入,去 padd,不要在机器人状态流里找——那里没有。robotctl monitor 按 p 打开的就是这条独立的订阅。
同理,ToF 的数据在 tofd。tofd 发布的是传感器视角的原始帧,不假装自己能算出它算不出的几何——要把一帧深度重投影到机器人坐标系,需要结合 robot.state 的关节状态和 kinematics crate 的头部正运动学。
相关
- 系统架构 —— 七个守护进程的完整分工