一只鸭的
系统栈
七个常驻 daemon、一个 CLI、一条 50 Hz 控制循环。分清谁拥有状态,才能在不破坏安全边界的前提下开发。
GAMEPADBLE / USB
PHONEBLE
LAPTOPSSH
REMOTE PEERWebRTC
JSON-RPC 2.0 / NDJSONUnix socket control plane · intents, config, status, events
robotd50 Hz controlmotor bussafety authority
configdWi-Fi / identitypairing / power
updaterdverify / swaphealth / rollback
mediadcamera / audioWebRTC / features
tofd8×8 depthpublisher only
UART15 motors + IMU
01 / OWNERSHIP
单一写入者,明确故障边界
每份状态只有一个 owner。btd、padd 和 mediad 是传输或媒体入口,不拥有机器人行为。
服务拥有接口设计要点
robotd电机、IMU、策略、安全
/run/robotd.sock50 Hz,唯一电机总线写入者configdWi-Fi、身份、配对、电源
/run/configd.sockrobotd 故障时仍可用updaterd验签、安装、切换、回滚
/run/updaterd.sock健康门禁与自动恢复btdBLE 传输适配
BLE GATT不拥有机器人状态padd游戏手柄输入
/run/padd/pad.sock把输入转为 robot intentmediad相机、音频、WebRTC
:8080 / :8443媒体与远程 API 前门tofd8×8 ToF 深度
/run/tofd/tof.sock只发布,不读取其他服务robotctl诊断与控制 CLI
全部 socket坏掉时也要能工作01
robotd 是唯一安全权威
客户端发送意图,不直接下发电机位置。关节、温度、跌倒与安全姿态限制不能被远端绕过。
02
控制循环不等待其他服务
跨服务感知采用缓存的最新值。媒体或深度服务停滞时,运动控制继续保持确定性。
03
恢复路径必须独立
configd、updaterd 和 btd 在 robotd 无法启动时仍工作,保证网络重配和回滚入口存在。
02 / SAFE UPDATE
发布是切换,不是覆盖
1构建并签名 release
2验签与解包
3切换 current
4robot.health
5健康则保留,失败则回滚