外观
踩坑GitHub frankaemika/franka_ros24 个月前
FrankaRobotState获取惯性矩阵等状态为Eigen类型繁琐
本文由 AI 根据公开内容整理,可能有误,请以原文为准:[Question] Accessing Robot States (e.g., Inertia Matrix) as Eigen Types from
FrankaRobotState(GitHub frankaemika/franka_ros2 #125)
状态:有绕过办法
问题
在自定义控制器中通过get_values_as_message()获取franka_msgs::msg::FrankaRobotState后,需逐字段手动赋值构造Eigen::MatrixXd(如inertia_total),代码冗长易错。相比FrankaRobotModel提供getMassMatrix().data()可直接Map为Eigen矩阵,状态类缺乏类似便捷接口。
环境
franka_ros2框架,Franka机器人,ROS2环境,自定义控制器开发场景
解决办法
- 使用franka_ros2提供的robot state语义组件(semantic component)直接访问机器人状态变量,避免手动解析嵌套消息结构
- 订阅franka_robot_state_broadcaster发布的话题获取状态数据,该broadcaster已对原始消息进行结构化处理,便于转换为Eigen等数值类型
- 参考franka_example_controllers中的实现模式,利用语义组件接口替代get_values_as_message()的手动字段提取方式
讨论原作者:@ozhanozen 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。