以UR5为例浅析V-REP中的逆向运动学 - Overview of IK in V-REP: Take UR5 for illustration

OS: Win10 x64
V-REP: V-REP PRO EDU 3.5.0
MATLAB: 2016b

下面我们来聊一聊V-REP中的机械臂逆向运动学问题。这里我们以UR5的为例进行介绍。对于想要深入了解V-REP逆向运动学的读者,请参考官方手册和官方教程。
V-REP
我们假设你对V-REP的基本操作有一定了解。

  • V-REP逆解概述
  • 一个例子:UR5的V-REP逆解
  • 有关逆解的常用API

实用性考虑,我们这里介绍V-REP逆解的快速玩法,对于细节不做过多深究。你没有必要完全掌握V-REP逆解基础,但是也建议稍加了解。

V-REP逆解概述

V-REP提供多种求逆解的模式,每种各有特色,当然你也可以穿插着使用,但同一时间智能用一种。穿插使用的方法是设定不同的范围启用不同的逆解模式,这种方式有些复杂。V-REP安装文件夹下提供了各种不同方式的示例场景,在

YOUR_INSTALL_PATH\V-REP3\V-REP_PRO_EDU\scenes\ik_fk_simple_examples

下可以找到。建议学习之前先看一下每一个例子,当然不看也不影响你阅读下面的内容。

一个例子:UR5的V-REP逆解

这里我们仅以UR5为例,一步一步介绍如何在V-REP中添加逆解。注意此时我们采用的是V-REP模型浏览器中自带的UR5,也不修改各个模块的名称。这里我们从零开始搭建。官方也给出了一个完整的实验环境:

YOUR_INSTALL_PATH\V-REP3\V-REP_PRO_EDU\scenes\ur5WithRg2Grasping

下面我们一步一步来搭建我们的环境。

Step 1: 搭建你的V-REP仿真环境

新建一个V-REP环境,将UR5拖拽到环境中,并将RG2安装在UR5末端即可。主要不要修改每个模块的名称。如果你对这些操作不太熟悉,建议直接从Github上下载这个工具包:

[email protected]:philthinker/ICECUBE-VREPToolbox.git

打开其中的 UR5plusRG2.ttt 环境。

Step 2: 添加你的 IKTip

添加一个dummy,dummy在V-REP 中是最简单的模型。然后调整其位置到(-3.7658e-1,+0e+0,+1.0013e+0),注意此时我们假设你的UR的坐标是(+0e+0,+0e+0,+1.4650e-2)。如果你调整的UR的位置,那么这个dummy的位置也需要左相应的调整。当然也没有这么死板,只要将其放在你认为的夹持器工作中心即可。然后将其重命名为 UR5_tip。
以UR5为例浅析V-REP中的逆向运动学 - Overview of IK in V-REP: Take UR5 for illustration_第1张图片
添加完成后,将其与UR5建立关联。选中UR5_tip,然后按住Ctrl按键再选中UR6_link7,然后[Menu bar –> Edit –> Make last selected object parent]。
以UR5为例浅析V-REP中的逆向运动学 - Overview of IK in V-REP: Take UR5 for illustration_第2张图片

Step 3:添加你的 IKTarget

复制 UR5_tip,黏贴并重命名为 UR5_target。
以UR5为例浅析V-REP中的逆向运动学 - Overview of IK in V-REP: Take UR5 for illustration_第3张图片

Step 4:创建你的Tip-Target对

打开UR5_tip的属性窗口,按照下图设置:
以UR5为例浅析V-REP中的逆向运动学 - Overview of IK in V-REP: Take UR5 for illustration_第4张图片
完成后你可以看到UR5_tip 和 UR5_target 由一条红线连接。配对完成。

Step 5:创建 IK Group

现在你只是创建了两个关联的dummy,下面我们为其指定逆解组。打开Inverse kinematics dialog,添加一个新的 IK group,并将其更名为UR5:
以UR5为例浅析V-REP中的逆向运动学 - Overview of IK in V-REP: Take UR5 for illustration_第5张图片
完成后按照上图进行设置,点击 Edit IK elements。在IK Group dialog中,在左上角的下拉菜单中选择UR5_tip,然后点击 Add new IK elemtn with tip。此时IK elements 列表中会添加一项 UR5_tip。点击UR5_tip,在下方的Kinematic chain section 中,将Base设置为 UR5。在下方的Constraints section 中勾选所有复选框,完成后关闭IK Group dialog。

此处关于 Inverse kinematics dialog中各个复选框的含义请参考官方文档说明。

Step 5:完成

好了,现状你已经基本完成逆解的配置,你可以将UR5_target dummy合并到UR5下,并将UR5_tip 和 UR5_target的 Visibility 属性调整到第11层使它们隐藏。当然这都不是必须的。

下面做一个简单的测试。注意这里的测试方法与官方教程中给出的不同,对于想深入了解V-REP逆解机制的读者可以参考官方教材进行操作,然而对于想快速入门的读者不建议这样做,因为因为太费时,而且是没必要的。测试方式如下:

  1. 打开UR5的script。
  2. 删除原有代码,输入如下代码。
  3. 运行仿真,观测UR5的动作。可以看到它的末端走了一个方形的四个顶点。

有关逆解的常用API

下面列举一些常用的有关逆解的Lua API。

  1. sim.getObjectMatrix 获取场景中对象的变换矩阵(H)。
  2. sim.setObjectMatrix 设置场景中对象的变换矩阵(H)。
  3. sim.setJointMode 设置某关节控制模式。
  4. sim.getIKGroupHandle 获取IK Group的引用。
  5. sim.getObjectPosition 获取场景中某个对象的位置。
  6. sim.getObjectQuaternion 获取场景中某个对象的姿态(四元数)。
  7. sim.rmlMoveToJointPosition 关节空间运动规划。
  8. sim.rmlMoveToPosition 笛卡尔空间运动规划。

以上是常用的,其它相关的请参考这里。

你可能感兴趣的:(Code,and,IDE,机器人)