Skip to content

踩坑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

解决办法 ​

  1. 确认当前libfranka版本未原生支持异步控制期间读取RobotState,避免在主线程继续调用readOnce以防阻塞。
  2. 修改libfranka源码中TargetFeedback结构体定义,手动添加franka::RobotState类型成员变量用于承载本体状态。
  3. 在异步控制回调内部获取当前RobotState,并将其赋值给扩展后的TargetFeedback结构体实例一并返回。
  4. 上层业务通过getTargetFeedback接口读取扩展字段,间接获取异步控制循环中的实时机器人状态数据。
  5. 注意此方法为官方维护者确认的临时绕过方案,需自行维护SDK补丁,待后续官方正式更新接口后迁移。

讨论原作者:@ChloeZ427 等,版权归原作者所有。

来源

本页事实对应的公开页面,以原文为准。

  1. GitHub frankaemika/libfranka #220:Cannot retrieve robot state via readOnce() while using AsyncPositionControlHandler访问 2026-10-23