-
前言
Moveit的使用、配置和原理相关的内容较多,特别是assistant生成的moveit_config包,内容较多,在配置时容易让用户搞不清关系,导致配置过程艰难、漫长。那么什么是Moveit Setup Assistant? Moveit Setup Assistant是一个图形化的交互界面,可以用来配置任何URDF格式的机器人文件,更多详细内容可以参考Moveit 官方网站。
-
准备工作
首先要求环境配置:
- Ubuntu20.04
- ROS noetic
- Moveit
- URDF文件
-
moveit安装
安装moveit官方说明文档:MoveIt 1 Source Build - Linux | MoveIt
源码地址:
GitHub - ros-planning/moveit_tutorials: A sphinx-based centralized documentation repo for MoveIt
2.URDF文件获取
通过采用Solidwoks导出urdf模型文件,具体方法不做过多阐述。
-
MoveIt Setup Assistant使用
- 启动
roslaunch moveit_setup_assistant setup_assistant.launch
- 开始菜单会有两个选项:
- “Create New MoveIt Configuration Package”
- “Edit Existing MoveIt Configuration Package“
可以选择”创建新的moveit-config配置文件包”,也可以”编辑已经存在的moveit-config配置文件包”。
本文选择”创建新的moveit-config配置文件包”。
2, 选择”创建新的moveit-config配置文件包”,点击”Browse”加载我们的urdf文件。
若成功发加载,则会在右侧看到机械臂的模型,如图:
生成碰撞矩阵
如果设置为比较高的采样密度,会消耗更多的计算时间,而较低的密度会有遗漏的情况,默认值是10000次碰撞检测
点击”Self-Collision”导航栏,然后点击”Generate Collision Matrix” 按钮
添加Virtual Joints
Virtual Joints是用来连接机器人和世界坐标系的,对于Realman的机器人来说,需要定义一个Virtual Joints连接base_link和world坐标系
- 点击”Virtual Joints”栏, 点击”Add Virtual Joint”
- Virtual Joint Name名字为 “virtual”
- 设置”child link” 为”base_link”, “parent frame”为”world”
- 设置”Joint type”为”fixed”
- 点击保存按钮
添加运动规划组
运动规划组用来区分机械臂的不同部分,比如定义手臂部分和末端执行器
- 点击”Planning Groups”栏
- 点击”Add group”,得到下面的界面
手臂运动规划组配置
-
- ”Group Name”设置为”arm”
- 选择”trac_ik_kinematics_plugin/TRAC_IKKinematicsPlugin”作为动力学求解器
- “Kin.SearchTimeout(sec)“设置为0.1
- “Group Default Planner“设置为”RRTConnect“
- 其他保留默认设置
点击Add Kin.Chain按钮,可以得到下图
-
- Base Link选择为base_link
- Tip Link选择为Link7
- 点击保存按钮
夹持器运动规划组配置
- 添加夹持器(注意:步骤和上面有不一样的地方)
- 点击Add Group按钮
- “Group name”设置为”gripper”
- “Kinematics Solver”设置为”None”
- 其他保持默认
- “Group Default Planner“设置为”None“
- 点击Add Joints按钮
-
- 选中gripper_link1,再点击“>“符号将其作为被选中joint
- 选中gripper_link2,再点击“>“符号将其作为被选中joint
点击save按钮进行保存
添加机器人位姿(可选)
可以用这一步来检查URDF文件有没有错误
-
- “Pose Name”设置为”up”
- Planning Group设置为”arm”
- 使得各个joint处于零位
- 点击save按钮进行保存
添加夹持器位姿(可选)
-
- “Pose Name”设置为”close”
- Planning Group设置为”gripper”
- 使得gripper的link1和link2达到最大行程0.0442m
- 点击save按钮进行保存
-
- “Pose Name”设置为”open”
- Planning Group设置为”gripper”
- 使得gripper的link1和link2完全打开
- 点击save按钮进行保存
定义末端执行器
- 点击End Effector一栏
- End effector name设置为parallel
- End Effector group设置为gripper
- Parent link设置为Link7
- Parent Group设置为arm
- 点击save按钮进行保存
Passive Joints
告诉路径规划器,机器人上面可能存在被动关节(不被电机驱动),这些关节不会被控制, 这里不会用到,跳过
3D perception
用于设置yaml文件参数,跳过
Simulation
这个工具可以帮我们在Gazebo里面生成对应的机器人模型(跳过)
Controllers
生成MoveIt控制器用于控制机器人
- 点击Controllers栏
- 点击Auto Add FollowJointsTrajectory controllers For Each Planning Group进行自动添加控制器
添加作者信息
这一步不能省略,点击Author Information进行填写
生成Configuration 文件
- 点击Configuration Files一栏,选择一个路径,新建文件夹rm75zf-eg2-moveit-config,点击Chose
- 点击Generate Package按钮
完成
Rviz仿真
在上图的launch文件夹中包含了很多launch文件,进入到launch文件夹,运行demo.launch
在可视化工具rviz中打开