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
参考:
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号