外观
踩坑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环境
解决办法
- 使用
franka_robot_state_broadcaster替代直接访问底层状态,参考官方model_example_controller.hpp配置方式。 - 在控制器中声明
std::unique_ptr<franka_semantic_components::FrankaRobotState>并通过构造函数传入arm_id + "/robot_state"与robot_description_完成实例化。 - 调用
initialize_robot_state_msg(franka_robot_state_msg_)初始化消息结构体,确保字段内存布局正确。 - 在
on_activate阶段执行assign_loaned_state_interfaces(state_interfaces_)绑定硬件状态接口,避免空指针或未同步数据。 - 在控制循环中使用 `get_values_as_message(franka_…
讨论原作者:@ergo-zyh 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。