潍坊网站建设优化排名,建站市场分析,网页游戏开服表怎么缷载,企业管理模式文章目录 1.下载trac_ik的源码2.安装 NLopt library3.编译源码4.使用4.1.已经配置好的项目4.2.新使用moveIt_setup_assistant进行配置时 在ros1moveit1中#xff0c;使用trac_ik是很简单的一件事情#xff1a;【TRAC-IK Kinematics Solver】 但是在Ros2中#xff0c;无论Mov… 文章目录 1.下载trac_ik的源码2.安装 NLopt library3.编译源码4.使用4.1.已经配置好的项目4.2.新使用moveIt_setup_assistant进行配置时 在ros1moveit1中使用trac_ik是很简单的一件事情【TRAC-IK Kinematics Solver】 但是在Ros2中无论MoveIt2也好还是trac_ik也好都没有提供标准的trac_ik集成使用方法。 不过有个大神他基于trac_ik的源码实现了功能【aprotyas / trac_ik】 使用起来也挺方便
1.下载trac_ik的源码
将【aprotyas /trac_ik】的源码压缩包下载下来放到一个文件夹中。我这里放在trac_ik文件夹中。 然后将解压后的东西放在src文件夹中。
2.安装 NLopt library
安装过程参考【 stevengj / nlopt 】
3.编译源码
colcon build在编译时出现这个问题 ‘const IKCallbackFn’ {aka ‘const class std::functionvoid(const geometry_msgs::msg::Pose_std::allocator , const std::vectordouble, std::allocator , moveit_msgs::msg::MoveItErrorCodes_std::allocator )’} has no member named ‘empty’; did you mean ‘_M_empty’? 原因据chatgpt说是std::function的empty()函数是在c14才引入的而我目前使用的貌似是c11的std库。 真正的原因作者回复了【 Ros2 plugin #34 】 主要是之前的库是boot::function,现在改成了std::function。因此需要改一下 - if (!solution_callback.empty()) if (solution_callback)4.使用
到我们自己的moveit项目中source一下trac_ik的setup.bash
4.1.已经配置好的项目
然后按照这里在我们之前用moveit_setup_assistant创建的配置文件中将原来的 kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin 更改为 kinematics_solver: trac_ik_kinematics_plugin/TRAC_IKKinematicsPlugin
4.2.新使用moveIt_setup_assistant进行配置时 最后对我们自己的moveit项目colcon build一下然后就可以使用trac_ik来规划路径了。