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

相关文章

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log