机器人技能学习-robosuite-0-入门介绍

文章目录

  • 前言
  • 模块介绍
  • 实战
    • 案例1:从 `demo` 中创建自己的 `env`
    • 案例2:更换属于自己的物体

前言

资料太少、资料太少、资料太少,重要的事说三边,想根据自己实际场景自定义下机器人,结果发现无路可走,鉴于缺少参考文献,现在这里记录下,主要内容为官网信息,如有不合适的地方,望留言

模块介绍

结构很清晰,就是不会,以下是整体的框架图:
在这里插入图片描述
仿真模型三要素

要素数量解释备注
机器人模型一个或多个包含夹具及机器人上的附属物
物体模型0个或多个能操作的目标物
Arena有且仅有一个机器人工作场景,包含桌子等

关键组件解释:

组件作用备注
Robots实际动作者
Controls解析相关指令转换成低层次语言传给物理引擎会影响robot的运动学分量
Sensors从MjSim对象中检索信息,并将观测结果生成机器人接受的物理信号

实战

案例1:从 demo 中创建自己的 env

目的:将系统案例中的 Lift 剥离出来,形成自己的环境 MyLiftEnv,并能在 ALL_ENVIRONMENTS 中找到该场景类。

  1. 将系统中的 Lift.py 复制到 robosuite_learn/demos/envs/MyLIftEnv.py,从此, MyLiftEnv 场景就是专属自己的,可以在里面尽情更改;
  2. 修改 robosuite/robosuite/__init__.py,添加代码:
import sys
sys.path.append("robosuite_learn/demos/envs/") # Manipulation environments
from robosuite.environments.manipulation.lift import Lift
# from robosuite.environments.manipulation.myEnv import MyEnv
from MyLiftEnv import MyLiftEnv
  1. main 函数中更改引入的环境名,即可调用
    options["env_name"] = 'MyLiftEnv' # 'MyLiftEnv' # choose_environment()robots_index = ['UR5e'] # ['Sawyer', 'Panda', 'Jaco','Kinova3','IIWA','UR5e']options["robots"] = robots_index[i] # choose_robots(exclude_bimanual=True)# Choose controllercontroller_name = 'OSC_POSE' # choose_controller()# Load the desired controlleroptions["controller_configs"] = load_controller_config(default_controller=controller_name)# initialize the taskenv = suite.make(**options,has_renderer=True,has_offscreen_renderer=False,ignore_done=True,use_camera_obs=False,control_freq=20,)env.reset()env.viewer.set_camera(camera_id=0)

案例2:更换属于自己的物体

描述:将物体改成自己的数据,并手动控制机器人实现装配工作
物体描述:

<mujoco model="refrigerator-box"><asset><texture file="../textures/blue-wood.png" type="cube" name="steel-metal"/><material name="smetal" reflectance="1.0" shininess="1.0" specular="1.0" texrepeat="1 1" texture="steel-metal" texuniform="true"/></asset><worldbody><body><body name="object"><geom pos=" 0.02 0 0.0" size="0.002 0.04 0.04" type="box" solimp="0.998 0.998 0.001" solref="0.02 1" density="100" friction="0.95 0.3 0.1" group="0" condim="4" material="smetal" /><geom pos="-0.02 0 0.0" size="0.002 0.04 0.04" type="box" solimp="0.998 0.998 0.001" solref="0.02 1" density="100" friction="0.95 0.3 0.1" group="0" condim="4" material="smetal" /><geom pos="0 -0.04 0.0" size="0.02 0.002 0.04" type="box" solimp="0.998 0.998 0.001" solref="0.02 1" density="100" friction="0.95 0.3 0.1" group="0" condim="4" material="smetal" /><geom pos="0 0.04 0.0"  size="0.02 0.002 0.04" type="box" solimp="0.998 0.998 0.001" solref="0.02 1" density="100" friction="0.95 0.3 0.1" group="0" condim="4" material="smetal" /><geom pos="0 0 -0.0399"  size="0.02 0.04 0.002" type="box" solimp="0.998 0.998 0.001" solref="0.02 1" density="100" friction="0.95 0.3 0.1" group="0" condim="4" material="smetal" /></body><site rgba="0 0 0 0" size="0.005" pos="0 0 -0.1105" name="bottom_site"/><site rgba="0 0 0 0" size="0.005" pos="0 0 0.1105" name="top_site"/><site rgba="0 0 0 0" size="0.005" pos="0.0865 0.1005 0" name="horizontal_radius_site"/></body></worldbody>
</mujoco>
<mujoco model="refrigerator-drawer"><asset><mesh file="meshes/refrigerator-drawer.STL" name="refrigerator-drawer" scale="0.0012 0.0012 0.0012"/><!-- <mesh file="meshes/refrigerator-box.STL" name="refrigerator-box" scale="0.002 0.002 0.002"/> --></asset><worldbody><body><body name="object"><geom pos="0.0 -0.1 0.01" mesh="refrigerator-drawer" type="mesh" solimp="0.998 0.998 0.001" solref="0.001 1" density="1000" friction="0.95 0.3 0.1" group="0" condim="4" rgba="0.13 0.13 0.13 1"/><!-- <geom pos="0.0 0.1 0.01" mesh="refrigerator-box" type="mesh" solimp="0.998 0.998 0.001" solref="0.001 1" density="1000" friction="0.95 0.3 0.1" group="0" condim="4" rgba="0.13 0.13 0.13 1"/> --></body><site rgba="0 0 0 0" size="0.005" pos="0 0 -0.1105" name="bottom_site"/><site rgba="0 0 0 0" size="0.005" pos="0 0 0.1105" name="top_site"/><site rgba="0 0 0 0" size="0.005" pos="0.0865 0.1005 0" name="horizontal_radius_site"/></body></worldbody>
</mujoco>

同时在场景中,也把当前的物体导入即可。
效果展示如下图:

BUG1:曾经出现的问题
在进行手动装配的时候,出现drawer 无法塞入box 的空间中的现象,如下图所示,初步怀疑,对于 box 的描述不充分,导致无法体现空洞的表征;
在这里插入图片描述
问题探讨,从官方提供的demo 数据中找到一个类似的场景,把其中一个件插入到另外一个件中:
在这里插入图片描述
于是,找到相关 xml 模型,并进行交叉测试:

从测试情况可以看出,圆环之所以能插入到柱子中,是因为圆环是由**多个基础几何元素组合**得到的 重新修改装配体物体的描述,在这里,之需要更换 `box` 即可:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试概念及分类整理汇总

前言 测试小伙伴在谈论软件测试分类&#xff0c;五花八门的分类&#xff0c;眼花缭乱。因为将各个维度划分的内容都整到一块了&#xff0c;在加上各自不同的见解与补充&#xff0c;各种冲突...... Findyou我经过多年测试总结基本定为4类测试(最多5类&#xff0c;自动化或者兼容…

phpstudy面板Table ‘mysql.proc‘ doesn‘t exist解决办法

原因分析&#xff1a;误删了mysql数据库 解决办法如下&#xff1a; 1、停止服务 2、先把mysql文件夹下的data文件夹备份&#xff0c;因为data文件里存有数据库文件。然后再删除data文件。 3、cmd管理员命令进入到mysql中的bin目录下 &#xff0c;执行mysqld --initialize-…

【Python机器学习】用于回归的决策树

用于回归的决策树与用于分类的决策树类似&#xff0c;在DecisionTreeRegressor中实现。DecisionTreeRegressor不能外推&#xff0c;也不能在训练数据范围之外的数据进行预测。 利用计算机内存历史及格的数据进行实验&#xff0c;数据展示&#xff1a; import pandas as pd im…

.mkp勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 在数字时代&#xff0c;勒索病毒如[datastorecyberfear.com].mkp [hendersoncock.li].mkp [myersairmail.cc].mkp正成为企业和个人的噩梦。本文将介绍[datastorecyberfear.com].mkp [hendersoncock.li].mkp [myersairmail.cc].mkp勒索病毒的特点、如何恢复被…

LIN总线故障检测

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”&#xff0c;即可获得canoe入门到精通电子书和INCA软件安装包&#xff08;不带授权码&#xff09;下载地址。 LIN总线自诊断 对LIN数据总线系统进行自诊断时&#xff0c;需使用“LIN主控模块”的“地址码”。 自诊断数…

大功率TVS的基本介绍?|深圳比创达电子

在当今的电子世界里&#xff0c;电路保护变得越来越重要。那么什么是大功率TVS(Transient Voltage Suppressor)&#xff1f;它又是如何发挥作用的呢&#xff1f;TVS二极管&#xff0c;被设计用来保护敏感电子设备免受瞬态电压冲击&#xff0c;尤其是在功率较高的应用中尤为关键…

一文详解VScode 的远程开发

VS code登录服务器后进行编码和调试&#xff0c;VS code上的所有功能都可以使用&#xff0c;和在本地开发基本无区别。 一、配置免密远程登录 因为是要远程登录&#xff0c;那么需要通过使用ssh进行密钥对登录&#xff0c;这样每次登录服务器就可以不用输入密码了。 先来一句官…

常见测试技术都有哪些?

测试技术是用于评估系统或组件的方法&#xff0c;目的是发现它是否满足给定的要求。系统测试有助于识别缺口、错误&#xff0c;或与实际需求不同的任何类型的缺失需求。测试技术是测试团队根据给定的需求评估已开发软件所使用的最佳实践。这些技术可以确保产品或软件的整体质量…

TDuckX 新功能介绍:提交后抽奖!

欢迎来到 TDuckX&#xff0c;我们最近推出了令人兴奋的新功能——提交后抽奖&#xff01;现在&#xff0c;您不仅可以收集用户的宝贵意见&#xff0c;还有机会为他们带来丰厚的奖励。让我们一起来了解这个令人期待的新功能吧&#xff01; 主要功能亮点&#xff1a; 1. 奖品设…

adb 使用的出现 adb server is out of date. killing

我知道你们肯定看到这种播客 像这种解决问题的方法是暂时的 , 因为我们Android studio 中 , 你在查看后台的时候发现 你的Android studio 也占用了一端口 , 就是说你把 Android studio 杀掉了只要打开 Android studio 打开就还是 关闭 cmd adb 看到一个新的方法 , win 10 中…

Spring——Spring AOP1(代理模式Proxy)

代理&#xff08;Proxy&#xff09;模式 1.创建工程 2.代理&#xff08;Proxy&#xff09;模式介绍 作用&#xff1a;通过代理可以控制访问某个对象的方法&#xff0c;在调用这个方法前做前置处理&#xff0c;调用这个方法后做后置处理。&#xff08;即&#xff1a; AOP的微观…

单片机原理及应用:中断服务函数

承接上文&#xff0c;今天我们来学习一下中断服务函数&#xff0c;对中断不了解的朋友可以回顾一下笔者之前的文章 中断系统结构与控制寄存器 中断服务函数是嵌入式系统中用于处理中断事件的函数&#xff0c;在原版的C语言中并不存在。当发生中断事件时&#xff0c;系统将会跳…

(vue)el-cascader级联选择器实现单/多选最后一级并回显

(vue)el-cascader实现多选最后一级并回显 <el-form-item label"选择算法模型&#xff1a;"><el-cascaderv-model"formInline.algorithmId":options"modelOptions":props"{ value: id, label: name, multiple: true, emitPath: fal…

计算机网络—— 概述

概述 1.1 因特网概述 网络、互联网和因特网 网络由若干结点和连接这些结点的链路组成多个网络还可以通过路由器互联起来&#xff0c;这样就构成了一个覆盖范围更大的网络&#xff0c;即互联网&#xff08;或互连网&#xff09;。因特网&#xff08;Internet&#xff09;是世…

C语言入门教程,C语言学习教程(第一部分:编程基础 )一

C语言是一门面向过程的编译型语言&#xff0c;它的运行速度极快&#xff0c;仅次于汇编语言。C语言是计算机产业的核心语言&#xff0c;操作系统、硬件驱动、关键组件、数据库等都离不开C语言&#xff1b;不学习C语言&#xff0c;就不能了解计算机底层。 这套「C语言入门教程」…

ORACLE索引失效和sql优化

全部都是在开发中碰到的真实问题&#xff0c;后续会一直更新本条帖子&#xff1a; 场景一&#xff1a; 使用了函数&#xff0c;导致索引失效 交易日期过滤数据时使用了to_date写法&#xff0c;导致日期字段查询未走索引 将控制台输出的sql 粘贴到plsql 按F5打开解释计划执行窗口…

可碧教你C++——哈希

在文章的开始&#xff0c;先祝大家牢大年快乐 哈希的简介 unordered系列 在C11里&#xff0c;加入了两个新的container——unordered_set和unordered_map。 其使用方式与map和set类似&#xff0c;但是其底层实现则与其完全不同。set和map的底层数据结构为红黑树&#xff0c;…

Umbraco:从产品介绍到实战应用

一、产品介绍 Umbraco是一个开源的内容管理系统&#xff08;CMS&#xff09;&#xff0c;以其灵活性和可扩展性而闻名。Umbraco允许开发人员根据需要定制系统&#xff0c;同时为非技术人员提供了一个直观的界面来管理网站内容。Umbraco诞生于丹麦&#xff0c;经过多年的发展&a…

2023年阿里云云栖大会:前沿技术发布与未来展望

在2023年的阿里云云栖大会上&#xff0c;我见证了云计算和人工智能领域的又一历史性时刻。这次大会不仅是对未来科技趋势的一次深入探索&#xff0c;更是阿里云技术实力和创新能力的集中展示。 首先&#xff0c;千亿级参数规模的大模型通义千问2.0的发布&#xff0c;无疑将人工…

Flask修改Response Headers中的Server值

Headers中的Server会暴露出Python版本&#xff0c;导致的结果就是方便被渗透快速定位Python版本后找到对应版本的漏洞&#xff0c;因此导致网络安全问题 伪方法&#xff1a; 像这个马上就暴露出Python版本&#xff0c;如何解决这个网络上有说直接用response.headers.remove(Ser…