Skip to content

踩坑GitHub frankaemika/franka_ros24 个月前

franka_ros2获取笛卡尔状态触发cartesian_position_motion_gene。 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:How to get current cartesian velocity and cartesian acceleration in franka_ros2_example_controllers(GitHub frankaemika/franka_ros2 #187)

状态:有绕过办法

问题 ​

用户在franka_ros2自定义笛卡尔控制器中使用franka_semantic_components::FrankaRobotState获取当前末端位姿o_t_ee时,触发libfranka异常:motion aborted by reflex! ["cartesian_position_motion_generator_start_pose_invalid"]。

环境 ​

Franka FR3机器人,franka_ros2 humble分支,franka_example_controllers,franka_semantic_components,Ubuntu ROS2 Humble环境

解决办法 ​

  1. 使用 franka_robot_state_broadcaster 替代直接访问底层状态,参考官方model_example_controller.hpp配置方式。
  2. 在控制器中声明 std::unique_ptr<franka_semantic_components::FrankaRobotState> 并通过构造函数传入 arm_id + "/robot_state" 与 robot_description_ 完成实例化。
  3. 调用 initialize_robot_state_msg(franka_robot_state_msg_) 初始化消息结构体,确保字段内存布局正确。
  4. 在 on_activate 阶段执行 assign_loaned_state_interfaces(state_interfaces_) 绑定硬件状态接口,避免空指针或未同步数据。
  5. 在控制循环中使用 `get_values_as_message(franka_…

讨论原作者:@ergo-zyh 等,版权归原作者所有。

来源

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

  1. GitHub frankaemika/franka_ros2 #187:How to get current cartesian velocity and cartesian acceleration in franka_ros2_example_controllers访问 2026-10-23