外观
踩坑GitHub frankaemika/libfranka2 个月前
libfranka AsyncPositionControlHandler下readOnce阻塞无法。
本文由 AI 根据公开内容整理,可能有误,请以原文为准:Cannot retrieve robot state via readOnce() while using AsyncPositionControlHandler(GitHub frankaemika/libfranka #220)
状态:有绕过办法
问题
在Franka Research 3上使用libfranka 0.18.2的AsyncPositionControlHandler进行异步位置控制时,调用robot.readOnce()会阻塞或返回无效数据,导致无法在控制执行期间获取关节位置、速度及外部力矩等实时RobotState,且现有getTargetFeedback接口仅返回状态码与错误信息,不包含本体状态数据。
环境
机型:Franka Research 3;系统:Ubuntu 20.04;SDK:libfranka 0.18.2;控制模式:AsyncPositionControlHandler
解决办法
- 确认当前libfranka版本未原生支持异步控制期间读取RobotState,避免在主线程继续调用readOnce以防阻塞。
- 修改libfranka源码中TargetFeedback结构体定义,手动添加franka::RobotState类型成员变量用于承载本体状态。
- 在异步控制回调内部获取当前RobotState,并将其赋值给扩展后的TargetFeedback结构体实例一并返回。
- 上层业务通过getTargetFeedback接口读取扩展字段,间接获取异步控制循环中的实时机器人状态数据。
- 注意此方法为官方维护者确认的临时绕过方案,需自行维护SDK补丁,待后续官方正式更新接口后迁移。
讨论原作者:@ChloeZ427 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。