外观
踩坑GitHub agilexrobotics/pyagxarm2 个月前
agilex-piper motion_status立即返回0导致动作等待失效
本文由 AI 根据公开内容整理,可能有误,请以原文为准:[Bug] Motion Status Does Not Wait for Motion to Finish(GitHub agilexrobotics/pyagxarm #62)
状态:有绕过办法
问题
使用 pyagxarm SDK 时,发送运动指令后立即调用 robot.get_arm_status() 检查 motion_status == 0 会因状态同步延迟读到旧缓存值,导致等待逻辑瞬间通过而无法阻塞至动作完成。即使固件为 S-V1.8-9 版本仍存在此现象,且命令执行失败时也会错误返回 0。
环境
机型 agilex-piper,固件 S-V1.8-9,硬件 H-V1.2-1,节点 ARM_MC,SDK pyagxarm
解决办法
- 在发送运动指令后、开始轮询
motion_status之前,强制添加time.sleep(0.5)以避开 SDK 状态更新延迟窗口 - 封装等待函数,在延时结束后再以 0.1s 间隔循环调用
robot.get_arm_status()并判断status.msg.motion_status == 0 - 设置超时机制(如 5s),防止因状态异常或执行失败导致死锁
- 注意当前 workaround 仅解决时序问题,若指令本身执行失败,
motion_status仍可能错误返回 0,需额外排查运动失败原因
讨论原作者:@CooperWang0912 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。