MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法

要使用MoveIt控制我们的机器人,需要配置一个ROS的软件包。MoveIt提供了一个图形化工具MoveIt Setup Assistant可以快捷的进行配置。

此教程原版为MoveIt官方文档:http://docs.ros.org/en/kinetic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html

中文版转载自:https://www.jianshu.com/p/16e0a4dd4b0c

介绍

MoveIt Setup Assistant是一个图形界面的工具,帮助配置MoveIt所需的ROS包。

  • 最主要的功能是生成SRDF文件 。 了解URDF/SDRF
  • 另外也生成MoveIt需要的管道(pipeline)的配置文件。

使用教程

这里通过官方的Franka机器人学习如何使用MoveIt配置助手。

 

sudo apt-get install ros-melodic-franka-description

1. 运行MoveIt Setup Assistant

启动MoveIt Setup Assistant

 

roslaunch moveit_setup_assistant setup_assistant.launch

有两个选项:

  • 新建配置 Create New MoveIt! Configuration Package
  • 编辑已有配置 Edit Existing MoveIt! Configuration Package.

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第1张图片

     

点击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

 

MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第2张图片

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

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

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

 

MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第3张图片

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
  • MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第4张图片

     

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: 求解失败尝试次数

     

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第5张图片

  • 点击Add Joints按钮,会出现所有关节的列表。arm规划组包括 joint0 到 joint8。
    选中virtual_joint,按住shift再点击panda_joint8,点击>按钮讲关节添加到右侧。

     

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第6张图片

  • 点击Save保存

添加规划组gripper

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

 

MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第7张图片5. 添加机器人姿态

MoveIt允许添加一个预设的机器人姿态,之后可以方便调用,例如初始姿态。
这里我们添加一个HOME姿态。

  • 选择左侧Robot Poses
  • 点击Add Pose按钮,定义名称为home
  • 选择规划组panda_arm, 右侧会出现各个关节的滑条,拖动设置想要的姿态
  • 点击Save保存
  • 注意 尽量拖动每一个关节,这样如果URDF中有设置错误就可以看出来

MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第8张图片

6. 配置末端执行器End Effectors

MoveIt中会给末端执行器一个专门的标签-End Effectors。之前我们已经为末端执行器添加了规划组,这里我们要将其标记为End Effector

  • 选择左侧End Effectors
  • 点击Add End Effector
  • End Effector Name设置为hand
  • End Effector Group选择之前添加的规划组hand
  • 父关节选择为panda_link8
  • 父规划组选择留空白

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第9张图片

     

7. 添加被动关节Passive Joints

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

8. 设置3D感知

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

如没有传感器,设置为None

9. Gazebo仿真

如果需要在Gazebo中仿真,可以在这里生成需要的URDF文件。(不需要可以跳过)

生成URDF后,通过如下步骤在Gazebo中生成仿真

  • 建立一个空的world

 

roslaunch gazebo_ros empty_world.launch paused:=true use_sim_time:=false gui:=true throttled:=false recording:=false debug:=true
  • 加载模型

 

rosrun gazebo_ros spawn_model -file  -urdf -x 0 -y 0 -z 1 -model panda

 

MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第10张图片

10. ROS Control

ROS Control是ROS官方提供的针对控制机器人的一套硬件驱动框架,针对不懂得运动执行器提供不同的驱动接口,再这之上又加入了一个硬件抽象层统一接入ROS,包含了一系列ROS包: controller interfaces, controller managers, transmissions and hardware_interfaces
ROS Control

这里我们可以通过ROS Control面板为关节添加模拟控制器,这样就可以通过MoveIt模拟机械臂运动。

  • 选择左侧ROS Control

  • 点击Add Controller

  • 首先为arm规划组添加position controller

  • 定义名称为arm_position_controller

  • 选择controller type为position_controllers/JointPositionController

     

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第11张图片

  • 下一步是添加控制的关节,这里可以单个关节添加,也可以添加整个规划组

  • 这里选择后者,点击Add Planning Group Joints

  • 选择规划组panda_arm 并添加到右侧

     

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第12张图片

  • 点击Save保存

11. 添加作者信息

可以把自己的信息填入,之后发布的时候需要 (主要是装个B)。

  • 选择Author Information
  • 输入名字和邮箱

12. 生成配置文件

最后一步啦!

  • 选择左侧 Configuration Files,点击browse选择一个合适的位置(例如/home/目录)
  • 点击Create New Folder,输入名称,点击Choose
  • 点击Generate Package 按钮,会生成一系列的launch和配置文件
  • 所有的文件显示在Generated Files/Folders列表

    MoveIt! 学习笔记12 - MoveIt! Setup Assistant 配置方法_第13张图片

     

 

至此,就完成了MoveIt包的配置,可以运行通过Rviz模拟了。

你可能感兴趣的:(ROS学习历程,MOVEIT)