MOVEIT配置IKFast运动学插件-安装注意事项-亲自安装过程介绍-超级详细-亲测

本文详细介绍了如何在ROS Kinetic中配置MoveIt!的IKFast运动学插件,包括安装依赖、OpenSceneGraph、sympy、OpenRAVE等,重点解决了在生成IKFastcpp源代码文件时遇到的问题,如环境变量设置错误导致的路径找不到问题,并提供了完整的配置和使用步骤。

在这里插入图片描述
在这里插入图片描述


前言

提示:这里列出了一些参考网站章节:
第一个就是moveit!官网的安装教程:链接: moveit!IKFast配置 官网教程.


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题1

示例:生成IKFast cpp源代码文件时可能会出现:
“IKFast Plugin Generator
ERROR: can’t find package arm_moveit_config”


解决方法:
在这里插入图片描述
可以看到在src目录下执行命令3,会出现错误
需要cd 到工程目录下,执行source devel/setup.bash命令,
然后重新使用命令3
就正常生成插件源代码

二、配置过程

1.安装依赖程序和库

sudo apt-get install cmake g++ git ipython minizip python-dev python-h5py python-numpy python-scipy qt4-dev-tools
sudo apt-get install libassimp-dev libavcodec-dev libavformat-dev libavformat-dev libboost-all-dev libboost-date-time-dev libbullet-dev libfaac-dev libglew-dev libgsm1-dev liblapack-dev liblog4cxx-dev libmpfr-dev libode-dev libogg-dev libpcrecpp0v5 libpcre3-dev libqhull-dev libqt4-dev libsoqt-dev-common libsoqt4-dev libswscale-dev libswscale-dev libvorbis-dev libx264-dev libxml2-dev libxvidcore-dev

2.安装OpenSceneGraph

sudo apt-get install libcairo2-dev libjasper-dev libpoppler-glib-dev libsdl2-dev libtiff5-dev libxrandr-dev
git clone https://github.com/openscenegraph/OpenSceneGraph.git --branch OpenSceneGraph-3.4
cd OpenSceneGraph
mkdir build; cd build
cmake .. -DDESIRED_QT_VERSION=4
make -j$(nproc)
sudo make install

注意:这个地址无所谓,在home目录下就可以,不需要在指定目录下操作

3.安装sympy 0.7.1

pip install --upgrade --user sympy==0.7.1

4.删除mpmath

sudo apt remove python-mpmath

4.安装Moveit!IKFast

sudo apt-get install ros-kinetic-moveit-kinematics

4.安装OpenRAVE

git clone --branch latest_stable https://github.com/rdiankov/openrave.git
cd openrave && mkdir build && cd build
cmake -DODE_USE_MULTITHREAD=ON -DOSG_DIR=/usr/local/lib64/ ..
make -j$(nproc)
sudo make install

注意:不建议采用 sudo apt-get install ros-kinetic-openrave,会一并安装 mpmath,导致后面生成 IKFAET文件 失败,因此采用源码安装的方式。

5.配置IKFast插件

提前定义参数可以大大节约时间,类似定义函数的参数,为了节省安装时间和减少麻烦
MYROBOT_NAME(机器人名字) - 在URDF文件中你的机器人的名字
PLANNING_GROUP(规划组名字) - 引用 SRDF and kinematics.yaml中的名称作为解算器用于规划组名称
MOVEIT_IK_PLUGIN_PKG (插件包名字)- 你需要创建的新的包的名称
IKFAST_OUTPUT_PATH(IKFAST输出路径) - 你生成的IKFasts cpp文件的路径

export MYROBOT_NAME="arm"
export IKFAST_PRECISION="5"//保留精度小数点后5位
export PLANNING_GROUP="arm"
export BASE_LINK="0"//起始关节,按照生成的关节列表选择
export EEF_LINK="8"//末端关节,按照生成的关节列表选择
export FREE_INDEX="1"//若关节数大于6需设置一自由关节
export IKFAST_OUTPUT_PATH='PWD'/ikfast61_"$PLANNING_GROUP".cpp

这里需要注意PWD,我自己测试系统是ubuntu 16.04 LTS,按照教程中的是:

注意这里/
注意这里/
注意这里/
注意这里/
注意这里/
export IKFAST_OUTPUT_PATH='pwd'/ikfast61_"$PLANNING_GROUP".cpp
注意这里/
注意这里/
注意这里/
注意这里/
注意这里/

一直提示找不到路径,结果编译一次20分钟,硬是编译了7次,才找到问题在哪里,最后是自己获取到文件路径,然后把这个路径直接写到export列表中,我是这样解决的,但是结束时,我查看了export -p命令,发现列表中是大写的PWD,不是小写的pwd,MMP,心里一万头草泥马奔腾啊,这里是个大坑,坑死我了。
在这里插入图片描述
注意到没有,大写的PWD,不是小写的pwd




在这里插入图片描述

设置机器人名字

export MYROBOT_NAME="arm"

xacro模型转为urdf模型

rosrun xacro xacro --inorder -o "$MYROBOT_NAME".urdf "$MYROBOT_NAME".xacro

urdf模型转为dae格式

rosrun collada_urdf urdf_to_collada "$MYROBOT_NAME".urdf "$MYROBOT_NAME".dae

备份dae模型

cp "$MYROBOT_NAME".dae "$MYROBOT_NAME".backup.dae

设置精度

export IKFAST_PRECISION="5"

生成IKFast插件

rosrun moveit_kinematics round_collada_numbers.py "$MYROBOT_NAME".dae "$MYROBOT_NAME".dae "$IKFAST_PRECISION"

查看模型关节数据

openrave-robot.py "$MYROBOT_NAME".dae --info links

输出下图所示
在这里插入图片描述
查看模型三维结构

openrave "$MYROBOT_NAME".dae

这三维图太TM丑了,好在能用
在这里插入图片描述
选择IK项,默认Transform6D
在这里插入图片描述
设置运动规划组

export PLANNING_GROUP="arm"

设置运动规划的关节组

export BASE_LINK="0"
export EEF_LINK="7"

若关节数量大于6需设置一自由关节,若无则无需设置

export FREE_INDEX="1"
设置IKFAST输出路径-大坑TNND,气死我了,参考最开始的介绍,下面的代码是错误的
export IKFAST_OUTPUT_PATH='pwd'/ikfast61_"$PLANNING_GROUP".cpp

生成IKFAST cpp源代码文件

6轴

python 'openrave-config --python-dir'/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=transform6d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --savefile="$IKFAST_OUTPUT_PATH"

这里建议还是先获取"openrave-config --python-dir"的路径,再替换到命令里面就可以
7轴

python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=transform6d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --freeindex="$FREE_INDEX" --savefile="$IKFAST_OUTPUT_PATH"

这里建议还是先获取"openrave-config --python-dir"的路径,再替换到命令里面就可以

大概需要10-20分钟左右,耐性等待一下
生成IKFAST插件

export MOVEIT_IK_PLUGIN_PKG="$MYROBOT_NAME"_ikfast_"$PLANNING_GROUP"_plugin
cd ~/catkin_ws/src
catkin_create_pkg "$MOVEIT_IK_PLUGIN_PKG"
cd ..
source devel/setup.bash
rosrun moveit_kinematics create_ikfast_moveit_plugin.py "$MYROBOT_NAME" "$PLANNING_GROUP" "$MOVEIT_IK_PLUGIN_PKG" "$IKFAST_OUTPUT_PATH"

6.使用IKFast插件

修改选择的运动学名称为IKFast

cd到"$MYROBOT_NAME"_moveit_config功能包的config文件目录下,修改该目录下的kinematics.yaml文件,修改内容如下:
在这里插入图片描述
利用"#MYROBOT_NAME"_moveit_config测试

roslaunch arm_moveit_config demo.launch

启动Rviz通过MotionPlanning进行测试
在这里插入图片描述

三、参考

链接: http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html.
链接: https://blog.youkuaiyun.com/Kalenee/article/details/80740258.

### 更改 MoveIt 中的运动学插件IKFAST 为了在 MoveIt 中更改默认的运动学求解器为 IKFast 运动学插件,需遵循一系列配置操作。这些操作涉及创建和集成自定义的 IKFast 插件到现有的机器人设置中。 #### 创建 IKFast 插件包 首先,在 ROS 工作空间内通过 `moveit_kinematics` 软件包中的脚本生成针对特定机器人的 IKFast 解算器 C++ 文件。此过程依赖于 OpenRAVE 或 PyBullet 来计算逆向运动学解决方案并导出至源码形式[^1]。 ```bash rosrun moveit_kinematics create_ikfast_moveit_plugin.py \ --output_directory=/path/to/output/directory/ ``` 上述命令会基于指定的基础链节(base link) 和末端执行器链节(end-effector link),以及输出目录路径来构建所需的 IKFast 移植文件。 #### 修改 MoveIt 配置 完成 IKFast 插件编译之后,下一步是在 MoveIt 的 SRDF (Semantic Robot Description Format) 文件里声明新的运动学求解器。这通常位于 `<your_robot>/config/kinematics.yaml` 下: ```yaml arm: kinematics_solver: ikfast_kinematics_plugin/IkSolver kinematics_solver_search_resolution: 0.005 kinematics_solver_timeout: 0.05 kinematics_solver_attempts: 3 ``` 这里指定了使用 `IkSolver` 类作为 `kinematics_solver` 参数值,并调整了一些性能相关的选项以优化查询速度与精度[^2]。 对于控制器部分,则保持原有配置不变即可;即继续沿用虚拟控制器参数文件 `fake_controllers.yaml` 所描述的内容,因为这部分主要影响的是关节控制而非运动规划层面的选择。 最后一步是确保新添加的 IKFast 库被正确链接到了 MoveIt 环境当中。可以通过更新 Catkin 编译系统的 `CMakeLists.txt` 文件实现这一点,加入如下指令以便让系统识别新增加的库位置: ```cmake find_package(ikfast_kinematics_plugin REQUIRED) catkin_package( ... CATKIN_DEPENDS ... ikfast_kinematics_plugin ) include_directories(${ikfast_kinematics_plugin_INCLUDE_DIRS}) target_link_libraries(your_move_group_node ${ikfast_kinematics_plugin_LIBRARIES}) ``` 以上步骤完成后重新编译整个工作区 (`catkin_make`) 即可使改动生效。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值