Nvidia Isaac Sim组装机器人和添加传感器 入门教程 2024(5)

Nvidia Isaac Sim 入门教程 2024

版权信息

Copyright 2023-2024 Herman Ye@Auromix. All rights reserved.This course and all of its associated content, including but not limited to text, 
images, videos, and any other materials, are protected by copyright law. 
The author holds all rights to this course and its contents.Any unauthorized use, reproduction, distribution, or modification of this course 
or its contents is strictly prohibited and may result in legal action. 
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and InquiriesIf you wish to use or reproduce any part of this course for purposes other than personal learning, 
please contact the author to request permission.The course content is provided for educational purposes, and the author makes no warranties or representations 
regarding the accuracy, completeness, or suitability of the course content for any specific purpose. 
The author shall not be held liable for any damages, losses, 
or other consequences resulting from the use or misuse of this course.Please be aware that this course may contain materials or images obtained from third-party sources. 
The author and course creator diligently endeavor to ensure that these materials 
are used in full compliance with copyright and fair use regulations. 
If you have concerns about any specific content in this regard, 
please contact the author for clarification or resolution.By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.

学习目标

  • 熟悉Isaac Sim中机器人的关节及关节驱动配置
  • 了解Isaac Sim中关节树的概念
  • 熟悉Isaac Sim中的传感器配置
  • 熟悉Isaac Sim的视口调整

难度级别

初级中级高级

预计耗时

25 mins

学习前提

对象类型状态
Ubuntu22.04操作系统软件已确认
Isaac Sim环境软件已配置
Isaac Sim基本概念知识已了解
Isaac Sim图形界面知识已了解

组装机器人

在Isaac Sim中组装一个带传感器的机器人需要一些基本的步骤:

  1. 创建各部件的3D模型
  2. 将各部件组建起来

在本章节中,我们将学习如何组装最简单的一个两轮差速机器人,下图中的机器人可以视作由三个杆件(links)和两个转动关节(revolute joints)组成的。
请添加图片描述

导入测试环境

机器人组装需要一个带有正常光照和物理的环境,因此我们导入Isaac Sim自带的Small Warehouse作为基本的测试环境。

注意:该地图可能需要一定的资源导入时间,测试环境并非重要性的决定因素,你可以使用诸如FlatGrid或者此前你制作的地图更简单的环境。

注意: 为避免误操作环境中的对象,例如地板等,你可以在舞台中右键将环境及其子项设置为锁定状态。

在这里插入图片描述

创建各部件的3D模型

创建机器人的3D模型是机器人设计过程中的关键步骤。你可以使用专业的3D建模软件,例如SolidWorks来创建和导出机器人的各个部件。
在本章节中我们不使用从其他专业软件中制作的机器人部件,而是使用Isaac Sim自带的一些基础模型(立方体、圆柱)来作为机器人的零部件。
这里我们创建三个杆件作为机器人的零部件,分别是身体body,左轮left_wheel,右轮right_wheel,他们都作为fqnvidia机器人的一部分,并且为他们添加材质、刚体和碰撞体等属性。

primtranslationrotationscalevisual materialphysics material
body0,0,0.50,0,01.5,1.0,0.5OmniGlassdefault
left_wheel0,1,0.590,0,01.0,1.0,1.0OmniPBRdefault
right_wheel0,-1,0.590,0,01.0,1.0,1.0OmniPBRdefault

在这里插入图片描述
此时启动PLAY,按下shift鼠标左键按下来拖拽机器人运动,观察效果。

创建关节joint

机器人和人类相似,人类手臂的伸展需要上臂、前臂和肘部的协调工作。同样地,机器人的两个相邻活动杆件(link)也需要通过关节(显式的约束)进行旋转、平移等动作。

Stage中,按下Ctrl,先选中父杆件Parent Link(此处为body)再选中子杆件Child Link(此处为right_wheel),随后选中Create->Physics->Joint->Revolute Joint,创建一个新的Joint对象,并重命名为right_wheel_joint,并修改转动轴系(通常修改到Z)使得轮子的旋转正确。

同理,再创建身体到左轮的关节。

在这里插入图片描述

随后,点击左侧工具栏中的Play检查,会发现此时身体和两个轮子已经正确地绑定了。

注意:除了关节,Isaac Sim还提供了肌腱(Tendons),它对于灵巧手来说更有意义,因此此处不讨论肌腱相关内容,如果您需要,请参考Isaac Sim 肌腱。

创建关节树Articulation

从数学上讲,关节可以在全局(相对于世界空间)或简化(相对于其他物体)坐标中建模。

使用全局法相对简单直观,特别是在处理全局运动和碰撞检测时,但在处理复杂的关节约束时可能更加困难,例如人形机器人,因为需要考虑到世界坐标系中的旋转和平移以及一些计算上忽略的微小量在长链路时带来的影响。

使用局部坐标系会更容易处理相对运动,尤其是在需要多个物体相对运动时,可以减少复杂性,并且在数值上更加精确,比如关节。
但可能需要更多的计算来转换坐标系,特别是在需要将局部坐标系转换为全局坐标系时。

这也就引入了关节树Articulation的概念,关节树的根部被称为关节根(Articulation root),当一个基本对象(prim)被标记为关节根时,这告知仿真系统,在它的子树中找到的任何关节应优先使用简化坐标方法进行仿真,实现了两种方法的折中。

将机器人组织成关节树可以实现更高的模拟保真度,减少关节误差,并能够处理关节体之间更大的质量差异。这些设计具有零关节误差,同时能够处理关节体之间更大的质量比。

Any prim of the USD scene graph hierarchy may be marked with an UsdPhysicsArticulationRootAPI. This informs the simulation that any joints found in the subtree should preferentially be simulated using a reduced coordinate approach.

要使用关节树,需要指定关节根(Articulation root),指定关节根的标准是:
对于固定的机器人,它应当是和世界直接连接的根关节的父对象(root joint’s parent prim)或根关节(root joint)上,此处推荐将属性添加到根关节(root joint)上,例如固定在桌面上的单个机械臂的基座和世界相连的关节。
对于移动的机器人,它应当是根杆件对象(root link prim),例如四旋翼无人机的机身,移动小车的底盘,人形机器人的头或者脚。

对于更深入的内容,可参考关节树、Omniverse刚体动力学和USDPhysics。

在这里插入图片描述

在这个小车的案例中,body是根杆件对象(root link prim),因此可以作为Articulation Root

选中Primbody并依次点击Add->Physics->Articulation Root来将关节链转化为关节树

在这里插入图片描述

创建关节驱动joint drive

添加关节会添加机械上的连接。但为了能够控制和驱动关节,必须添加关节驱动的属性 API。

按下Ctrl选中Stage里的两个joint并依次点击Add->Physics->Angular Drive来添加角度驱动器。
在这里插入图片描述

对于关节的位置控制模式,应当设置高刚度和相对低(或零)阻尼。

对于关节的速度控制模式,应当设置高阻尼和零刚度。

驱动力的公式是:

stiffness * (position - target_position) + damping * (velocity - target_velocity)

你可以根据实际体验来给出经验值,也可以使用此处给出的测试值:

关节驱动阻尼Damping刚度Stiffness目标速度Target Velocity
left_wheel_joint100000200
right_wheel_joint100000200

在这里插入图片描述
随后按下Play查看效果,应该发现小车开始以指定的目标速度运动(在给定测试值下是原地转动)。

添加传感器

Omniverse Isaac Sim 提供了多种传感器,可用于感知环境和机器人的状态,例如激光雷达、深度相机。此处以最为常见的Camera为例。

确定传感器轴系

在添加以相机为例的传感器前需要先确定轴系,参考Isaac、USD、ROS的传感器轴系说明。

添加相机

依次点击Create->Camera来添加相机,并重命名为robot_camera,将他拖动到body下新创建的Xformcamera_link下,来和机器人的身体绑定,并通过调整Xformcamera_link的位置和姿态来感受合适的位置,你也可以使用测试的姿态。

primtranslationrotationscale
camera_link-0.7,0,20,15,1801,1,1
robot_camera0,0,090,90,01,1,1

在这里插入图片描述

添加一个视口(Viewport),使得共计有两个视口(Viewport),设置其中一个为Perspective视角,另一个是相机视角,方便进行观察。
在这里插入图片描述

修改第二个视口的相机为robot_camera
在这里插入图片描述

此时点击PLAY,观察两个画面中的机器人。

结尾语

恭喜你,已经学习了Isaac Sim的机器人组装以及添加传感器的相关内容,能够自主搭建一个简单的双轮差速机器人。

在下一章节,你将学习Isaac Sim中的OmniGraph图编程,对在本章节中的机器人进行控制。

如需企业内训定制、项目开发合作或个人学习支持,请联系:hermanye233@icloud.com

参考资料

USDPhysics
Isaac Sim 肌腱
关节树Omniverse刚体动力学
Isaac、USD、ROS的传感器轴系说明
USDPhysics

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

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

相关文章

采购管理系统:反向竞价失败的 6 个常见原因

在当今快节奏和竞争激烈的商业环境中,采购专业人员一直在寻找创新战略来节约成本和简化供应链流程。反向竞价就是其中一种广受欢迎的策略。 反向竞价提供了一种独特的采购方法,允许买家邀请多个供应商参与实时竞标,以争取他们的业务。虽然反…

构建个人文件上传服务:Python Flask实现上传和下载完整指南

介绍 在本教程中,我们将学习如何使用Python Flask框架将文件上传到服务器,并使用SQLite数据库来跟踪上传的文件。我们将提供后端代码和一个示例项目的Git链接,以便您可以轻松地跟随本教程。 准备工作 首先,您需要安装Python和F…

太爱这种数据可视化效果,零售行业的都看过来

在当今数字化浪潮下,数据可视化已成为零售行业洞察市场趋势、优化运营决策的关键技术。奥威BI零售数据分析方案凭借其卓越的数据可视化效果,成为零售企业的得力助手。接下来就通过BI节假日分析报表来简单地感受一下。 注:该BI节假日分析报表…

DDMA信号处理以及数据处理的流程---cfar检测

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

Nacos安装教程(很细很简单),解决启动报错Please set the JAVA_HOME

nacos安装 找到你要下载的版本解压到任意非中文目录下端口默认8848,如有端口冲突,可修改配置文件中的端口。编辑shutdown.cmd文件,路径换成你的jdk安装地址否则会报错Please set the JAVA_HOME variable in your environment, We need java(x…

Manim本地安装

目录 背景Manim安装及配置一个上手例子参考文献 背景 通过上一期的介绍,我们对Manim有了初步的认识也知道Manim版本的区别,这一期,我们来给自己的计算机安装一个社区版ManimCE,方便以后玩Manim。笔者的硬件配置是联想笔记本Windo…

机器学习:人工智能的子领域之一

引言 人工智能(AI)已经成为现代科技的重要组成部分,推动了许多领域的创新与进步。在人工智能的诸多子领域中,机器学习(ML)无疑是最关键和最具影响力的一个。机器学习通过自动分析和学习数据中的模式&#x…

JavaScript的学习之强制类型转换

目录 一、什么是强制类型转换 二、其他类型转化为String类型 方式一:调用被转化数据类型的toString()方法 方式二:调用String函数,并将我们要转换的数据添加进去为参数 三、其他类型转化为Number类型 方式一:使用Number()函数…

环境配置04:Pytorch下载安装

说明: 显存大于4G的建议使用GPU版本的pytorch,低于4G建议使用CPU版本pytorch,直接使用命令安装对应版本即可 GPU版本的pytorch的使用需要显卡支持,需要先安装CUDA,即需要完成以下安装 1.查看已安装CUDA版本 GPU对应…

常见的结构型设计模式

设计模式(二) 常见的结构型模式 1.代理模式: 提供一种代理方法 ,来控制对其他对象的访问。在有些情况下,一个对象不能或者不适合直接访问另一个对象,而代理对象可以在这两个类之间起一个中介的作用。 举例&#xf…

Docker容器基础知识,即linux日常运维命令

Docker 是一个流行的用 Go 语言开发的开源项目,基于Linux内核的cgroup、namespace及 AUFS 等技术,对进程进行封装隔离,由 Dotcloud 公司开发。Docker已成为容器行业的事实标准。 小陈发现一个有趣的事情,容器的英文是Container&am…

甘肃的千层烤馍:传统面点的魅力绽放

千层烤馍,作为甘肃美食文化的重要象征,以其独特的外形和丰富的口感,吸引着众多食客。它的外观犹如一件精美的艺术品,层层叠叠,金黄酥脆,散发着诱人的香气。 在甘肃平凉地区制作千层烤馍&#xff0c…

国内大模型/智能体盘点丨16家公司,13款大模型,19个智能体

在当今这个智能化风起云涌的时代,随着人工智能技术的飞速发展,大模型(Large Language Models)作为推动行业变革的关键力量,正逐步渗透到社会经济的各个角落。 从科技创新的最前沿到日常生活应用的细微之处&#xff0c…

相交链表--力扣160

相交链表 题目思路C代码 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 思路 求两个链表的相交结点,使用…

ATFX汇市:瑞士央行连续第二次降息,USDCHF猛涨

ATFX汇市:昨日15:30,瑞士央行公布利率决议结果,将政策利率下调0.25个百分点,至1.25%。瑞士央行在政策声明中提到:与上一季度相比,潜在的通胀压力再次下降;瑞士目前的通货膨胀主要是由国内服务价…

成都晨持绪:现在的抖音网店怎么做更快起店

在当今社交媒体的浪潮中,抖音已经成为一个不可忽视的电商平台。对于想要快速起步的抖音网店来说,掌握一些关键策略至关重要。 首要的是定位清晰。你的网店需要有一个鲜明的主题,这可以是某一特定领域的产品,如美妆、服饰或是手工艺…

【C语言】解决C语言报错:Use-After-Free

文章目录 简介什么是Use-After-FreeUse-After-Free的常见原因如何检测和调试Use-After-Free解决Use-After-Free的最佳实践详细实例解析示例1:释放内存后未将指针置为NULL示例2:多次释放同一指针示例3:全局或静态指针被释放后继续使用示例4&am…

力扣1793.好子数组的最大分数

力扣1793.好子数组的最大分数 对于每个数 求其左右两侧小于它高度的元素下标(单调栈) class Solution {public:int maximumScore(vector<int>& nums, int k) {int n nums.size();vector<int> left(n,-1);stack<int> st;for(int i0;i<n;i){while(!…

一文读懂过零检测电路的作用、电路原理图及应用

过零检测电路是一种常见的应用&#xff0c;其中运算放大器用作比较器。它通常用于跟踪正弦波形的变化&#xff0c;例如过零电压从正到负或从负到正。它还可以用作方波发生器。过零检测电路有许多应用&#xff0c;例如标记信号发生器、相位计和频率计。#过零检测电路#可以采用多…

我的python-web基础(Flask前后端不分类)

1.HTML HTML是超文本标记语言 &#xff08; 英文 &#xff1a; HyperText Markup Language &#xff0c; HTML &#xff09;&#xff0c;它不是编程语言&#xff0c;而是一种标记语言 HTML标记标签通常被称为HTML标签&#xff0c;它的特点如下&#xff1a; HTML标签是由尖括…