MoveIt教程4 - MoveIt配置助手(MoveIt Setup Assistant)

要使用MoveIt控制我们的机器人,需要配置一个ROS的软件包。MoveIt提供了一个图形化工具MoveIt Setup Assistant可以快捷的进行配置。

介绍

MoveIt Setup Assistant是一个图形界面的工具,帮助配置MoveIt所需的ROS包。

  • 最主要的功能是生成SRDF文件 。 了解URDF/SDRF
  • 另外也生成MoveIt需要的管道(pipeline)的配置文件。

使用教程

这里通过官方的Franka机器人学习如何使用MoveIt配置助手。

sudo apt-get install ros-melodic-franka-description

1. 运行MoveIt Setup Assistant

启动MoveIt Setup Assistant

roslaunch moveit_setup_assistant setup_assistant.launch

有两个选项:

  • 新建配置 Create New MoveIt! Configuration Package
  • 编辑已有配置 Edit Existing MoveIt! Configuration Package.


点击browse按钮找到 panda_arm_hand.urdf.xacro 默认路径(/opt/ros/melodic/share/franka_description/robots/panda_arm_hand.urdf.xacro)。这个文件在安装Franka机器人描述包的后自带。随后点击Load Files。MoveIt Setup Assistant会开始加载机器人描述文件, 等待加载完成提示 Success! Use the left navigation pane to continue

2. 生成自碰撞矩阵 Self-Collision Matrix

  • 默认的碰撞免检矩阵生成器搜索机器人所有关节,这个碰撞免检矩阵是可以安全地关闭检查,从而减少行动规划的处理时间
  • 在某些关节会关闭碰撞检查,比如总是碰撞,从不碰撞,在默认的位置碰撞,或在运动学链条上的相邻处。
  • 采样密度指定了多少个随机机器人位置来检查碰撞。更高的密度需要更多的计算时间,而较低的密度就要减少关闭的检查节点
  • 默认值是10000个碰撞检查。碰撞检查是并行完成,以减少处理时间。

选择左侧Self-Collisions, 点击Generate Collision Matrix按钮。稍加等待会呈现一个碰撞表格。

3. 添加虚拟关节 virtual joint

通过添加虚拟关节把机械臂关联到world。这里我们只需要定义一个虚拟关节把panda_link0关联到world,从而定义机械臂基座和world的坐标系关系。

  • 选择左侧Virtual Joints, 点击Add Virtual Joint
  • 定义名称为virtual_joint
  • 定义子关节(child link)为panda_link0, 父关节(parent frame)为world
  • 定义关节类型(joint type)为fixed
  • 点击Save

4. 添加规划组planning group

MoveIt通过定义规划组(planning group)来语义上定义机机械臂的各个部分(如手臂,末端执行器等)。这是MoveIt中一个很重要的概念。简单来说就是定义某些关节为一个组合并起一个名字。

  • 选择左侧Planning Groups
  • 点击Add Group
添加规划组arm
  • 输入名称panda_arm

  • 运动学求解器选择kdl_kinematics_plugin/KDLKinematicsPlugin (一般用KDL就可以)如果需要更强大的求解器,参考IKFast Kinematics/IKFast

  • Kin. Search ResolutionKin. Solver Attempts 和 *Kin. Search Timeout * 保持默认设置即可
    -- Kin. Search Resolution: 关节空间的采样密度
    -- Kin. Search TImeout: 求解超时时间
    -- Kin. Solver Attempts: 求解失败尝试次数

  • 点击Add Joints按钮,会出现所有关节的列表。arm规划组包括 joint0 到 joint8。
    选中virtual_joint,按住shift再点击panda_joint8,点击>按钮讲关节添加到右侧。

  • 点击Save保存

添加规划组gripper
  • 再为末端执行器添加一个规划组,这次添加方法会有些许不同
  • 输入Group Name为hand
  • 配置同arm
  • 点击Add Links按钮 和arm有区别
  • 选择panda_hand, panda_leftfinger, 和panda_rightfinger 并添加到右侧
  • 点击Save保存

5. 添加机器人姿态

MoveIt允许添加一个预设的机器人姿态,之后可以方便调用,例如初始姿态。
这里我们添加一个HOME姿态。

  • 选择左侧Robot Poses
  • 点击Add Pose按钮,定义名称为home
  • 选择规划组panda_arm, 右侧会出现各个关节的滑条,拖动设置想要的姿态
  • 点击Save保存
  • 注意 尽量拖动每一个关节,这样如果URDF中有设置错误就可以看出来

6. 配置末端执行器End Effectors

MoveIt中会给末端执行器一个专门的标签-End Effectors。之前我们已经为末端执行器添加了规划组,这里我们要将其标记为End Effector

  • 选择左侧End Effectors
  • 点击Add End Effector
  • End Effector Name设置为hand
  • End Effector Group选择之前添加的规划组hand
  • 父关节选择为panda_link8
  • 父规划组选择留空白


7. 添加被动关节Passive Joints

如果机器人中有被动的关节(不是主动控制的关节),需要将其添加为被动关节,这样可以告诉MoveIt在规划运动的时候这些关节是无法主动控制的。
Panda机械臂中没有被动关节,跳过这一步。

8. 设置3D感知

这里可以为机械臂添加传感器,如kinetic。
参数配置参考tutorial

如没有传感器,设置为None

9. Gazebo仿真

如果需要在Gazebo中仿真,可以在这里生成需要的URDF文件。(不需要可以跳过)

生成URDF后,通过如下步骤在Gazebo中生成仿真

  • 建立一个空的world
roslaunch gazebo_ros empty_world.launch paused:=true use_sim_time:=false gui:=true throttled:=false recording:=false debug:=true
  • 加载模型
rosrun gazebo_ros spawn_model -file </path_to_new_urdf/file_name.urdf> -urdf -x 0 -y 0 -z 1 -model panda

10. ROS Control

ROS Control是ROS官方提供的针对控制机器人的一套硬件驱动框架,针对不懂得运动执行器提供不同的驱动接口,再这之上又加入了一个硬件抽象层统一接入ROS,包含了一系列ROS包: controller interfaces, controller managers, transmissions and hardware_interfaces
ROS Control

这里我们可以通过ROS Control面板为关节添加模拟控制器,这样就可以通过MoveIt模拟机械臂运动。

  • 选择左侧ROS Control

  • 点击Add Controller

  • 首先为arm规划组添加position controller

  • 定义名称为arm_position_controller

  • 选择controller type为position_controllers/JointPositionController

  • 下一步是添加控制的关节,这里可以单个关节添加,也可以添加整个规划组

  • 这里选择后者,点击Add Planning Group Joints

  • 选择规划组panda_arm 并添加到右侧

  • 点击Save保存

11. 添加作者信息

可以把自己的信息填入,之后发布的时候需要 (主要是装个B)。

  • 选择Author Information
  • 输入名字和邮箱

12. 生成配置文件

最后一步啦!

  • 选择左侧 Configuration Files,点击browse选择一个合适的位置(例如/home/目录)
  • 点击Create New Folder,输入名称,点击Choose
  • 点击Generate Package 按钮,会生成一系列的launch和配置文件
  • 所有的文件显示在Generated Files/Folders列表


至此,就完成了MoveIt包的配置,可以运行通过Rviz模拟了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容