最近需要使用MoveIt!.这里对Moveit!的使用做一些简单的记录.当然首先还是推荐大家去看官方文档
上图是moveit的整体框架.moveit的核心是move_group,它通过ros借口将各个子模块组合起来,并对外提供服务.
moveit的安装过程就不多说了.
moveit的入门示例,我们需要安装一个panda机械的配置包:
sudo apt install ros-melodic-panda-moveit-config
然后,我们通过
roslaunch panda_moveit_config demo.launch
来启动示教,启动后的显示界面.我们可以通过rqt_graph
来查看运行的节点,可以发现一个move_group
和很多模块都要交流,他就是moveit的核心,也验证了上面的说法.
接下来我们对ginger机器人进行配置.ginger机器人如下图所示
首先按照moveit setup assistant来配置ginger机器人:
启动moveit setup assistant前,应该先source urdf所在的ros工作目录.
- 自碰撞使用默认采样密度.
- 虚拟关节是我们机器人与世界坐标系的关系,这里选用fix,将ginger的底盘坐标系固定住.
- 规划组,我们主要配置了左手和右手,这两只手是我们的主要抓取手臂.
- 机器人姿态,这里为左手和右手分别配置了一个零位位置,方便归零.
- 末端执行器,选择手臂的最后一个坐标系.
- 被动关节无.
- ROS control无
- 仿真无.
- 3D 感知选用了深度图,话题选了/head/depth/image.这里需要说明的是,这里的深度图应该是32FC1的格式.然后设置了一些截断值和临界值.
- 填写作者信息.
- 最后生成配置文件,这样,配置包就生成好了.
然后通过
roslaunch ginger_config demo.launch
来运行,上面第九条的深度图需要有话题输入,另外,深度图中的header字段下的frame_id需要有效。然后我们应该通过tf的static_transform_publisher将深度图的的坐标系添加到机器人的tf树中。然后,下面两幅图是效果图,一副是在viz中生成的octomap,另一幅是我们UE4的仿真现场,我们通过UE4来模拟了一个虚拟的深度相机。
scene_rviz.png scene_sim.png在此基础上,我们可以通过move_group来规划手臂的运动。可以比如去拿桌面上的小瓶子时,规划的路径就会绕开桌子。走一个弧线的形状。具体的就不做演示了。因为这里的规划应用需要使用MoveIt的C++API,而其中有一些细节涉及到工作中的具体问题,不方便展开讨论。
网友评论