导语

在这一系列的V-REP自学笔记中,我们定了一个小目标,完成一个Demo。使用官方提供的KUKA公司的YouBot机器人模型来实验机器人的感知和控制过程,控制机器人从A点抓取物品,然后移动到B点将物品放置在B点的工作台上,这其中涉及到V-REP环境中的机器人感知和控制过程。没有看过前期学习笔记的读者,可以在文末找到往期文章地址。

在上一期的自学笔记中,我们讲述了YouBot机器人底盘的运动学模型,并使用V-REP中的Dummy和Path来进行路径规划,控制YouBot机器人按照规划的路径进行运动。在本期笔记中,我们将学习如何在V-REP软件中使用Dummy和Path以及V-REP软件自带的逆运动学模块来控制YouBot的机械臂按照设定好的路径运动。话不多说,先放一个最终效果的演示视频:

学过机器人学的读者都知道,机械臂的运动学建模常用的方法是D-H法,近年来也有一些新兴的方法用来构建机器人的运动学和动力学模型,例如旋量法(旋量理论实际上就是李群李代数在机器人运动学上的应用,此方法在书籍《Modern Robotics: Mechanics, Planning, and Control》中有详细介绍,感兴趣的读者可以自行阅读)。本文介绍的是使用V-REP软件自带的逆运动学模块(IK模块)来解决机器人的逆运动学问题。

1. Dummy和Path简介

在介绍使用V-REP的IK模块进行逆运动学规划的内容前,我们先来了解V-REP提供的两个基本模型:Dummy和Path。在V-REP中提供一种带有姿态信息的“虚拟点”,叫Dummy,其本身可以被视为没有重量和体积的质点,跟数学上“点”的概念差不多,但是这个质点本身是携带姿态信息的,所以是一个特殊的点。

Dummy可以用来做什么呢?主要是两种应用场景:

  • 作为“领航点”。Dummy常常与Path相结合来作为目标运动位置的“领航者”,例如作为机械臂末端执行机构的目标运动点,包含位置和姿态信息。Dummy与Path相结合以后,可以随着Path运动,而Path就是我们自己定义好的目标运动轨迹,属于轨迹规划的内容,有许多方法可以做。

  • 作为“传感点”。因为其本身可以携带姿态信息,因此我们可以将它与机器人的某些部件“绑定”,从而在部件运动的时候可以从它这里获取到部件在V-REP仿真环境中的运动信息:位置、速度、姿态等,起到类似位置和姿态传感器的作用。

Dummy与其他模型一样,可以设置大小和颜色,也通过拖拽和V-REP提供的界面改变它的位置和姿态等信息。

那么Path是什么呢?Path就是其字面意思:路径。Path用来定义一条三维的运动轨迹,不管是机械臂末端的空间运动轨迹,还是小车在地面上的行进轨迹,都可以使用Path来做。在V-REP中,我们使用鼠标右键add来添加Path,主要有2种类型的Path:

  • Circle Type:顾名思义,就是封闭的圆圈型的Path,Path的首位相连组成一个连续封闭的路径;

  • Segment Type:是一种非封闭的路径,基本形状是一个由起始点和终点2个点连接组成的“线段”。

这两种类型的Path是创建复杂Path的基本组件,我们可以使用这两种组件组合来生成多种多样的Path,当然,这两种Path也可以通过设置其属性来相互转换。这里我们以Circle型的Path为例来讲一下Path如何构建。使用鼠标右键新建一个Path以后,我们可以鼠标操作改变它的位置和姿态。

在创建好一个基本的Path以后,我们选中该Path,可以通过点击下图所示的按钮来编辑这条Path:

点击进去以后,我们就可以开始编辑这条Path了。由于Path是有一些基本的控制点来生成的,我们不用指定Path上的每一个数据点,只需要设置好这些控制点即可,然后V-REP会使用这些控制点结合贝塞尔曲线方法来生成Path。Path编辑的方式包括平移整条Path,旋转整条Path,新增和删除Path的控制点(下图中的Path point)等。

这些控制点可以被改变位置和姿态,通过鼠标拖拽或者点击下图所示的状态栏按钮以后使用右上角的设置对话框来直接设定对应的参数,读者可以慢慢摸索:

除了平面的Path,通过设置这些控制点的空间位置,我们也可以生成三维空间的Path,例如本文中用到的Path就是通过这种方法来生成机械臂末端运动的空间Path的:

当然,除了手动设置,我们也可以用程序代码来生成Path,这里本文不做深入介绍,欢迎关注后续文章。Dummy和Path的基本内容讲完了,那么他们如何配合起来使用呢?首先,我们要讲Dummy绑定到Path下面,绑定的方法很简单,鼠标拖拽Dummy到Path的下方就可以了。

然后给Dummy创建一个Lua脚本,记得一定要创建为thread类型的,新开一个线程:

在创建好的Dummy脚本里面填充下面的代码,设置Dummy跟随Path运动,设置运动速度为0.1:

function sysCall_threadmain()dummy_handle = sim.getObjectHandle('Dummy')path_handle = sim.getObjectHandle('Path0')print('start follow path')sim.followPath(dummy_handle, path_handle, 1, 0, 0.1, 1)
end

启动软件的仿真,就可以看到Dummy跟随Path运动的效果啦。

有了Dummy和Path,我们只需要将YouBot的机械臂末端与Dummy绑定,并结合V-REP提供的逆运动学(IK)模块即可实现机械臂的运动控制。

2. YouBot的机械臂简介

YouBot机械臂一共有5个自由度,由5个旋转关节(A1-A5)和相应的连杆机构串联组成,是典型的串联型机械臂,每个关节的运动角度范围、关节运动方向和连杆长度如图所示。这种串联型的机械臂的运动学模型在传统上一般采用D-H法来构建,但本文打算使用V-REP软件自带的逆运动学模块,不需要用户自行构建机械臂的运动学模型,只需要遵循V-REP逆运动学模型的使用方法对机械臂的各个关节进行设置即可。

3. 使用V-REP自带的逆运动学模块

V-REP自带的逆运动学(IK)模块不仅可以支持官方提供的模型,也支持用户自己设计的机器人模型,所以用户在设计好自己的机器人模型以后可以导入到V-REP中,定义好机器人模型连杆和关节的约束关系,构建好机器人模型的“树结构”,然后就可以使用V-REP自带的逆运动学模块了。在V-REP官方提供的模型当中,许多需要使用IK模块的机器人模型的关节已经被设定为IK模式了,例如YouBot机器人,因此我们可以直接使用。但是对于一个新设计的机器人模型来说,V-REP逆运动学模块的使用过程大致可以分为以下6个步骤:

  1. 将所有参与逆运动学计算的关节设定为IK模式;

  2. 添加target dummy、tip dummy;

  3. 添加Path,并让target dummy跟随Path运动;

  4. Link target dummy 和 tip dummy;

  5. 添加IK group和IK element;

  6. 添加script,开始仿真。

3.1 将所有参与逆运动学计算的关节设定为IK模式

如下图所示,依次选择YouBot机器人机械臂的joint0 - joint3,点击左边的“放大镜”,将Joint设置为Inverse Kinematics Mode。

此外,关节可选的控制模式还有Passive Mode、Torque/force Mode等,这里YouBot机械臂的加持机构就采用的Torque/force Mode,直接给关节驱动力进行扭矩控制,而非关节的位置控制。

3.2 添加target dummy、tip dummy和Path

第2和第3个步骤是添加target dummy、tip dummy、Path和控制dummy随Path运动,添加完成以后可以改一个自己喜欢的名字。target dummy用于跟随Path运动,作为机械臂末端机构的“领航者”,而tip dummy作为机械臂末端执行机构的“传感点”,用于反馈机械臂末端的位置和姿态,同时如果将target dummy与tip dummy绑定并且构建逆运动学模型,则tip dummy可以带动机械臂跟随 target dummy运动。添加dummy和Path的过程和设定dummy跟随Path运动的过程在前面已经介绍过了,这里不再赘述。

这里我们使用Circle型的Path,添加Path以后按照前面介绍的过程调整Path为一个三维的封闭路径,如下图所示。Target dummy与Path绑定之前已经讲过了,而tip dummy需要绑定到YouBot机械臂的某一个连杆上,同样的,直接使用鼠标拉拽到对应的树形结构下即可,可以是youBotArmJoint3,也可以是youBotArmJoint4。然后按照前面介绍的设置Dummy位置的办法将taget dummy和 tip dummy的初始位置设定机械臂的夹持机构中间位置,作为路径的起点。当然,我们也可以设定到任意位置,但是一旦开始运动,机械臂会以最快的速度到达那个初始位置,一般不要这么做。如果是自己设计的机器人模型,这个初始位置就根据你所要完成的任务来设定了。

3.3 将Target dummy 和 tip dummy链接起来

这里介绍一下如何将target dummy 和 tip dummy绑定到对应的机构以及如何Link彼此,也非常的简单,点击左边的放大镜图标,在邮编选择linked dummy到youBot_positionTip,选择完成以后,在target dummy和tip dummy之间会有一个红色的箭头链接彼此,出现了这个箭头就说明设定成功了,如下图所示:

到了这一步,我们已经可以让target dummy随着Path运动了,运动的效果如下图所示:

我们只看到了target dummy随着Path运动,而机械臂却不动作,因为这还不够,我们还有2个步骤没完成。‍

3.4 添加IK group和IK element

前面我们将机械臂的各个关节都设定为了IK模式,这里我们需要将他们组合起来共同运动,这里需要用到V-REP的Calculation Modules,也就是左边的f(x)按钮,如题下图所示:

点击f(x),在弹出的窗口中选择Kinematics,在下面添加新的IK Group,可以自定义名字。然后点击新建的IK_Group设定Calc.method,这里可选的有两个,一个是Pseudo inverse,一个是DLS,这里任意选一个都可以。点击Edit IK Elements,添加IK Element with tip,一个IK Group可以添加多个IK Element,将下面的Base设定为youBot表示以youBot为参考基准,此外,下面的Constraints里面的X、Y、Z表示空间位置的三维坐标信息,Alpha-beta 和 Gamma表示三维姿态信息,由于youBot的机械臂自由度不够,这里我们不选姿态信息,仅仅设置跟随位置信息即可,否则就会出现下面这种情况:

3.5 给YouBot添加Script

前面的教程里面我们已经详细的介绍了如何使用Lua代码来控制机器人,这里不再赘述,对于本文的目标来说,我们只需要做一个工作:调用sim.setJointTargetVelocity()函数控制机器人的四个轮子不让其随意运动即可,即将其速度设置为零,详细的代码见Gihub仓库。最后的效果如下图所示:

到此为止,使用V-REP自带的IK模块控制YouBot机器人的机械臂末端跟随一个自定义的路径运动就已经介绍完了,其中定义路径的Path可以由用户根据需要进行自定义,本项目涉及到的代码都已发布在Github上,欢迎大家Star和下载使用。

项目地址:https://github.com/chauby/V-REP-YouBot-Demo.git

往期回顾

【V-REP自学笔记(三)】用代码控制机器人

【V-REP自学笔记(四)】键盘控制YouBot机器人

【V-REP自学笔记(五)】YouBot底盘运动学与路径规划

参考

YouTube上有一个国外小哥的教学视频,英文解说的,口音有点重,听起来像印度小哥,如果感兴趣的可以去看一看,地址:

https://www.youtube.com/watch?v=X73NzCc2E2c

作者知识有限,有不正确的地方还望读者能够指出来,大家共同学习和进步,不胜感激!想要获取更多文章,欢迎扫描或长按下方二维码关注公众号:博士的沙漏。

【V-REP自学笔记(六)】基于V-REP逆运动学模块的机械臂轨迹规划相关推荐

  1. 基于MATLAB的关节型六轴机械臂轨迹规划仿真(2021实测完整代码)

    我是一个目录 基于MATLAB的关节型六轴机械臂轨迹规划仿真 1 实验目的 2 实验内容 2.1标准D-H参数法 2.2实验中使用的Matlab函数 3实验结果 4 全部代码 基于MATLAB的关节型 ...

  2. 基于matlab的mk2三自由度机械臂轨迹规划及控制器仿真设计

    基于matlab的mk2三自由度机械臂轨迹规划及控制器仿真设计(报告+ppt) 摘 要:本文的研究对象为EEZYbotARM MK2三自由度机械臂,分析了其机械结构,建立D-H参数表,同时在MATLA ...

  3. 【机械】基于简化几何解法的六轴机械臂位置规划附matlab代码

    1 内容介绍 基于简化几何解法的六轴机械臂位置规划附matlab代码 2 部分代码 clc; clear; %载入数据 importfile('shuiping.mat'); theta_shuipi ...

  4. 【机械仿真】基于matlab简化几何解法六轴机械臂位置规划【含Matlab源码 2128期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab简化几何解法六轴机械臂位置规划[含Matlab源码 2128期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  5. 02论文分享与分析——基于ROS的移动机械臂底层规划及运动仿真

    [1]钱伟. 基于ROS的移动操作机械臂底层规划及运动仿真[D].哈尔滨工业大学,2015. 0.摘要 钱伟学长的论文在我学习轨迹规划初期就开始阅读,在学习过程中,也对于很多疑惑的问题,找寻到了答案, ...

  6. 走好每一步,基于C实现机器人运动学建模与标定、运动规划、轨迹规划算法

    走好每一步,基于C实现机器人运动学建模与标定.运动规划.轨迹规划算法 废话 综述 一:C部分 初始C语言 Chapter2-4:基本数据类型 Chapter5-7:运算符.表达式.循环.分支与跳转 C ...

  7. matlab 角度转四元数_基于Matlab的机械臂路径规划

    什么是 trajectory(路径)规划 中文路径在英语中可能有两种翻译: 1. path 2. trajectory 首先告诉大家,我们所说的"路径"是后者--trajector ...

  8. 基于Kinect体感器控制的机械臂项目记录

    基于Kinect体感器控制的机械臂 项目介绍 上位机代码说明 1.识别部分 1.1GetPosition.cpp 1.2 KinetJiointFilter.cpp 1.3 1.4 SerialPor ...

  9. 基于adams与simulink的七自由度机械臂模型与控制仿真

    基于adams与simulink的七自由度机械臂模型与控制仿真 最近在搞adams与simulink联合仿真,发现网上关于高自由度机械臂的建模与仿真中文资料很少,也没有开源模型.因此将我的学习成果开源 ...

  10. 基于蚁群算法的六轴机械臂路径规划(运动学模型建立)

    机器人运动学模型的建立 1 D-H参数法建立坐标系 2 机器人运动学分析 2.1 运动学正解 2.2 运动学逆解 3 机器人的轨迹仿真 1 D-H参数法建立坐标系 代码: clear; clc; %建 ...

最新文章

  1. Facebook 应用机器学习团队专访:人工智能在 Facebook 中的应用
  2. c++局域网主动ftp_【Jmeter】使用Jmeter对FTP协议的测试
  3. windows 7 安装及.net开发环境搭建
  4. RHEL4下 squid-2.7.STABLE9安装配置
  5. OpenCV安全屏障摄像机Security Barrier Camera的实例(附完整代码)
  6. SDK 和 API
  7. Vue 从入门到进阶之路(十四)
  8. python文件操作的方法_python中文件操作的基本方法
  9. 如何在SQL Server中使用级联删除?
  10. 简单复制粘贴个linux红帽6
  11. SQL_Server_2008完全学习之第五章操作架构、索引和视图
  12. Hexo添加可控制网易云音乐播放器
  13. baidu.com 百度域名被劫持怎么办 baidu.yxsc33.com
  14. leetcode | 整数反转
  15. PXIe,PXI,CPCI相互区别和关系,总线之间,几种机箱之间是否兼容?
  16. java如何实现导出Excel(附源码)--文末送书
  17. HDU 4417 Super Mario(离线线段树or树状数组)
  18. 【前端小实战】百度新闻雪碧图及动画(CSS sprites)
  19. 通用设计法则:80/20法则
  20. [cesium] | 视频融合 | 自定义视频投放

热门文章

  1. textarea字数实时统计方案
  2. 10.23 第六次作业 刘惠惠 this关键字
  3. ios 横竖屏显示视频播放问题分析
  4. 计算机应用技术需要学数学吗,学计算机应用技术能不学数学吗?
  5. 《戴上“白帽子”的黑客们:把漏洞变成礼物》
  6. 淘宝自动查券找券返利机器人搭建教程
  7. favicon.ico在线制作,在线Favicon.ico制作转换工具
  8. python合并相同内容单元格_快速合并单元格相同项的内容
  9. 光纤交换机配置zone
  10. DxO发布Nik Collection 5插件,胶片颗粒更逼真