欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 第一讲、IsaacLab创建空场景

第一讲、IsaacLab创建空场景

2025/4/15 22:11:33 来源:https://blog.csdn.net/m0_47719040/article/details/147088057  浏览:    关键词:第一讲、IsaacLab创建空场景

0 前言

官方教程:https://isaac-sim.github.io/IsaacLab/main/source/tutorials/00_sim/create_empty.html
Isaacsim+Isaaclab安装:https://blog.csdn.net/m0_47719040/article/details/146389391?spm=1001.2014.3001.5502

在前序课程中,我们已经学习了如何使用独立的python脚本在Isaacsim中启动 Isaac Sim 模拟器。

本教程介绍如何从独立 Python 脚本启动和控制 Isaac Sim 模拟器。它利用 Isaac Lab 框架创建了一个空场景,并介绍了框架中使用的两个主要类app.AppLauncher和sim.SimulationContext。

教程对应的脚本为create_empty.pyscripts/tutorials/00_sim目录下。

运行该程序:

  • 进入安装 isaac lab 时创建的conda虚拟环境
  • 在该环境下进入 isaac sim文件夹中运行source setup_conda_env.sh
  • 终端中输入python scripts/tutorials/00_sim/create_empty.py运行你的代码

1 启动模拟器

启动 Isaac-sim 是 Isaac-lab 中运行独立python脚本的第一步,该步可以通过app.AppLauncher类实现,此类通过封装isaacsim.SimulationApp类来实现仿真。它提供了使用命令行参数和环境变量配置模拟器的机制。

注:在 isaac-sim and isaac-lab 专栏中我们已经学过如何在python中启动 isaacsim

from isaacsim import SimulationApp
simulation_app = SimulationApp({"headless": False})

api 使用:
在这里插入图片描述

本节旨在介绍如何将命令行选项添加到用户自定义的argparse.ArgumentParser中,通过将参数解析器的实例(也就是下述代码中的parser)传递给app.AppLauncher.add_app_launcher_args()方法来完成的,该方法会向其附加不同的参数。这些包括无头启动应用程序、配置不同的 Livestream 选项以及启用离屏渲染。

#  Python标准库模块,用于解析命令行参数。
import argparse
# Isaac Lab框架提供的类,用于封装Omniverse应用启动逻辑。
from isaaclab.app import AppLauncher# 创建参数解析器
# 创建一个ArgumentParser对象,设置描述为"创建一个空舞台的教程",用于帮助信息显示。
parser = argparse.ArgumentParser(description="Tutorial on creating an empty stage.")# 添加应用启动参数,该类封装了`isaacsim.SimulationApp`类
AppLauncher.add_app_launcher_args(parser)
# 解析实际输入的命令行参数,生成包含参数值的args_cli命名空间对象。
args_cli = parser.parse_args()
# 使用解析后的参数实例化AppLauncher
app_launcher = AppLauncher(args_cli)
# 获取仿真应用实例
simulation_app = app_launcher.app

2 录入Python库

一旦模拟应用程序运行,就可以从Isaac Sim和其他库中导入不同的Python模块。

这里我们导入以下模块
isaaclab.simIsaac Lab 中用于所有核心模拟器相关操作的子包。

from isaaclab.sim import SimulationCfg, SimulationContext

3 配置模拟场景

在 Isaac Lab 中,该类sim.SimulationContext继承自 Isaac Simisaacsim.core.api.simulation_context.SimulationContext可以控制物理仿真的开始、停止、步进及处理一些复杂的细节。

官方给出了将物理和渲染时间步长设置为 0.01 秒的代码案例。这是通过将这些量传递给sim.SimulationCfg来实现的,然后使用它来创建sim.SimulationContext的实例。

类似与之前所讲的world

    # 创建仿真配置对象# dt=0.01:设置物理仿真步长为0.01秒(100Hz)sim_cfg = SimulationCfg(dt=0.01)# 实例化仿真场景sim = SimulationContext(sim_cfg)# 设置主摄像机视角# 参数格式:set_camera_view(camera_position, look_at_target)# 此处将摄像机放置在(2.5, 2.5, 2.5)坐标,对准原点(0,0,0)sim.set_camera_view([2.5, 2.5, 2.5], [0.0, 0.0, 0.0])

4 开始模拟

模拟环境配置好后的第一件事是初始化物理仿真环境,即调用sim.SimulationContext.reset()方法。

对比:

  • sim.SimulationContext.reset():初始化物理仿真环境并开始仿真。
  • sim.SimulationContext.play():只开始仿真。

实际上类似于之前学到的world.reset()

官方在初始化之后给出了一个简单的仿真循环,模拟器在模拟的过程中重复执行sim.SimulationContext.step(),该函数参数为render默认为True,指明是否更新渲染。

    # 重置仿真环境,初始化物理状态,加载默认场景(空舞台)sim.reset()# 输出初始化完成提示print("[INFO]: Setup complete...")# 主仿真循环while simulation_app.is_running(): # 检测应用是否仍在运行(窗口未关闭)# 执行单步仿真(物理计算+渲染更新),循环频率由dt参数控制sim.step()

5 退出仿真并关闭窗口

simulation_app.close()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词