跳转至

能力模型

robot_behavior 的设计不是“一个大 trait 解决所有问题”,而是把能力拆成可组合的小 trait。

Trait 分层

graph TD
  Robot --> Joints
  Robot --> EndPoint
  Robot --> MoveTo
  Robot --> MoveTraj
  Robot --> ControlWith
  Joints --> Arm
  EndPoint --> Arm
  MoveTo --> Arm
  MotionSpace --> MoveTo
  MotionSpace --> MoveTraj
  ControlSpace --> ControlWith
  ArmForwardKinematics --> ArmInverseKinematics
  Joints --> ArmInverseKinematics

核心原则

  • 生命周期与能力分离:Robot 表达生命周期、原生状态和控制周期;具体运动能力由其他 trait 扩展。
  • 模型参数是关联常量:关节限位、末端限位、DH 参数都属于机器人型号。
  • 命令语义由类型表达:JointSpace<N>、TorqueControl<N> 这类 marker 类型用于消除运行时分支歧义。
  • 用户入口由 blanket trait 提供:Motion / Control 不需要驱动实现,只负责把调用转发到具体 MoveTo / ControlWith impl。

Root re-export

lib.rs 会把主要公共项重导出到 crate 根:

use robot_behavior::{Robot, Joints, EndPoint, Arm, Pose, JointSpace};

也提供 robot_behavior::behavior::* 作为更窄的行为 prelude,供应用侧导入;驱动实现侧使用 robot_behavior::driver::*。

与旧接口的区别

旧文档中的 MotionType、ControlType、RobotBehavior、ArmBehavior 属于旧模型或 FFI 迁移残留,不是当前主线 Rust API。新文档统一使用:

  • Robot
  • MoveTo<S> / MoveTraj<S>
  • Motion
  • ControlWith<S> / Control
  • Arm<N>