主题
笛卡尔运动
CartesianPose 是简单位姿数据:x_m / y_m / z_m(m)和 roll_rad / pitch_rad / yaw_rad(rad),六项均必填。位姿相对 body_base_link,旋转为 Rz(yaw) @ Ry(pitch) @ Rx(roll);左右末端为 L_end_sphere / R_end_sphere。不包含底盘里程计、升降高度或手指运动。
当前位姿与目标
python
current = arm.get_end_pose()
target = current.model_copy(update={"z_m": current.z_m + 0.005})
arm.move_to_pose(target, speed_percent=20, mode="pos_vel")
print(arm.get_end_pose())运动接口
arm.move_to_pose(pose, speed_percent=30, mode=None, blocking=True) 接收 CartesianPose,可用 pose= 关键字传入目标;mode 支持 "mit" / "pos_vel",省略使用交付默认值,仅作用于臂关节。其阻塞/任务返回语义与 move_joints() 一致,夹爪不参与。
dual_arm.move_to_pose(left_pose, right_pose, speed_percent=30, mode=None, blocking=True) 同样接收两个简单位姿。两侧先完成规划和检查,再用共同时间轴执行;任一侧规划失败不启动该次双臂运动。
arm.move_to_pose_linear(pose, speed_percent=30, mode=None, blocking=True) 明确指定末端位置直线路径;姿态按最短旋转平滑过渡。dual_arm.move_to_pose_linear(left_pose, right_pose, speed_percent=30, mode=None, blocking=True) 为双臂对应接口,先完成两侧规划再共同执行,夹爪不参与。参数单位和任务返回语义与 move_to_pose() 相同,不提供圆滑过渡(blend)参数。直线路径由离散轨迹近似执行,实际路径可能存在误差。需要直线路径时使用 move_to_pose_linear();move_to_pose() 在位置和姿态同时变化时不保证位置路径为直线。
plan_to_pose() 仅规划,不切模式、不发送运动,参数与数据结果见进阶控制。无碰撞检测;软件限位和小幅目标不能替代工作空间检查。推荐末端示例。