MoveIt:生成属于自己的ikfast逆运动学插件,最全搬运工及个人解决方案

了解IKFAST(OpenRAVE官网)

OpenRAVE | ikfast Module | OpenRAVE DocumentationOpen Robotics Automation Virtual Environmenticon-default.png?t=N7T8http://openrave.org/docs/latest_stable/openravepy/ikfast/

生成前注意事项!!!

这篇文章初衷是怕自己以后忘了生成的操作,所以代码不基于项目,即 不可粘贴即用,仅提及包功能及函数使用方法,需要对ROS有一定了解,时间紧张,不好意思

由于配置环境会下载很多库,如果失败后续可能会用不到并且占用空间,因此强烈建议配置前设置系统快照,便于退回初始状态

生成方法一:

须先安装openrave环境,因为多年没人维护,配置非常困难,下面大佬通过脚本配置环境,但对我个人无效,可参考

方法就按readme里依次执行四个脚本,注意版本支持

GitHub - crigroup/openrave-installation: Bash scripts to install OpenRAVE from sourceBash scripts to install OpenRAVE from source. Contribute to crigroup/openrave-installation development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/crigroup/openrave-installation

生成方法二:

如果方法一不成功,试试鱼香ROS 鱼哥的DOCKER镜像

Moveit,IkFast运动学插件配置,最详细,没有之一 | 鱼香ROSMoveit,IkFast运动学插件配置,最详细,没有之一 之前做好了IKFast配置的镜像,并没有在实际的机械臂上使用,本篇文章,旨在带你一起一步步给你的机械臂配置好ikfast插件. 本文相关资料: 系统平台: Ubuntu20.04 ROS版本: Noetic 机械臂开源库链接: https://github.com/Elite-Robots/ROS 1.安装Docker拉取代码及镜像 1.1 安装Docker 打开终端,输入一键安装代码,接着选择 一键安装Docker wget http://...icon-default.png?t=N7T8https://fishros.org.cn/forum/topic/680/moveit-ikfast%E8%BF%90%E5%8A%A8%E5%AD%A6%E6%8F%92%E4%BB%B6%E9%85%8D%E7%BD%AE-%E6%9C%80%E8%AF%A6%E7%BB%86-%E6%B2%A1%E6%9C%89%E4%B9%8B%E4%B8%80这个方法我个人离成功仅一步之遥,在生成cpp代码时提示dae文件未加载进去

可能有地方没抄对,总之值得参考,第三个方法也是结合这一方法

生成方法三:

这个方法我摸索很多次成功了,感谢上面鱼香ROS中鱼哥的镜像及评论区中乐于助人的大佬提供的命令及网址及工具

第一步:安装DOCKER

wget http://fishros.com/install -O fishros && . fishros

第二步:在urdf文件所在工作空间运行DOCKER镜像

  1. 如果有sw模型,但没对应urdf文件:参考以下视频导出urdfSolidWorks模型导出urdf (古月居老师)_哔哩哔哩_bilibili

  2. 如果已有urdf文件,退回到urdf的工作空间,执行以下代码

    xhost + && sudo docker run  -it --rm  -v /tmp/.X11-unix:/tmp/.X11-unix --device /dev/snd -e DISPLAY=unix$DISPLAY  -v `pwd`:`pwd`  -w `pwd` fishros2/openrave

    其中--rm选项是指在容器退出后自动删除,防止文件堆积,按需求删留,其他默认即可

第三步:在DOCKER中安装依赖

依次执行以下命令,来安装rosdepc,一定要给sudo权限,在sudo apt update时有概率失败,多次尝试即可(还不行就换个时间段,先干别的)

sudo apt update
sudo apt install python3-pip
sudo pip3 install elirobots transforms3d pytest rosdepc
sudo rosdepc init
sudo rosdepc update

rosdepc更新提示成功后,进行依赖检查

rosdepc install --from-path src --ignore-src -y -r

此时会列出编译此工作空间需要但目前没有的依赖,依次复制所有依赖包,以空格间隔依次加在下面命令之后

sudo apt-get install 

安装成功后再次检查依赖,会发现依赖已全部安装,可以进行下一步

rosdepc install --from-path src --ignore-src -y -r

第四步:编译工作空间

执行以下命令,编译工作空间,如果提示缺少依赖包(撑死一两个),安装后重新编译即可

catkin_make

编译成功后,source环境

source devel/setup.bash

第五步:生成机械臂dae描述文件

在这个DOCKER镜像的终端中cd到urdf所在文件夹,可通过配合ls命令实现,也可参照图形化文件夹

在目标urdf所在文件夹中执行以下命令,xxx为你的urdf文件名称,yyy为你要生成的dae文件名称

rosrun collada_urdf urdf_to_collada xxx.urdf yyy.dae

设置dae文件的精度,建议设5或以上,表示小数点后4位精度,我设3在后续生成cpp代码时会失败

rosrun moveit_kinematics round_collada_numbers.py yyy.dae yyy.dae 5

第六步:生成ikfast的cpp文件

现在可以在终端中输入exit退出DOCKER镜像了,同时复制设置好精度的dae文件到电脑本机上(在虚拟机的浏览器跑cpp也行),打开网址

IKFast Generatoricon-default.png?t=N7T8https://www.hamzamerzic.info/ikfast_generator/

 导入dae文件上传,会出现下图link索引及其父link的列表,如果没有或出错则需要检查urdf文件与dae文件的正确性

 分别输入运动链的基座link和末端执行器link,列出自由link的索引(在求解时不需要考虑到的link),然后选择solver方法,根据调整自由索引之后的自由度来选,具体定义参考官网,随后点击生成

第七步:生成ikfast插件

在urdf文件所在的工作空间内的src文件夹下创建一文件夹,名称自拟,能知道是ik插件包即可,比如ikfast_plugin

在生成前需要完成两件事:

  1. 把生成的cpp文件放到这个文件夹里
  2. 下载cpp所需头文件ikfast.h,同样放到文件夹里,头文件下载网址:ikfast.h

使用moveit的工具生成插件,其中:

  • robot_name是机器人的名称,以urdf文件中定义为准
  • arm为规划组的名称,以srdf文件中定义为准
  • ikfast_for_urdf为一会生成文件夹的名称,随意定义,能区分出来就好,反正会在ikfast_plugin里
  • base_link为机器人运动链的起始link,以srdf文件中定义为准
  • link为机器人运动链的结束link,以srdf文件中定义为准
  • ikfast_create_code.cpp为你生成cpp文件的名字,注意.cpp和其.h文件一定要在当前文件夹
rosrun moveit_kinematics create_ikfast_moveit_plugin.py robot_name arm ikfast_for_urdf "base_link" "link6"  ikfast_create_code.cpp

 第八步:配置ikfast插件

进入生成的ikfast_for_urdf(生成插件时自己定义的)文件夹中,进入  xxx_xxx_arm_moveit_ikfast_plugin_description.xml  文件,复制这个插件名

打开之前使用moveit助手配置好的功能包,进入config文件夹,打开kinematics.yaml文件

替换插件名
 

第九步:生成ikfast.cpp可执行文件 (可忽略)

进入.cpp与.h所在文件夹,执行以下命令:

  • ikfast_create_code.cpp为你生成cpp文件的名字,注意.cpp和其.h文件一定要在当前文件夹
  • -o后面的ikbest为欲生成的可执行文件名称,我命名为ikbest
g++ ikfast_creat_code.cpp -o ikbest -llapack -std=c++11

成功后,运行可执行文件,并给出3x3的旋转矩阵和一个3x1的平移矩阵,以空格间隔,运行后即可求逆解,即各个关节的角度,每个机器人工作空间不一样,输入参数按自己的来

./ikfast 1 0 0 0.04 0 1 0 0.03 0 0 1 4.2

最后:对比 kdl数值法 与 ikfast解析法 在笛卡尔空间画圆的速度 

kdl求解器:

ikfast求解器:

 

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值