< >
Home » MoveIt!入门教程 » MoveIt!入门教程-创建库卡机械臂LWR的MoveIt!配置包

MoveIt!入门教程-创建库卡机械臂LWR的MoveIt!配置包

MoveIt!入门教程-创建库卡机械臂LWR的MoveIt!配置包

说明

  • 介绍如何从URDF模型创建机器臂的MoveIt!配置包
  • 介绍库卡固定底座7自由度的机械臂

准备

步骤

  • 制作URDF模型包,下载库卡7自由度的机械臂的URDF模型,点击查看github下载,新建目录存放代码库
$ cd ~
$ git clone https://github.com/openhumanoids/exotica.git
$ cd ~/catkin_ws/src
$ catkin_create_pkg lwr_description
$ cd lwr_description
$ mkdir urdf
$ sudo cp ~/exotica/examples/sovlers/ik_solver_demo/resources/lwr_simplified.urdf .
  • 打开配置助手:
$ roslaunch moveit_setup_assistant setup_assistant.launch
  • 载入模型:
    请输入图片描述

    • 点击Create New MoveIt Configuration Package来创建新的配置包
    • 选择urdf,路径~/catkin_ws/src/lwr_description/urdf/lwr_simplified.urdf
    • 然后点击Load Files
  • 配置Self-Collisions(自冲突):
    请输入图片描述

  • 创建碰撞免检矩阵(Avoid Collision Matrix, ACM)

  • 点击一下'Regenerate Default Collision Matrix'就可以了

  • 配置Virtual Joints(虚拟关节):
    请输入图片描述

    • Virtual Joint Name我们命名为'world_joint'

    • 'Child Link'指的是我们要把‘世界’和机器人连接的那个部位,选择基座'base'

    • 'Parent Frame Name',是世界坐标系的名称,一般叫'world_frame'

    • 关节类型,有三种 Joint Type, Planar,Floating

    • 关节类型:

      • Fixed,代表机器人相对于世界是固定的。
      • Planar,指的是平面移动底座(xy平面+角度),用于移动机器人比如PR2
      • Floating, 指的是浮动基座(xyz position+orientation),比如类人机器人
    • 这里我们选择固定Fixed. 代表机器人相对于世界是固定的。

  • 配置Planning Groups(规划组):
    请输入图片描述
    请输入图片描述

    • 选项说明:

      • Group Name: 组名,这里叫Arm。
      • Kinematic Solver: 运动学求解工具,这个就是负责求解正向运动学(Forward Kinematics)和逆运动学(IK)的。
      • 一般我们选用KDL, The Kinematics and Dynamics Library。
      • 这是一个运动学与动力学的库,可以很好的解决6自由度以上的单链机械结构的正逆运动学问题。
      • 你也可以用其他IK Solver, 比如SRV或者IK_FAST,甚至你可以自己开发新的Solver然后插入进来。
      • Kin. Search Resolution: 关节空间的采样密度
      • Kin. Search TImeout: 求解时间
      • Kin. Solver Attempts: 求解失败尝试次数,一般来说这三项使用默认值就可以。
    • 创建这个组群,有很多不同的方法:

      • Add Joints, Add Links, Add Kin. Chain, Add Subgroups。
      • 我们这里选择'Add Kin. Chain',这样我们可以清楚的看到整个机器人的机械机构。
      • 在正中方我们可以看到这个机械臂的结构,一个link接着一个link。
      • 下方我们可以看到有'Base Link'和'Tip Link',
      • 我们选择'lwr_arm_
    • 然后点击Save,这样一个规划组就创建好了。

    • 同样的,我们可以再创建一个手的组群(Hand),这一次我们用Add Links,然后选择'lwr_arm_7_link'。

    • Kinematic Solver为none

    • Kin. Search Resolution,Kin. Search TImeout,Kin. Solver Attempts保持默认值。

  • 配置Robot Poses(机器人位姿):
    请输入图片描述

    • 创建预设的机器人位姿
    • 点击‘Add Pose’,我们为机械臂创建一个向上直立的位姿UpRight,选择Planning Group为Arm。
    • 可以看到很多滚动条,全设为0就是垂直向上的位姿。
    • 然后点击保存。
  • 配置End Effectors(末端执行器)
    请输入图片描述

    • 末端执行器,就是机械臂的手,以后用来在工作环境中直接控制的部位。
    • 添加一个叫做HandEff的终端控制器,End Effector Group选择之前创建好的Hand。
    • Parent_Link选择机械臂的最后一个肢体lwr_arm_7_link。
    • Parent Group选择Arm。
  • 配置Passive Joints(被动关节):

    • 被动关节,就是指现实中不配置电机的关节。
    • 也就是不会出现在机器人的Joint State Msg里,以避免MoveIt与JointState出现匹配错误。
    • LWR机械臂并没有此类被动关节,跳过。
  • 生成Configuration Files(配置文件):
    请输入图片描述

    • 在Configuration Package Save Path里面选择一个保存地址
    • 一般我们把他放在catkin_ws/src/lwr_moveit_config
    • 然后点击Generate Package
    • 至此,完整的机械臂MoveIt!配置包就创建好了

编译

$ cd ~/catkin_ws
$ catkin_make

运行

  • 启动roscore
$ roscore
  • 启动配置包
$ roslaunch lwr_moveit_config demo.launch

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: moveit!入门教程