MoveIt2配置

前言:树莓派5和Jetson-nano的ros是运行在docker中,因此运行moveit2的效果一般,建议树莓派5和jetson-nano主板的用户在虚拟机上运行MoveIt2的相关案例。Orin主板的ros是直接运行在主板上的,因此Orin主板的用户可以直接在主板上运行MoveIt2相关的案例,指令与在虚拟机上运行的一样。本节内容以在虚拟机上运行为例展开说明。

1、内容说明

本节内容说明如何配置MoveIt2,生成仿真所需要的参数文件以及launch文件。

2、MoveIt2简介

MoveIt 2 是 MoveIt 的下一代版本,专为 ROS 2(Robot Operating System 2) 设计,是一个开源的机器人运动规划、操控、3D 感知、运动学、碰撞检测和任务规划框架。它广泛应用于工业机器人、服务机器人、移动机械臂以及科研和教育领域。

2.1、与MoveIt的区别

特性MoveItMoveIt2
ROS 版本ROS1ROS2
实时性有限支持更好的实时性能
跨平台支持主要 Linux支持 Linux、Windows、macOS(ROS 2 特性)
运动规划接口ActionLib(ROS 1)Action(ROS 2)
默认规划器OMPLOMPL + 更多优化选项

2.2、MoveIt2核心功能

2.3、安装MoveIt2

虚拟机中已经安装了MoveIt2,这里不需要进行安装,如果在新的环境下需要安装MoveIt2的话,则输入以下指令进行安装,

2.4、参考网站

MoveIt2源码:

GitHub - moveit/moveit2: 🤖 MoveIt for ROS 2

官方教程文档:

MoveIt 2 Documentation — MoveIt Documentation: Humble documentation

3、程序启动

首先,在ros工作空间的src下创建一个文件夹用于存放MoveIt配置后生成的文件,以虚拟机中的moveit2_ws工作空间为例,虚拟机终端输入,

在虚拟机终端输入以下指令启动MoveIt2配置,

程序启动后,出现以下配置画面,

image-20250620115118664

点击【Create New MoveIt Configuration Package】,出现以下画面,

image-20250620115601046

点击【Browse】,然后选择M3Pro的URDF文件,文件目录在/home/yahboom/moveit2_ws/src/yahboom_M3Pro_description/urdf,选择完成后,点击【Load Files】。然后程序会加载选择的URDF文件,加载完成后,出现以下画面,右边显示我们加载的M3Pro小车的模型。

image-20250620115836220

然后点击左侧配置栏的【Self-Collisions】,这一步是配置自碰撞检测,如下图所示,点击【Generate Collisions Matrix】即可完成配置,

image-20250620120247614

接着下一步,点击左侧配置栏的【Planning Groups】,这一步是创建规划组,点击【Add Group】创建第一个规划组,如下图所示,

image-20250620120548047

然后创建arm_group规划组控制机械臂,如下图设置,

image-20250620120854133

然后,我们需要给这个规划组添加点击下边的【Add Joints】进入到添加界面,在添加界面中,我们选择左边的arm_Joint1到arm_Joint5,点击>完成添加后,点击【Save】保存退出。

image-20250620120959660

完成arm_group规划组设置如下图所示,然后点击【Add Group】添加夹爪的规划组,

image-20250620121244044

参数如下图所示,然后点击【Add Links】进入选择Links的界面,

image-20250620121358934

在选择Links界面,我们选择左边的llink1、llink2、llink3,rlink1、rlink2、rlink3,点击>完成添加后,点击【Save】保存退出。

image-20250620121806203

完成夹爪规划组如下图所示,

image-20250620121845971

至此,设置规划组完成,接下来点击左侧设置栏的【Robot Groups】,这一步是设置机械臂和夹爪的预设姿态,

如下图所示,点击【Add Pose】,

image-20250620122041247

然后如下图所示设置,设置arm_group规划组的up姿态,中间的滑块可以设置姿态,右边的urdf也会显示设置的姿态,设置完成后,点击【Save】完成设置。

image-20250620122215831

接着,我们按照设置up姿态的步骤,设置arm_group规划组的down姿态和init姿态,设置参考下图,

down姿态:

image-20250620140850856

init姿态:

image-20250620140958987

设置完arm_group组的三个姿态后,设置grip_group组的两个姿态分别是close和open,主要这里的【Planning Group】需要修改成grip_group,设置如下图,

close姿态:

image-20250620141244979

open姿态:

image-20250620141329910

【Robot Poses】设置完成后,如下图所示,

image-20250620141516004

接下来,点击左侧设置栏的【End Effectors】,配置末端执行器,如下图所示,点击【Add End Effector】进入设置界面,

image-20250620142020408

在设置界面中,按照下图所示进行设置,设置完成后,点击【Save】保存后退出,

image-20250620142623114

设置【End Effectors】完毕如下图所示,

image-20250620142714328

接着,点击左侧设置栏的【ros2_control URDF Modifications】,这一步是设置URDF模型,我们不需要对URDF模型进行修改,直接点击【Add interfaces】即可,如下图所示,

image-20250620143114727

点击左侧设置栏的【ROS2 Controllers】,这一步是设置机器人运动控制,点击【Add Controller】添加控制器,如下图所示,

image-20250620143726265

进入设置后,按照下图所示,添加arm_group_controller控制器,

image-20250620143907324

然后点击【Add Planning Group Joints】添加控制组的关节,如下图所示,添加arm_group控制组,选择左边的arm_group然后点>即可完成添加,最后点击【Save】保存退出,

image-20250620144133413

设置完的第一个控制器如下图所示,

image-20250620144305767

然后,我们添加第二个控制器,同样是点击【Add Controller】进入添加界面,然后按照下图所示进行设置,

image-20250620144904389

然后点击【Add Planning Group Joints】添加关节,如下图所示,选择左边的grip_group,然后点击>,即可完成添加,最后点击【Save】完成设置,

完成【ROS2 Controllers】设置后,如下图所示,

image-20250620145344215

接下来点击左侧设置栏的【MoveIt Controllers】,这一步是设置轨迹控制器来执行规划的轨迹,将生成的轨

迹发送到机器人ROS2控制器。点击【Add Controller】,添加轨迹控制器,如下图所示,

image-20250620150250522

进入设置界面,按照下图进行设置,注意这里的【Controller Name】要和上一步设置的【ROS2 Controller】的一样,然后点击【Add Planning Group Joints】添加控制关节,

image-20250620150407017

如下图所示,添加arm_group控制组,选择左边的arm_group然后点>即可完成添加,最后点击【Save】保存退出,

image-20250620150614286

设置完成后如下图所示,

image-20250620150710212

接着再添加夹爪的轨迹控制器,点击【Add Controller】,进入设置界面,根据下图所示进行设置,然后点击【Add Planning Group Joints】添加控制关节,

image-20250620151203479

然后点击【Add Planning Group Joints】添加关节,如下图所示,选择左边的grip_group,然后点击>,即可完成添加,最后点击【Save】完成设置,

image-20250620151732760

完成【MoveIt Controllers】设置如下图所示,

image-20250620151814116

接下来点击左侧设置栏的【Author Information】,然后填入自己的姓名和邮箱,如下图所示,

image-20250620151935855

最后,点击左侧设置栏的【Configuration Files】,点击【Browse】,找到我们之前创建好的文件夹,这里选择的是/home/yahboom/moveit2_ws/src/test_moveit_config,出现以下信息点击【ok】

image-20250620152518443

然后点击下边的【Generate Package】,生成功能包,如下图所示,出现提示信息点击【ok】,

image-20250620152626993

出现提示信息点击【ok】,

image-20250620152646396

如下图所示,出现Configuration package generated successfully 点击【Exit Setup Assistant】,完成所有设置

image-20250620152724263

在test_moveit_config功能包中,保存了刚才设置的所有内容,然后,我们需要对/home/yahboom/moveit2_ws/src/test_moveit_config/config目录下的joint_limits.yaml进行修改,只需要把里边的整数修改成小数,值不变,修改后的文件如下,

保存后退出,然后回到工作空间目录下,使用colcon build进行编译,终端输入,

编译完成后,重新刷新下环境变量,终端输入source ~/.bashrc.然后终端输入以下指令启动moveit2,终端输入,

程序启动后,当终端出现了You can start planning now!说明成功启动,如下图所示,

image-20250620154038745

然后我们测试下Plan和Execute,我们先测试arm_grou。如下图所示,选择【Planning Group】为arm_group、选择 【Start State】为、选择【Goal State】为,我们让机械臂的姿态由当前的up,运动规划到之前设置的init,

image-20250620154420981

然后点击左侧的【Plan & Execute】,让机械臂规划运行到init,如下图所示,

image-20250620154714153

运动规划完成后,如下图所示,

image-20250620154624000

如果能够成功地规划并执行成功,说明arm_group配置成功,接下来测试grip_group,按下图进行设置,把【Planning Group】为grip_group、选择 【Start State】为、选择【Goal State】为

image-20250620155140888

点击左边的【Plan & Execute】,让夹爪规划运行到close状态,如下图所示,

image-20250620155247804

如果夹爪成功合上表示规划执行成功。

4、设置RVIZ

在运行MoveIt2的时候,会出现机械臂重复执行规划的操作,这是因为打开了loop animation,我们把这个选项关闭即可。在【Display】中找到【MotionPlanning】->【Planned Path】->【Loop Animation】,点击这里的√即可取消loop animation。

运行MoveIt2的时候,橙色部分表示目标位姿,如果我们不想显示目标位姿的话,可以找到【MotionPlanning】->【Query Goal State】,点击这里的√即可取消显示目标位姿。

这里修改了rviz的设置后,需要按下ctrl 和s进行保存