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

相关文章

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.