具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人3

目录

1装配移动机器人

[1.1 学习目标](#1.1 学习目标)

[1.2 导入USD](#1.2 导入USD)

[1.3 识别关节](#1.3 识别关节)

[1.4 整理层级结构](#1.4 整理层级结构)

[1.5 设置碰撞属性](#1.5 设置碰撞属性)

[1.6 添加关节和动力](#1.6 添加关节和动力)

[1.6.1 移动副](#1.6.1 移动副)

[1.6.2 旋转副](#1.6.2 旋转副)


如果在Omniverse USD Composer中构建的机器人,或者使用的导入工具没有携带关节信息,那么你需要先对机器人进行装配(Rigging),然后它才能像关节机器人一样运动并受 Isaac Sim API控制。这包括定义各个部件之间的关节类型,并设置控制关节行为的参数(如刚度和阻尼)。本教程将分步骤指导如何装配一台叉车。

1装配移动机器人

1.1 学习目标

在本教程中,一个未装配的叉车USD资产将被转变为一个可以移动并由Isaac Sim指令驱动的叉车。

1.2 导入USD

未处理的USD:Isaac Sim/Samples/Rigging/Forklift/forklift_b_unrigged_cm.usd

保存到本地(需要等一会,加载速度取决于网络):

1.3 识别关节

在对资产进行任何修改之前,装配机器人的第一步是识别机器人上的关节,包括受控(驱动)关节和非受控关节。关节决定了所有网格组件(Mesh)的组织方式,识别关节类型及其自由度 (DOF) 是确保机器人装配后能按预期运动的关键。

对于这台叉车,总共有 7 个自由度:

(1)前轮

前方有 4 个较小的滚轮。它们拥有非受控的旋转关节 (Revolute Joints),每个轮子都有一个绕单轴旋转的自由度。

(2)货叉 (Fork)

货叉相对于叉车主体进行线性运动(上下移动以拾取托盘上的物体),这意味着货叉与车体之间有一个受控的平移关节 (Prismatic Joint)。

(3)后轮

后端较大的轮子负责驱动叉车前进和转向。

与该轮相关的共有两个受控关节:

一个旋转关节 (Revolute Joint):绕轮子中心轴线旋转,提供前后移动的动力。一个旋转关节 (Revolute Joint):位于后轮轴基座与叉车主体之间,提供叉车转向所需的转动支点。

1.4 整理层级结构

从内容浏览器中打开未装配的叉车资产:Isaac Sim/Samples/Rigging/Forklift/forklift_b_unrigged_cm.usd。取决于所使用的导入器和原始资产的设置,该 USD 的未装配结构在零件组织方面可能没有层级。它可能会将每一个组件独立地列在场景树(Stage Tree)上。这不仅增加了阅读和导航的难度,更重要的是,它没有定义哪些物体是作为一个整体运动的,以及这些组合之间是如何相互关联的。

所有属于父级Prim的子网格(Meshes)在父级Prim移动时都应同步移动。例如,网格上的贴纸和链条是叉车车身的一部分;无论车身由多少个螺丝或组件构成,都可以将其视为该机器人的单一连杆(Link)。将它们统一组织在一个名为 "body" 的父级Prim下,可以确保当 "body" 移动时,所有构成车身的子部件都会随之移动。

按照以下步骤组织叉车的Prim层级:

(1)创建两个Xform

分别命名为bodylift

(2)移动网格

将构成叉车车身的所有网格移至body Xform下,将操作台相关的网格移至lift Xform下。为了方便操作,USD文件中的网格已按层级排序:

Looks以上的所有网格都属于lift Xform。

Looks以下(从 Right Chain Wheel 到 Body Glass)的所有网格都属于body Xform。

剩余部分属于轮座和车轮。

(3)创建新 Xform

为后轮(back wheel)、后轮转向架(back wheel swivel)以及每个前滚轮支架创建独立的Xform。

(4)为四个前滚轮创建Xform

分别命名为roller_front_leftroller_front_rightroller_back_leftroller_back_right。将对应的前导轮网格及其圆柱体碰撞体(Cylinder Collider)移至其下方。

(5)设置刚体属性

通过点击Add > Physics > Rigid Body,确保上述所有Xform均已启用物理刚体设置。

1.5 设置碰撞属性

为了确保网格的碰撞属性设置正确。如果没有设置碰撞属性,那么随着机器人运动,根据关节配置的不同,可能会发生自身穿透现象。

所提供的USD文件中,bodylift的正确碰撞网格已经设置完毕,因此不需要手动设置它们。但作为参考,为SM_Forklift_Body_B01_01设置碰撞的步骤如下:

(1)选中lift Xform下的SM_Forklift_OperatorCab_B01_01网格,右键点击并选择 Add > Physics > Collider Preset。默认的碰撞近似方式是Convex Hull(凸包),可以在所选网格的属性栏中向下滚动,找到collision部分来查看。

(2)若要可视化碰撞体,点击视口(Viewport)右上角附近的眼睛图标,选择Show By Type > Physics > Colliders > Selected。选中刚刚添加了碰撞的网格,确认可以看到绿色轮廓。这种近似方式并不合适,因为碰撞区域覆盖了大片不属于货叉的区域,而这些区域需要允许其他物体存在。

(3)可以使用不同的近似方式来定义不同的碰撞网格。要查看效果,请选择一个带有碰撞的网格,导航至其属性面板的colliders部分。选择Convex Decomposition(凸分解)近似方式。更新碰撞网格的可视化效果。确认这次生成的网格覆盖了更多的可碰撞表面,因为它具有更紧密的近似。尝试其他近似方式,看看哪种最适合你。

(4)对其他通过关节相互作用的网格执行相同的过程。为属于转向架(swivel)一部分的 SM_Forklift_BackWheelbase_B01_01网格设置Convex Decomposition近似。

车轮的处理过程略有不同。任何不够光滑、无法精准还原车轮形状和曲率的碰撞近似方式,在驱动车轮行驶时都会导致颠簸。通过使用圆柱体(Cylinder)来近似碰撞网格可以避免这一问题。

(1)点击Create > Shape > Cylinder。

(2)将缩放(Scale)设置为 X=0.16, Y=0.16, Z=0.08,并将朝向(Orient)沿 Y 轴设为 90

(3)右键点击该圆柱体并创建四个副本,分别对应四个前滚轮。

(4)将这些圆柱体拖动到各自车轮的Xform下,并将它们在所有轴上的变换(Transform)值与模型对齐,这将使圆柱体轴线与Xform轴线完全对齐。

(5)右键点击圆柱体,选择 Add > Physics > Collider。

(6)按照同样的流程处理后轮:由于后轮尺寸更大,将圆柱体缩放修改为X=0.3, Y=0.3, Z=0.1,同样沿Y轴定向为90

至此,所有合适的碰撞网格和属性均已设置完毕。

1.6 添加关节和动力
1.6.1 移动副

第一个关节是叉车车身(body)与货叉(lift)之间的关节。这两个主体之间需要进行线性运动,且货叉必须相对于车身上下移动。

(1)创建关节

在Stage树中选中lift Xform,同时按住Ctrl 键选中body Xform。在两个Prim均处于高亮状态时,右键点击并选择Create > Physics > Joints > Prismatic Joint。

(2)设置轴向

找到新创建的移动副并选中它。在Property选项卡中,将Axis设置为Z。这表示两个主体之间的线性运动是沿Z轴进行的。

(3)设置限位

在Property > Physics > Prismatic Joint选项卡中设置关节的上下限位(Lower and Upper Limits),暂时将其设置为-15和200。

(4)添加驱动

通过左键点击该关节并选择Add > Physics > Linear Drive,为该关节添加线性驱动(Linear Drive)。

(5 )配置驱动参数:

在Property > Physics > Drive > Linear 选项卡中,

将Target Position(目标位置)设置为 -15,这样货叉的初始位置会靠近地面;

将Damping(阻尼)设置为10000;

将Stiffness(刚度)设置为100000。

(6)组织层级

在Stage树中右键点击并创建一个Scope(范围节点),命名为lift_joint。将创建好的移动副拖拽到该Scope下。

1.6.2 旋转副

对于所有滚轮支撑轮(roller support wheels),需要创建旋转副:

(1)创建滚轮关节

选中body Xform,按住Ctrl键同时选中任意一个滚轮的Xform(例如 roller_front_left)。右键点击并选择Create > Physics > Joint > Revolute Joint。确认在该轮子的Xform下方生成了一个旋转副节点。

(2)检查位置与轴向

验证关节是否出现在预期的位置。如果位置不对,请确保关节坐标与车轮的旋转轴心一致,并务必将旋转轴(Axis)设置为 "X"。

(3)重复操作

对其余三个滚轮支撑轮重复上述过程。

(4)组织层级

在Stage中右键点击并创建一个Scope,命名为roller_joints。将这四个滚轮关节拖入该 Scope 下。

(5)驱动关节(行驶)

同时选中back_wheel_swivelback_wheel Xforms,在它们之间添加一个旋转副(Revolute Joint)。该关节的位置必须与后轮中心重合。为该关节添加Angular Drive(角驱动),并设置属性:Damping = 10000, Stiffness = 100。

(6)转向关节(转弯)

同时选中bodyback_wheel_swivel Xform,并在它们之间添加一个旋转副。务必将旋转轴(Axis)设置为Z。将关节的限位(Lower and Upper Limits)设置为 -60 到 60。这决定了轮座旋转的角度范围(度),从而实现叉车转向。为该关节添加Angular Drive(角驱动),并设置属性:Damping = 100, Stiffness = 100000(高刚度是为了保证转向精准)。

(7)组织层级:点击Create > Scope,命名为back_wheel_joints,将后轮的这两个关节拖入其中。

相关推荐
智海观潮2 小时前
只用一周时间通过AI工具重写Next.js,Cloudflare推出vinext重建前端开发边界
开发语言·javascript·人工智能·大模型·web
沫儿笙3 小时前
库卡焊接机器人保护气问题解决方案
机器人
翔云1234563 小时前
OpenClaw与大模型通信过程:详细图文教程(2026最新)
ai·大模型·openclaw
机器觉醒时代3 小时前
导远科技 × 银河通用 —— 车规级 IMU 赋能具身智能机器人场景
人工智能·科技·机器人·具身智能
AI猫站长3 小时前
快讯|阿里ABot-M0发布:基于动作流形学习的VLA基础模型,构建600万轨迹UniACT数据集
人工智能·具身智能·灵心巧手
VV158897262013 小时前
机器人租赁平台功能开发需求文档
机器人
爱打代码的小林3 小时前
用 LangChain 解析大模型输出
java·python·langchain·大模型
田里的水稻12 小时前
ubuntu22.04_openclaw_ROS2
人工智能·python·机器人
年少无为呀!15 小时前
OpenClaw 飞书 Skill 开发完全指南
python·机器人·飞书·助手·openclaw·skill开发