使用 MoveIt Setup Assistant 创建 husky_kinova_moveit_config 功能包
1.在之前创建的ws_moveit工作区中运行MoveIt Setup Assistant
roslaunch moveit_setup_assistant setup_assistant.launch
点击Create New MoveIt! Configuration Package按钮
点击browse按钮找到 husky.urdf.xacro 路径,然后点击Load Files。
发现它搜索的路径范围只包含上边显示的三个,可以添加路径,当然也可以直接把模型文件复制到/ws_moveit/src。
ROS path问题解决方案
路径问题解决后,又出错了:
太头疼了,可能还是机器人模型文件写的不够规范,还是老方法来解决
MoveIt Setup Assistant会开始加载机器人描述文件, 等待加载完成提示 Success! Use the left navigation pane to continue。
2.生成自碰撞矩阵Self-Collision Matrix
- 默认的碰撞免检矩阵生成器搜索机器人所有关节,这个碰撞免检矩阵是可以安全地关闭检查,从而减少行动规划的处理时间
- 在某些关节会关闭碰撞检查,比如总是碰撞,从不碰撞,在默认的位置碰撞,或在运动学链条上的相邻处。
- 采样密度指定了多少个随机机器人位置来检查碰撞。更高的密度需要更多的计算时间,而较低的密度就要减少关闭的检查节点
- 默认值是10000个碰撞检查。碰撞检查是并行完成,以减少处理时间。
点击左侧的 Self-Collisions 面板按钮,点击 Generate Collision Matrix 按钮,等待自碰撞计算完成
3.添加虚拟关节
因为这里机械臂的基座是husky小车,是移动的,则不需要添加虚拟关节
4.添加规划组
MoveIt通过定义规划组(planning group)来语义上定义机机械臂的各个部分(如手臂,末端执行器等)。这是MoveIt中一个很重要的概念。简单来说就是定义某些关节为一个组合并起一个名字。
- 点击左侧 Planning Groups 面板按钮
-
选择 Add Group ,将会看到如下界面:
添加手臂规划组:
01.输入Group Name为kinova_j2n6s300
02.选择 kdl_kinematics_plugin/KDLKinematicsPlugin 作为运动学求解器。(注意:如果你有一个自定义的机器人,也可以选择自定义IK求解器,详见 Kinematics/IKFast)
03.保持其余选项不变
04.点击 Add Joints 按钮。在关节列表中选择手臂部分所属的关节,添加到右侧
05.点击 Save 存储规划组
添加手爪规划组:
01.点击 Add Group 按钮
02.输入 Group Name 为 hand
03.保持其余选项不变
04.点击 Add Links 按钮
5.添加预置机器人位姿
- 选择左侧Robot Poses
- 点击Add Pose按钮,定义名称为home
- 选择规划组kinova_j2n6s300, 右侧会出现各个关节的滑条,拖动设置想要的姿态
- 点击Save保存
-
注意 尽量拖动每一个关节,这样如果URDF中有设置错误就可以看出来
6.配置末端执行器End Effectors
MoveIt中会给末端执行器一个专门的标签-End Effectors。之前我们已经为末端执行器添加了规划组,这里我们要将其标记为End Effector
- 选择左侧End Effectors
- 点击Add End Effector
- End Effector Name设置为hand
- End Effector Group选择之前添加的规划组hand
- 父关节选择为j2n6s300_link_6
-
父规划组选择留空白
7.添加被动关节、3D感知、Gazebo仿真、ROS Control在这里跳过就可
8.添加作者信息,不添加的话生不成软件包
9.生成配置文件:设置好存储名称和位置,点击Generate Package,就完成了husky_kinova_moveit_config的创建。
特别需要注意的一点就是在添加规划组的时候,一定要将joint或者link一个一个的添加到右栏中去,不能按Ctrl一块添加,这样是无效的操作,规划组里什么也没有,也就无法生成包。
10.运行
roslaunch husky_kinova_moveit_config demo.launch rviz_tutorial:=true