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

python 控制机械手臂 控制机械臂的程序_机器学习

2. 生成自碰撞矩阵 Self-Collision Matrix

  • 默认的碰撞免检矩阵生成器搜索机器人所有关节,这个碰撞免检矩阵是可以安全地关闭检查,从而减少行动规划的处理时间
  • 在某些关节会关闭碰撞检查,比如总是碰撞,从不碰撞,在默认的位置碰撞,或在运动学链条上的相邻处。
  • 采样密度指定了多少个随机机器人位置来检查碰撞。更高的密度需要更多的计算时间,而较低的密度就要减少关闭的检查节点
  • 默认值是10000个碰撞检查。碰撞检查是并行完成,以减少处理时间。

选择左侧Self-Collisions, 点击Generate Collision Matrix按钮。稍加等待会呈现一个碰撞表格。

python 控制机械手臂 控制机械臂的程序_机器学习_02

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 

python 控制机械手臂 控制机械臂的程序_机械臂_03

4. 添加规划组planning group

MoveIt通过定义规划组(planning group)来语义上定义机机械臂的各个部分(如手臂,末端执行器等)。这是MoveIt中一个很重要的概念。简单来说就是定义某些关节为一个组合并起一个名字。

  • 选择左侧Planning Groups
  • 点击Add Group

添加规划组arm

  • 输入名称panda_arm
  • 运动学求解器选择kdl_kinematics_plugin/KDLKinematicsPlugin (一般用KDL就可以)如果需要更强大的求解器,参考IKFast Kinematics/IKFast
  • Kin. Search ResolutionKin. Solver Attempts 和 *Kin. Search Timeout * 保持默认设置即可
    -- Kin. Search Resolution: 关节空间的采样密度
    -- Kin. Search TImeout: 求解超时时间
    -- Kin. Solver Attempts: 求解失败尝试次数

python 控制机械手臂 控制机械臂的程序_机器学习_04

点击Add Joints按钮,会出现所有关节的列表。arm规划组包括 joint0 到 joint8。

选中virtual_joint,按住shift再点击panda_joint8,点击>按钮讲关节添加到右侧。。 

python 控制机械手臂 控制机械臂的程序_机械臂_05

  • 点击Save保存

添加规划组gripper

  • 再为末端执行器添加一个规划组,这次添加方法会有些许不同
  • 输入Group Name为hand
  • 配置同arm
  • 点击Add Links按钮 和arm有区别
  • 选择panda_hand, panda_leftfinger, 和panda_rightfinger 并添加到右侧
  • 点击Save保存

python 控制机械手臂 控制机械臂的程序_人工智能_06

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
  • 父规划组选择留空白

python 控制机械手臂 控制机械臂的程序_自动驾驶_07

7. 添加被动关节Passive Joints

如果机器人中有被动的关节(不是主动控制的关节),需要将其添加为被动关节,这样可以告诉MoveIt在规划运动的时候这些关节是无法主动控制的。
Panda机械臂中没有被动关节,跳过这一步。

8. 设置3D感知

这里可以为机械臂添加传感器,如kinetic。
参数配置参考tutorial

如没有传感器,设置为None

9.填写姓名和Email

python 控制机械手臂 控制机械臂的程序_机械臂_08