MoveIt!机械臂控制(二)

2021/8/14 ROSPython机器人开发MoveIt!

# 一、使用Setup Assistant配置机械臂

如果使用自己创建的机器人URDF模型,则使用MoveIt!的第一步就是用Setup Assistant工具完成一些配置工作

Setup Assistant会根据用户导入的机器人URDF模型生成SRDF(Semantic Robot Description Format)文件,从而创建一个MoveIt!配置的功能包,完成机器人的配置、可视化和仿真工作

# 1.1Setup Assistant启动

首先安装MoveIt!

$ sudo apt-get install ros-melodic-moveit

使用如下指令启动MoveIt Setup Assistant

$ rosrun moveit_setup_assistant moveit_setup_assistant

运行成功后会出现如下界面:

2021-08-14 12-24-19 的屏幕截图.png

载入上界面中可以通过点击其中的某项,主界面就会出现相应的配置选项

# 1.2加载机器人URDF模型

在这个界面的初始环境下有两个选择,一个是新建配置功能包,另一个是使用已有的配置功能包

选择新建菜单,在下侧的模型加载窗口中设置模型文件路径为marm_description功能包下的URDF文件arm.xacro,并点击“Load Files”完成加载

加载完成后如下所示:

2021-08-14 14-53-20 的屏幕截图.png

# 1.3配置自碰撞矩阵

点击配置软件界面左侧第二项“Self-Collisions”,配置自碰撞矩阵

MoveIt!允许我们设置一定数量的随机采样点,根据这些点生成碰撞参数,检测永远不会发生碰撞的link

默认采样数据是10000个,按照这个默认值点击“Generate Collision Matrix”按钮

如下所示:

2021-08-16 09-50-02 的屏幕截图.png

# 1.4设置虚拟关节

虚拟关节主要用来描述机器人在world坐标系下的位置。如果机器人是移动的,则虚拟关节可以与移动基座关联

但是由于此处机械臂是固定不动的,所以无需设置虚拟关节

# 1.5创建规划组

创建规划组的作用是将机器人划分为多个组成部分

每一个组成部分是由link和joint组成的,运动规划器会针对一组link和joint完成规划任务

在配置过程中还可以选择运动学解析器

在该机器人模型中可以划分为两部分:机械臂本体、前端夹爪

2021-08-16 10-05-58 的屏幕截图.png

# 1.6定义机器人位姿

在这一步中可以设置一些自定义的位子,比如机器人的初始位姿、指定姿态位姿等等

2021-08-16 10-30-58 的屏幕截图.png 2021-08-16 10-33-06 的屏幕截图.png

# 1.7配置终端夹爪

机械臂在一些使用场景下会安装夹具等终端结构,可以在这一步进行安装

2021-08-16 10-36-23 的屏幕截图.png

# 1.8配置无用关节

机器人上的某些关节在规划、控制过程中可能是用不到的,可以事先声明出来

# 1.9设置作者信息

这一部可以设置作者的信息

# 1.10生成配置文件

这一步可以根据之前的配置,自动生成配置功能包中的所有文件

点击"Browse"按钮,选择存储功能包的路径。Setup Assistant会打包所有配置并生成一个ROS功能包

后点击"Generate Package"按钮,如果成功生成并保存配置文件,则可以看到"Configuration package generated successfully!"

2021-08-16 11-08-22 的屏幕截图.png

# 二、启动MoveIt!

编译后可使用命令:$ roslaunch marm_moveit_config demo.launch

2021-08-16 11-15-06 的屏幕截图.png

# 2.1拖动规划

拖动机械臂的前端,可以改变机械臂的姿态,然后再Planning标签中点击"Plan and Execute"按钮,MoveIt!开始规划路径,并且控制机器人向目标位置移动,从右侧洁面可以看到机器人运动的全过程

2021-08-16 11-37-42 的屏幕截图.png

# 2.2随机目标规划

在Query工具栏中的"Goal State"的下拉选项中可以选择"random valid",然后点击update按钮,MoveIt!会在机器人的工作范围内随机生成一个目标位姿,继续点击"Plan and Execute"按钮,机器人会自动运动到随机产生的目标位姿

2021-08-16 14-33-02 的屏幕截图.png

# 2.3初始位姿更新

可以使用"Start State"设置机器人的初始位姿,和"Goal State"方法类似

# 2.4碰撞检测

在MoveIt!中有一个planning scene模块,允许我们创建一个虚拟环境

在MotionPlanning插件的"Scene Objects"标签页中点击"Import File"按钮,可以添加场景物体的dae文件

加入模型后,MoveIt!在运动规划时会进行碰撞检测,加入机器人的目标姿态和外部模型发生碰撞,进行运动规划时就会提示失败,界面中变成红色的link表示发生碰撞的部分