通过Moveit!配置助手配置Moveit!包

moveit!是一个很强大的包,如果没有它,机械臂的正逆运动学问题,碰撞检测,动作规划等都会是非常复杂的问题,而moveit!!的存在,就如它的名字一般,使之变成了简单的move it.

1.Moveit!安装

$sudo apt-get install ros-indigo-moveit-full


为了便于体验Moveit!配置的过程,我选择跟着古月居教程的脚步使用master ros for robotics programming里的案例进行配置,之前也尝试过配置pr2的机械臂,但是pr2太过复杂,多多少少会遇到一些小问题,配置之后运行demo看不到mark图标。


$git clone https://github.com/qboticslabs/mastering_ros.git


2.配置Moveit!包

Moveit!的配置助手可以将编写好的urdf文件生成srdf文件,并从而生成Moveit!的功能包。


运行Moveit配置助手:

$rosrun moveit_setup_assistant moveit_setup_assistant


ps.根据小伙伴反馈,有时候启动配置助手会报错,关闭重启几次一般就好了。

Moveit!配置助手界面如下图所示


通过Moveit!配置助手配置Moveit!包


接下来我们可以根据左边的列表逐步配置


2.1开始(start)


这个界面有两个选项,左边的是创建一个配置包,右边的则是选择已有的配置包进行修改。

我们选择左边的创建选项,并且加载之前下载的模型文件,如下图(路径根据实际下载路径选择)


通过Moveit!配置助手配置Moveit!包


选择seven_dof_arm.urdf之后点击加载(load files),这时可以在右侧框看到模型,通过鼠标可以调整模型的位置。


通过Moveit!配置助手配置Moveit!包


2.2生成碰撞矩阵(self-collision)

碰撞矩阵会列出所有不可能发生相互碰撞的连杆。上方的拉动条可以设置一定数量的随机采样点,根据这些点生成配置参数,过多的点当然能获得更好的效果,但同时运算速度也会变慢,甚至配置较差的电脑会卡死;过少的点则会导致参数不完善,默认的采样点数量是10000个,官方称这是能获得较好效果的最低要求。在此,我们不做修改,使用默认的10000个采样点。

点击滚动条下方的“regenerate default collision matrix“,稍等片刻就可以获得结果。


通过Moveit!配置助手配置Moveit!包


2.3 虚拟关节(virtual joints)

虚拟关节可以将机器人固定在虚拟世界内,例如一个机械臂有一个滑动底座,可以将机械臂的底座与odom通过一个planar关节连接,此时机械臂就可以在二位平面滑动。此处我们默认机械臂是固定不动的,所有不需要设置虚拟关节。


2.4 规划组(planning groups)

规划组可以将机器人划分为不同的组,例如arm机械臂部分和gripper夹持器部分。运动规划会针对这一个组完成运动规划,在配置过程中还可以选择运动学解析器。

在此我们创建两个组,机械臂组和夹持器组。


通过Moveit!配置助手配置Moveit!包

通过Moveit!配置助手配置Moveit!包

通过Moveit!配置助手配置Moveit!包

通过Moveit!配置助手配置Moveit!包

通过Moveit!配置助手配置Moveit!包


2.5 定义机器人位姿(robot poses)

这里可以设置一些固定的位置,比如初始位置或者某些特定位置。这样做的好处是使用moveit!的API编程时,可以直接调用这些位置。

这里我们随意设置一个位姿。


通过Moveit!配置助手配置Moveit!包


2.6 定义末端执行器(end-effectors)

在某些场景下,会安装夹持器等末端执行器,这一步可以对此进行定义。


通过Moveit!配置助手配置Moveit!包


2.7 定义被动关节(passive joints)

机器人上的某些被动关节可能在规划,控制过程中使用不到,例如从动轮等,可以在此事先声明,它们将不被列入运动规划的范围。此处不存在被动关节,无需额外配置。


2.8 作者信息(suthor information)

并不是很重要的步骤,但是不填写的话,最后生成Moveit文件会报错,所以建议写一下。


2.9 生成配置文件(configuration files)

最后就将生成moveit!配置文件,取名通常会使用<your_robot>_moveit_config。

这里,我们将它取名为arm_a_moveit_config,点击generate packet生成文件。



通过Moveit!配置助手配置Moveit!包


此时moveit!配置助手就可以退出了。

在保存的路径下可以查看到Moveit!导出的配置包,测试一下,打开demo文件。如果配置无误,此时可以看到机械臂的末端执行器上有一个mark标志,可以拖动机械臂运动并规划路径。


通过Moveit!配置助手配置Moveit!包



参考文献:

1.古月居 ros探索总结(二十五)------Moveit!基础 http://www.guyuehome.com/435

2.《ros_by_example》第二册第十一章

3.《ROS入门与实战》第六章