10分钟玩转MoveIt可视化配置和仿真(内有福利)

2542
7
2020年3月19日 16时43分

MoveIt是ROS中非常强大的一个开发平台,可以为机器人开发提供六大功能支持,真正做到不写一行代码,就可以从零完成各种炫酷的机器人应用功能。

 

10分钟玩转MoveIt可视化配置和仿真(内有福利)插图

MoveIt的设计目标是让机器人走向未来,那未来的机器人是什么样的呢?不知道你有没有看过在工厂实际工作的机械臂,都需要人工事先完成示教工作,机器人的角色更像是一台“机器”,完成人们依次设计好的轨迹,环境一旦发生变化,就得重新来过。
 
未来的机器人(很多已经成为现实)将更加智能化,可以通过视觉获取环境信息和工件位置,大脑自主分析运动行为,真正做到即插即用,而MoveIt就可以帮助我们做到这一点。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(1)
MoveIt如何使用?用过的小伙伴一定听说过Setup Assistant这个工具,使用它就可以在界面中轻松完成MoveIt各项配置,分分钟让机械臂跑起来。
 
这个工具你会使用么?不如和古月君一起操作一把,我们使用普通的6自由度机械臂和装配了夹爪、相机的机械臂为例,10分钟就可以把运动规划、运动学正逆解、视觉检测跑都起来,,也可以参考视频教程《MoveIt可视化配置及仿真指南》,一步一步跟着古月君操作!
 
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(2)

 

一、六自由度机械臂(C800)

使用Setup Assistant的第一步,当然是使用如下命令启动啦:
$ roslaunch moveit_setup_assistant setup_assistant.launch
启动之后可以看到一个简洁的界面:
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(3)
 
接下来在这个界面中完成最多12个步骤的配置,就大功告成了,中间好几个步骤根据硬件不同是可以跳过的。第一步是选择模型的硬件,以新建配置包为例,选择后加载模型,可以成功可视化显示模型。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(4)
 
接下来第二步配置自碰撞检测,只需要点击一个按键,会自动采样始终碰撞和不碰撞的连杆,减少后续碰撞检测的时间。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(5)
 
第三步设置虚拟关节,主要目的是为机械臂创建一个世界坐标系,当机械臂相对运动时,可以描述机器人的位姿,如果机械臂是固定的,这一步可省略。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(6)
 
第四步创建运动规划组是最重要的一个步骤,需要设置规划组的名字、运动学求解器、包含的关节等信息,未来的运动规划都是以组为单位,对组内的关节进行同步规划的。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(7)
 
第五步是预定义机器人位姿,并不是必须的,可以为常用的姿态设置名称,方便未来编程和上位机直接调用,根据需求设置。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(8)
 
第六步设置ROS Controllers,点击自动配置,可以自动根据前边的配置生成arm_controller,该控制器的主要功能是封装MoveIt的输出轨迹,以action的形式和外部通信。为了方便建立仿真系统,我们还可以Add一个控制器,设置为JointTrajectoryController,利用ROS Controller中的插补功能,和Gazebo进行连接。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(9)
 
第七步自动产生Gazebo仿真用的模型,可以将产生的结果直接复制到urdf模型中,其中自动生成了惯性矩阵和传动装置的配置,还添加了ros_control插件的调用。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(10)
 
八步设置作者的信息,方便未来分享。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(11)
 
第九步就接近尾声了,点击“Generate Package”即可将以上配置以文件的形式保存到新产生的功能包中。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(12)
按照以上步骤,就可以完成Setup Assistant的基本配置,将自动产生的功能包放到工作空间中,开始测试啦:
$ roslaunch c800_moveit_config demo.launch
在打开的Rviz界面中拖拽机械臂终端,MotionPlanning控制区点击Plan and Execute就可以看到运动效果啦。
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(13)

二、机械臂+3D视觉+夹爪

那如果你的机械臂有夹爪和相机怎么配置呢?
其他步骤完全一致,只需要新加这些配置:
 
1.在规划组的配置中,夹爪也是一个需要单独配置的规划组!
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(14)
 
2.需要加入一个配置终端夹爪的步骤:
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(15)
 
3.ROS Controllers的配置不要忘记夹爪哦!
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(16)
 
4.新加入一个设置3D相机的配置,主要设置点云话题,未来MoveIt会自动订阅用于环境监测:
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(17)

配置完成后,继续在MoveIt中测试:
$ roslaunch marm_moveit_config demo.launch
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(18)

三、MoveIt+Gazebo仿真

想要把以上机械臂放到Gazebo中仿真,同样简单,只需要修改几个文件,就可以实现以下功能:
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(19)
(运动控制)
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(20)
(环境感知)
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(21)
(自主避障)
以上介绍不直观?没问题,欢迎学习古月君全新制作的ROS基础精讲系列课程之《MoveIt可视化配置及仿真指南》,带你10分钟搞定MoveIt可视化配置和仿真, 分分钟让机械臂跑起来。

福利活动 :

转发这篇文章到QQ群或微信群,然后把截图发送到“古月居”公众号后台
古月君将给前10位参与活动的小伙伴免费开通此课程
限量10位,先到先得~
附古月居公众号二维码:
10分钟玩转MoveIt可视化配置和仿真(内有福利)插图(22)

发表评论

后才能评论

评论列表(7条)

  • k7hsq_8071 2020年7月21日 下午4:11

    古老师您好,我按您写的弄C800的配置,在最后一步点击Generate Package,显示(The chosen package location already exists but was not previously created using this Movelt! Setup Assistant. If this is a mistake, add the missing file: /home/admer/Muwang_ws/.setup_assistant),要怎么解决呢?

  • vd8wd_3882 2020年5月22日 下午2:40

    老师您好,请问setup assistant中怎么修改或添加一个pose?我添加一个pose后,在rviz中没有显示新的pose,还是只有home和up两个pose。麻烦老师解答。

  • e25vb_1843 2020年4月1日 上午10:41

    古老师,我用moveit仿真机械臂的时候,在rviz界面上查看tf发现坐标xyz显示有两个,一个position,一个relative positon,想用rosbag包记录数据,发现记录的只是relative position,是两个相邻关节的转换,但是我只想记录转换后相对于baselink的xyz,怎么办,只能自己用relative position去转换吗

  • Hyuk. 2020年4月1日 上午12:48

    古月老师你好,我在运行《ros机器人开发实践》里的仿真模型时候出现了
    Deprecated: xacro tag ‘mrobot_body’ w/o ‘xacro:’ xml namespace prefix (will be forbidden in Noetic)
    when processing file: /home/hyuk/roswork/workspace1/src/mrobot_description/urdf/mrobot_with_rplidar.urdf.xacro
    Use the following command to fix incorrect tag usage:
    find . -iname “*.xacro” | xargs sed -i ‘s#<\([/]\?\)\(if\|unless\|include\|arg\|property\|macro\|insert_block\)#<\1xacro:\2#g' 这样的提醒 运行了建议的命令后还是没有解决.请问该如何解决这个问题呢?

  • Mozz 2020年3月21日 上午12:00

    古月老师你好,最近在学习编写XACRO文件,在惯性矩阵的计算中出现了如下的报错

    can’t multiply sequence by non-int of type ‘float’ when evaluating expression ‘m*(h*h+w*w)/12’

    并且以前也出现过can not parse component{XXX} to a double 和{XXX} is not a valid float这样的数据类型错误,请问这是系统的配置问题吗

  • 古月光翟氵青 2020年3月20日 下午4:43

    古月老师您好,我目前在做一个机器人铺设瓷砖的项目,我想在Gazebo中仿真一个机械臂用吸盘吸取瓷砖的动作,请问我应该怎么做呢?具体过程为:机械臂末端执行机构装了几个真空吸盘,气泵向外抽气,末端执行机构向下运动,当吸盘贴到瓷砖表面后,瓷砖就被吸盘吸住了。实物已经做出来了可以实现这个动作,但是仿真遇到了些问题,请老师赐教,谢谢老师!