写点什么

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

作者:芯动大师
  • 2025-08-02
    四川
  • 本文字数:2112 字

    阅读完需:约 7 分钟

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

一、MoveIt 包的配置

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

1. 新建配置包文件夹

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

src

├── CMakeLists.txt  └── rob_moveit_pack    ├── rob_description    │     ├── CMakeLists.txt    │     ├── include    │     ├── launch    │     ├── meshes     │     ├── package.xml    │     ├── src    │     └── urdf    ├── rob_moveit_config    └── rob_moveit_pack      ├── CMakeLists.txt      └── package.xml

2.  Setup Assistant 工具使用

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

catkin_makesource 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 即可完成模型的加载。



(3)Self-collision  选项设置。

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



(4)Virtual Joints 选项。

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



(5)Planning Groups 选项(重要)

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



(6)Robot Poses 选项。

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



  (7)End Effectors 选项。

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

  (8)Passive Joint 选项。

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

  (9)Author Information 项。  

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



(10)Configuration Files 选项。

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



二、MoveIt 包的验证

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

roslaunch rosbook_arm_moveit_config demo.launch
复制代码

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



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



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



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

发布于: 刚刚阅读数: 5
用户头像

芯动大师

关注

凡事预则立,不预则废! 2022-06-01 加入

某公司芯片AE工程师,嵌入式开发工程师,InfoQ签约作者,阿里云专家博主,华为云·云享专家,51CTO专家博主,腾讯云社区优秀共创官。

评论

发布
暂无评论
ROS系统MoveIt玩转双臂机器人系列(二)--生成MoveIt配置包_movel_芯动大师_InfoQ写作社区