MoveIT控制机械臂:
MoveIt Tutorials — moveit_tutorials Kinetic documentation
1. 建立机械臂仿真模型:
sudo apt-get install ros-melodic-moveit
sudo apt-get install ros-melodic-franka-description
roslaunch moveit_setup_assistant setup_assistant.launch
有两个选项:
- 新建配置 Create New MoveIt! Configuration Package
-
编辑已有配置 Edit Existing MoveIt! Configuration Package.
-
点击Browse按钮找到 panda_arm_hand.urdf.xacro 默认路径(/opt/ros/melodic/share/franka_description/robots/panda_arm_hand.urdf.xacro)。这个文件在安装Franka机器人描述包的后自带。随后点击Load Files。MoveIt Setup Assistant会开始加载机器人描述文件, 等待加载完成提示 Success! Use the left navigation pane to continue。
2. 生成自碰撞矩阵 Self-Collision Matrix
- 默认的碰撞免检矩阵生成器搜索机器人所有关节,这个碰撞免检矩阵是可以安全地关闭检查,从而减少行动规划的处理时间
- 在某些关节会关闭碰撞检查,比如总是碰撞,从不碰撞,在默认的位置碰撞,或在运动学链条上的相邻处。
- 采样密度指定了多少个随机机器人位置来检查碰撞。更高的密度需要更多的计算时间,而较低的密度就要减少关闭的检查节点
- 默认值是10000个碰撞检查。碰撞检查是并行完成,以减少处理时间。
选择左侧Self-Collisions, 点击Generate Collision Matrix按钮。稍加等待会呈现一个碰撞表格。
3. 添加虚拟关节 virtual joint
通过添加虚拟关节把机械臂关联到world。这里我们只需要定义一个虚拟关节把panda_link0关联到world,从而定义机械臂基座和world的坐标系关系。
- 选择左侧Virtual Joints, 点击Add Virtual Joint
- 定义名称为virtual_joint
- 定义子关节(child link)为panda_link0, 父关节(parent frame)为world
- 定义关节类型(joint type)为fixed
- 点击Save
4. 添加规划组planning group
MoveIt通过定义规划组(planning group)来语义上定义机机械臂的各个部分(如手臂,末端执行器等)。这是MoveIt中一个很重要的概念。简单来说就是定义某些关节为一个组合并起一个名字。
- 选择左侧Planning Groups
- 点击Add Group
添加规划组arm
-
输入名称panda_arm
-
运动学求解器选择kdl_kinematics_plugin/KDLKinematicsPlugin (一般用KDL就可以)如果需要更强大的求解器,参考IKFast Kinematics/IKFast
-
Kin. Search Resolution,Kin. Solver Attempts 和 *Kin. Search Timeout * 保持默认设置即可
-- Kin. Search Resolution: 关节空间的采样密度
-- Kin. Search TImeout: 求解超时时间
-- Kin. Solver Attempts: 求解失败尝试次数
点击Add Joints按钮,会出现所有关节的列表。arm规划组包括 joint0 到 joint8。
选中virtual_joint,按住shift再点击panda_joint8,点击>
按钮讲关节添加到右侧。。
-
点击Save保存
添加规划组gripper
- 再为末端执行器添加一个规划组,这次添加方法会有些许不同
- 输入Group Name为hand
- 配置同arm
- 点击Add Links按钮
和arm有区别
- 选择panda_hand, panda_leftfinger, 和panda_rightfinger 并添加到右侧
- 点击Save保存
5. 添加机器人姿态
MoveIt允许添加一个预设的机器人姿态,之后可以方便调用,例如初始姿态。
这里我们添加一个HOME姿态。
- 选择左侧Robot Poses
- 点击Add Pose按钮,定义名称为home
- 选择规划组panda_arm, 右侧会出现各个关节的滑条,拖动设置想要的姿态
- 点击Save保存
注意
尽量拖动每一个关节,这样如果URDF中有设置错误就可以看出来
6. 配置末端执行器End Effectors
MoveIt中会给末端执行器一个专门的标签-End Effectors
。之前我们已经为末端执行器添加了规划组,这里我们要将其标记为End Effector
- 选择左侧End Effectors
- 点击Add End Effector
- End Effector Name设置为hand
- End Effector Group选择之前添加的规划组hand
- 父关节选择为panda_link8
-
父规划组选择留空白
7. 添加被动关节Passive Joints
如果机器人中有被动的关节(不是主动控制的关节),需要将其添加为被动关节,这样可以告诉MoveIt在规划运动的时候这些关节是无法主动控制的。
Panda机械臂中没有被动关节,跳过这一步。
8. 设置3D感知
这里可以为机械臂添加传感器,如kinetic。
参数配置参考tutorial
如没有传感器,设置为None
9.填写姓名和Email