以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逆解的快速玩法,对于细节不做过多深究。你没有必要完全掌握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。
fig01
添加完成后,将其与UR5建立关联。选中UR5_tip,然后按住Ctrl按键再选中UR6_link7,然后[Menu bar –> Edit –> Make last selected object parent]。
fig02

Step 3:添加你的 IKTarget

复制 UR5_tip,黏贴并重命名为 UR5_target。
fig03

Step 4:创建你的Tip-Target对

打开UR5_tip的属性窗口,按照下图设置:
fig04
完成后你可以看到UR5_tip 和 UR5_target 由一条红线连接。配对完成。

Step 5:创建 IK Group

现在你只是创建了两个关联的dummy,下面我们为其指定逆解组。打开Inverse kinematics dialog,添加一个新的 IK group,并将其更名为UR5:
fig05
完成后按照上图进行设置,点击 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 笛卡尔空间运动规划。

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

猜你喜欢

转载自blog.csdn.net/philthinker/article/details/79867312