CoppeliaSim Edu(原V-rep)入门三实验指南

2024-03-16 12:18

本文主要是介绍CoppeliaSim Edu(原V-rep)入门三实验指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



Dummy对象和IKGroup的使用

实验目的

  1. 熟悉Dummy对象和IKGroup的使用,并用他们对UR10机器人进行逆运动学求解;

  2. 观察使用不同求解器、不同迭代步数下的逆解效果。

实验原理

利用雅可比矩阵将关节空间速度映射到直角坐标空间的性质可构造向量值函数:
p = f ( q ) p = f(q) p=f(q)

而逆运动学问题即是求解方程: f ( q ) = p d f(q) = p_{d} f(q)=pd

求解这个方程可用牛顿-拉弗森迭代法,即考虑函数 f ( q ) f(q) f(q)对于 q q q的雅可比矩阵 J J J f ( q ) f(q) f(q)的输出的往往是一个 1 × 6 1\times 6 1×6的向量, q q q是一个 1 × n 1\times n 1×n的向量,其雅可比矩阵是一个 6 × n 6\times n 6×n阶的矩阵),用如下迭代公式进行迭代求解的方法:
J ( q n ) ( q n + 1 − q n ) = p d − f ( q n ) J(q_{n})\left(q_{n+1} - q_{n}\right)= p_{d}-f(q_{n}) J(qn)(qn+1qn)=pdf(qn)

很多情况下 J J J并不可逆,这时候有几种方法来求解这个问题。

  1. 伪逆法,求解 J J J的伪逆来求解方程;

  2. 阻尼最小二乘法,求解上述方程的最小二乘解作为上述方程的近似解来迭代。

实验步骤

  1. 导入模型并设置好机械臂

    1. 打开程序后在"model
      browser"中找到"UR10.ttm",将其拖入当前场景中。

    2. 选中其所有关节,在"sean objects properties"中设置其为"inverse
      kinematics mode"并勾选"hybrid operation"选项。

  2. 在机械臂末端创建两个"Dummy"对象,分别命名为"ur10_tip"和"ur10_target",并将"ur10_tip"添加为末端连杆"UR10_link7"的子对象。

  3. 在"sean objects properties"连接两个"Dummy"对象,连接类型选择为"IK,
    tio-target"。

  4. 根据刚刚所创建的"tip-target"对在"inverse kinematics"对话框中创建"ik
    group",并设置求解器和最大迭代次数。

  5. 点击运行,等待默认程序执行完毕后拖动"ur10_target",可观察到机器人自觉移动末端到目标位置。

实验结果与分析

  1. 在实验中可观察到,当所设置的最大迭代次数太小时,机械臂处于抖动的状态,无法移动到目标位置;

  2. 在选用"Pseudo
    inverse"求解器时,关节初始位形是奇异位形的时候,无论设置多大的最大迭代次数,迭代都不能收敛;

  3. 选用"DSL"求解器时,迭代求解会比较缓慢,当"target"和"tip"距离比较远的时候,迭代次数设置到最大值( 400 400 400)都不能够收敛。

机器人码垛任务设计与实践

实验目的

  1. 学会设计码垛任务的工作路径;

  2. 对机器人夹取工件和摆放工件的末端位姿要求有一个清晰的认识;

  3. 对机器人末端执行机构有一个较清晰的认识

实验原理

移动被标记为"target"的"Dummy",就可以通过"IKGroup"求解出机器人末端运动到"target"处的关节位形,从而进行正向动力学即可使机器人末端运动到指定位置。

在这里需要注意以下两点:

  1. 需要保证整个运动过程机器人各连杆间、机器人与外界不发生干涉;

  2. 对不同的工件进行夹取操作时,除了夹具的位置还应注意考虑夹具的方向,以便保证工件被夹住之后不易坠落。

实验步骤

  1. 末端执行机构安装

    把"RG2"对象设为"UR10_connection"的子对象,调整其位置和方向使其与实际安装情况一致,并在其末端设置"Dummy"对象:“tip”

    "UR10_connection"是"CoppeliaSim Edu"中的力传感器对象,其数据表示末端执行器与末端连杆之间的作用力(矩),或者理解为为保持末端执行器与末端连杆刚性连接所需要的作用力(矩)。

  2. 建立"IKGroup",并将其设置为显试句柄"Explicit handling"一便我们在程序中调用其进行求解。

  3. 建立工作路径

    一般情况下,当"target"与"tip"距离较远时,不论是伪逆法还是阻尼最小二乘法都可能失效,这时,为确保求解器正常工作,显然不能仅给定工件夹取和释放位置作为工作条件,所以需要建立工作路径,为机器人选择一条从"夹取"到"释放"两个或更多工况之间的路径。
    工作路径的建立有两种方法:

    1. 确定好夹取、释放以及中间个别(有限制末端位姿需要)工况的末端位姿,用函数"generateIKPath"生成中间过程中的各组关节角度,然后按组依次运动;

    2. 直接自己选取合适的末端位姿作为"夹取"和"释放"的中间过渡点,本质上和第一种方法一样。

  4. 设置信号

    末端运行到指定位置时,与"RG2"通信,告知其爪子目前是否可以闭合。这里用到的函数是"setIntegerSignal"和"getIntegerSignal"。

实验心得

  1. 在自动生成和手动生成工作路径的两种方法中,都需要注意设置求解器,使其不解算出有干涉的位形,同时,调整步长时也应注意不应将步长条件得过大,否则可能导致使用"rmlMoveToJointPositions"从一个无干涉位形到另一无干涉位形时,在中间过程发生干涉;但是步长太小又有可能浪费时间。

  2. 还遇到一个比较奇怪的地方是,步长等条件都完全不变的情况下,多次运行求解的结果可能不一样(比如夹取到第一个工件准备移动到下一位置时,大概有 5 % 5\% 5%的概率,逆运动求解会失败),可能是因为自己手动设置的步长,正好处于收敛与发散的临界值了。
    在这里插入图片描述
    在这里插入图片描述

操纵机器人绘图

实验目的

  1. 熟悉了解"Path"对象的导入和使用;

  2. 了解"feltPen"对象的使用;

实验原理

使用函数"getPositionOnPath"可获得"Path"对象上任意点的位置,只要让"target"的位置在各个"Path"上移动就可以了,“feltPen"上装有位置传感器"feltPen_sensor”,当其接近可被检测到的"shap"对象时,就会在该"shap"对象上留下痕迹。

实验步骤

  1. 导入"Path"对象:在菜单栏选择文件–>导入–>从"*.csv"文件导入即可。

  2. 安装"feltPen":与"RG2"的安装类似;

  3. 编写阻塞进程程序,每一个"Path"都一笔写成,每一笔包括准备(将笔尖移动到路径起点附近,但不接触纸面留下痕迹),书写(沿路径移动的同时接触纸面),提笔(将笔尖提起离开纸面,以方便移动到下一路径起点处)

实验心得

  1. 如果直接将"target"放在纸所在平面上,距离传感器反而判定未检测到物体。推测是反解存在一定误差,使得实际得到的"tip"可能进入了纸面之内,将"target"放在纸面之外即可解决这个问题。

  2. 不能批量导入"Path"对象实在是有点麻烦,如果路径比较复杂手动点击得搞好一会儿。
    稍微复杂点的路径


参考资料:CoppeliaSim Edu User Manual:https://coppeliarobotics.com/helpFiles/

这篇关于CoppeliaSim Edu(原V-rep)入门三实验指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815469

相关文章

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

SpringBoot整合Apache Flink的详细指南

《SpringBoot整合ApacheFlink的详细指南》这篇文章主要为大家详细介绍了SpringBoot整合ApacheFlink的详细过程,涵盖环境准备,依赖配置,代码实现及运行步骤,感兴趣的... 目录1. 背景与目标2. 环境准备2.1 开发工具2.2 技术版本3. 创建 Spring Boot