ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包

310
1
2020年8月6日 09时03分

注:本篇博文全部源码下载地址为:Git Repo

1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译。

2. 源码是在 Ubuntu14.04 + Indigo 环境下编写。


 

一、MoveIt包的配置

经过上一篇文章(传送门)的介绍,我们成功的对双臂机器人 rob 进行了 ROS 系统建模,并在 Rviz 可视化工具中进行了验证。本篇博客主要介绍如何借助 ROS  系统的 Setup Assistant 工具生成一个默认的MoveIt 配置包(config package)。

 

1. 新建配置包文件夹

 

我们在上一篇文章提供的源代码的 src 文件夹内的 rob_moveit_pack 文件夹中添加一个文件夹 rob_moveit_config,具体位置如下图文件树所示,红色文件夹即为新建文件夹。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图

 

2.  Setup Assistant 工具使用

(1)进入 work space 目录(src文件夹所在的目录)内,然后分别执行:

catkin_make
source devel/setup.bash

 

(2)启动 MoveIt Setup Assistant Tool, 启动命令为:

roslaunch moveit_setup_assistant setup_assistant.launch

 

注:如果提示失败,则有可能系统未安装 MoveIt 程序包,只需按照本系列博文(一)所属方法安装即可。

 

启动后的界面如下图所示,然后点击 Create New Moveit Configuration Package 选项,然后通过跳出的载入选项中的 browse 按钮选择我们的 rob 机器人的 xacro 描述文件,点击 Load Files 即可完成模型的加载。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(1)

 

(3)Self-collision  选项设置。

 

左上角的第二个选项为 Self-collision  选项,作用是加载机械臂自碰撞矩阵,这样就可以防止在后面的运动规划过程中产生运动干涉(自碰撞),由于我们的描述文件建模比较完备,只需要点击Regenerate Default Collision Matrix 按钮即可生成各个关节的碰撞矩阵,效果如下图所示。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(2)

 

(4)Virtual Joints 选项。

 

左上角的第二个选项为 Virtual Joints  选项,所谓 Virtual Joints 就是我们的机械臂和世界绝对坐标系之间存在一个 虚拟的自由度(相对坐标系),这个多出来的虚拟自由度(相对坐标系)可以表征我们的机械臂相对于世界绝对坐标系的转换关系或者说运动关系,例如当我们的机械臂固定在移动平台上时就需要设置这样一个虚拟坐标系,这里我们的机器人是固定不动的,也就是基坐标系和世界坐标系是相对固定的,因此不需要设置虚拟关节,效果如下图所示。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(3)

 

(5)Planning Groups 选项(重要)

 

Planning Groups 选项的作用是设置机械臂的运动规划群组,也就是我们将几个连续的关节作为一个规划群组,后面将根据这里设置的群组进行运动规划,同时在设置群组的时候我们选择对应群组的运动学求解库,通常选择 kdl_kinematics_plugin/KDLKinematicsPlugin 即可,本博文后面会介绍一种我们自己写的运动学求解算法,这里不再展开, 由于我们是双臂机器人,因此群组为另个,分别为 Left_arm 和 Right_arm ,效果如 下图所示。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(4)

 

(6)Robot Poses 选项。

 

这一选项的作用是设置机器人的一些已知位姿,例如:初始位姿、抓取位姿和一些中间位姿,设置这些位置是有很多好处的,例如运动规划的初始位姿可以明确起点位置,一些中间位姿也可以用来做精读矫正,这里我们仅仅为两组手臂设置一组初始位姿,效果如下图所示。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(5)

 

(7)End Effectors 选项。

 

这是机械臂的末端执行器选项,一般末端执行器为夹子、吸盘等,只需要一个布尔变量即可控制,比较简单,我们这里只追求手臂末端(手掌位置)能够到达空间中的某点,因此不再设置末端执行器。

 

(8)Passive Joint 选项。

 

指定被动关节,也就是没有驱动的关节,它的关节变量由其它主动关节所决定,这里我们没有被动关节,也不再设置。

 

(9)Author Information 项。

 

指定作者信息,没什么好说的,如下图。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(6)

 

(10)Configuration Files 选项。

 

这里是指定我们的配置文件的生成位置和内容的设置窗口,这里的Sace Path 我们选择第1小结里我们新建的 rob_moveit_config 文件夹,点击右下角的Generate Package 选项即可完成整个配置包的生成,具体见下面图,然后退出即可。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(7)

 

二、MoveIt包的验证

经过第一部分的配置,我们已经默认生成了 rob 机器人的MoveIt 的配置包,这时我们需要验证配置包的正确性,我们只需要在 work space 目录输入:

roslaunch rosbook_arm_moveit_config demo.launch

 

此时跳出的RViz环境如下图所示,默认规划群组为左臂。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(8)

 

我们在左下角的Motion Planning 窗口中点击 Planning ,然后点击 Query 选项的 Update 按钮,既可以获得一个随机目标位置,然后点击Commands 选项下的 Plan 和 Excute 按钮即可完成一次运动规划,效果如下图所示。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(9)

 

此外,我们还可以设置测试另外一个手臂的规划,只需要在左上角 Displays 模型设置框内点开 Planning Request 选项,下面有Planning Group,我们将它的值设为 right_arm 即可,效果如下图所示。

 

ROS系统MoveIt玩转双臂机器人系列(二)–生成MoveIt配置包插图(10)

 

至此,我们已经完成了默认的MoveIt 包的生成工作,下面一篇我们将介绍如何修改本包使其能够用于控制我们自己的机器人。

 

<– 本篇完 –>

 

本文转载自博客园,原文链接:https://www.cnblogs.com/shawn0102/p/8922128.html

发表评论

后才能评论

评论列表(1条)

  • jgmm0_4319 2020年8月16日 上午11:10

    你好,我想请教一下,我可以将两个手臂同时进行运动规划吗?就是可以同时有两个交互标志吗?具体该怎么配置呢?我尝试将两个机械臂放到一个规划组里面,但报错不是chain结构,kdl无法进行规划