MoveIt!的应用笔记

2020-06-20  本文已影响0人  飞多多

最近需要使用MoveIt!.这里对Moveit!的使用做一些简单的记录.当然首先还是推荐大家去看官方文档

moveit.png
上图是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机器人如下图所示

Screenshot from 2020-06-12 18-23-16.png

首先按照moveit setup assistant来配置ginger机器人:
启动moveit setup assistant前,应该先source urdf所在的ros工作目录.

  1. 自碰撞使用默认采样密度.
  2. 虚拟关节是我们机器人与世界坐标系的关系,这里选用fix,将ginger的底盘坐标系固定住.
  3. 规划组,我们主要配置了左手和右手,这两只手是我们的主要抓取手臂.
  4. 机器人姿态,这里为左手和右手分别配置了一个零位位置,方便归零.
  5. 末端执行器,选择手臂的最后一个坐标系.
  6. 被动关节无.
  7. ROS control无
  8. 仿真无.
  9. 3D 感知选用了深度图,话题选了/head/depth/image.这里需要说明的是,这里的深度图应该是32FC1的格式.然后设置了一些截断值和临界值.
  10. 填写作者信息.
  11. 最后生成配置文件,这样,配置包就生成好了.
    然后通过
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,而其中有一些细节涉及到工作中的具体问题,不方便展开讨论。

上一篇下一篇

猜你喜欢

热点阅读