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

相关文章

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N