⚙ 开发指南
> SDK
> 概念指南
> 运动规划原理
LIN 直线轨迹规划#
LIN 约束工具中心点从显式起点沿笛卡尔直线到达目标,适合插入、接近和退出等必须控制路径形状的
任务。P7 使用专用接口 move_end_pose_linear(),而不是关节目标中的 motion_type="lin"。
接口与位姿#
client.move_end_pose_linear(
start: CartesianPose,
target: CartesianPose,
options: CartesianMoveOptions,
timeout_ms: int = 1000,
) -> bool
start 和 target 的位置均相对 base_link,单位为 m;姿态为 (qx, qy, qz, qw) 顺序的单位
四元数。start 必须与调用时的实际末端位姿一致。SDK 不会比较起点与反馈,也不会自动纠正不一致的
起点。
运动前检查#
- 读取当前末端位姿;状态缺失、过期或读取后机械臂发生移动时,不发送请求。
- 检查位置和四元数的长度、有限值及四元数范数。
- 取得控制权,切换到
Controller.planning_control,并确认 FSM 为PLANNING_CONTROL。 - 确认直线路径中间同样满足 IK、关节限位和碰撞条件。
- 为规划和执行准备足够的
timeout_ms,并明确异常停止流程。
LIN 固定使用直线规划,options.motion_type 和 options.circ_is_center 不生效。速度与加速度缩放、
sampling_time、allow_planning_time、seed、碰撞选项和 blocking 的定义见
运动控制参数(ArmControlOptions)。
失败后不要自动改用 PTP
直线终点可达不代表整段直线可规划。遇到奇异、关节限位、IK 不连续或碰撞失败时,改用 PTP 会 改变 TCP 路径;只有任务明确允许并重新完成路径评估后才能更换规划方式。
运动入口与返回行为见API 接口总览。