主题
运动任务与取消
机械臂与夹爪
非阻塞返回 ArmMotion,done 表示任务结束,不保证成功;error 保存失败原因;wait(timeout=None) 成功返回 True。
取消抛 ArmMotionCancelled,执行或等待超时抛 ArmMotionTimeout(也是 TimeoutError),其他执行失败抛 ArmMotionError;停止也失败时以 ExceptionGroup 保留全部错误。等待超时不会取消任务,需 cancel() 或 stop()。
七关节与夹爪任务独立:新命令只替换对应通道,另一通道可以同时运动或保持。完成后持续保持最终目标,已完成任务的 cancel() 不撤销保持;整臂 stop()、失能、急停和断开覆盖两通道。状态快照不能用于确认电机反馈是否持续更新。
升降与底盘
LiftMotion 与 ChassisMotion 同样提供 done、error、wait(timeout=None) 和 cancel()。等待成功返回 True;结束不一定代表成功。执行失败、取消和超时分别使用各组件的 *MotionError、*MotionCancelled 和 *MotionTimeout。
等待超时不会自动取消运动。底盘等待超时后调用 cancel(),再按需 stop();升降停止需要有效位置反馈。完整处理见 底盘相对位移示例。
等待与取消示例
python
from libark.robot.hw1.arm import ArmMotionTimeout
# arm 已连接、使能,target 是经过检查的七维关节目标。
motion = arm.move_joints(target, speed_percent=20, blocking=False)
try:
motion.wait(timeout=5.0)
except ArmMotionTimeout:
motion.cancel()
arm.stop()
raise取消后不能把任务结束解释为到位。停止、失能和急停的行为见 停止与恢复。