跳转至
⚙ 开发指南 > SDK > API > 数据结构

运动控制参数(ArmControlOptions)#

ArmControlOptions 是与 P6 目录对应的栏目名称;P7 SDK 没有同名类。P7 将运动选项拆分为 JointMoveOptionsCartesianMoveOptionsEEFMoveOptionsJointWaypointsMoveOptionsCartesianWaypointsMoveOptions 五类可修改 dataclass。模型会检查部分类型和数值范围,但当前控制模式和具体方法 决定字段是否真正发送。对象成功创建并不表示参数组合适合当前机械臂。

选项模型#

类型 使用入口 主要字段组
JointMoveOptions move_joint() 关节 planning、Servo、MIT 与阻塞字段
CartesianMoveOptions 单次笛卡尔 PTP/LIN/CIRCLE 和位姿 Servo 位姿规划、OMPL、seed、碰撞与阻塞字段
EEFMoveOptions move_eef() EEF CSP/MIT 的 effort、torque、增益与阻塞字段
JointWaypointsMoveOptions move_joint_waypoints() 关节逐段规划、融合、seed 和序列完成字段
CartesianWaypointsMoveOptions move_end_pose_waypoints() 笛卡尔逐段规划、融合、seed 和序列完成字段

JointMoveOptions 在 planning、Servo 和 MIT 下读取的字段不同。例如 planning 使用规划类型、缩放和 采样参数,Servo 忽略这些规划字段,MIT 使用 torquekpkd。详细矩阵见 接口总览及各运动规划页面。

使用前检查#

  • 浮点标量与向量元素都应通过 math.isfinite() 检查;当前范围比较不能可靠拒绝 NaN
  • eff、seed、MIT 和 EEF 向量应在发送前检查长度;模型构造阶段不会统一检查。
  • Literal 类型注解不等于完整运行时枚举校验,只传文档列出的 motion_type 和 planner 名称。
  • waypoint 的非空 segments 数量必须等于 len(waypoints) - 1,且各段 sampling_time 一致。
  • timeout_ms 属于运动方法,不是 options 字段,也不等于实际轨迹执行时长。
import math


def require_finite(values: list[float], name: str) -> None:
    if not all(math.isfinite(float(value)) for value in values):
        raise ValueError(f"{name} contains a non-finite value")

P7 规划名称#

单次关节 planning 使用 "ptp""ompl"。单次笛卡尔 PTP 使用 move_end_pose();直线与圆弧 分别使用专用 LIN 和 CIRCLE 方法。笛卡尔 waypoint 段使用 "ptp""lin""ompl"。 具体 OMPL 搜索器通过 ompl_planner_type 选择,不应把 "rrt_connect" 写入 motion_type

请按任务继续阅读 PTP 点到点规划LIN 直线轨迹规划CIRC 圆弧轨迹规划多段轨迹融合规划