当前位置: 首页 > news >正文

第一讲、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()

相关文章:

  • 【Rust开发】Rust快速入门,开发出Rust的第一个Hello World
  • 【Hadoop入门】Hadoop生态之Hive简介
  • Pycharm常用快捷键总结
  • pytorch小记(十七):PyTorch 中的 `expand` 与 `repeat`:详解广播机制与复制行为(附详细示例)
  • [定位器]晶艺LA1823,4.5V~100V, 3.5A,替换MP9487,MP9486A,启烨科技
  • 2025.4.9总结
  • c++比较器——priority_queue用 ; unordered_map 自定义哈希函数
  • 基于Redis实现短信防轰炸的Java解决方案
  • 唯一分解定理
  • 系统与网络安全------网络通信原理(4)
  • 每日算法:洛谷U535992 J-C 小梦的宝石收集(双指针、二分)
  • 金融级隐私安全之DeepSeek R1 模型去中心化存储和推理实现方案
  • python爬虫:喜马拉雅案例(破解sign值)
  • 以库存系统为核心的ERP底层架构设计
  • git单独跟踪远程分支及处理合并异常情况
  • 蓝桥杯嵌入式第十五届
  • C++【string类】(一)
  • C语言关键字
  • 认识 Linux 内存构成:Linux 内存调优之虚拟内存与物理内存
  • DAY 39 leetcode 18--哈希表.四数之和
  • 免费网站怎么制作/百度竞价推广属于什么广告
  • 专业网站设计建设服务/怎样在百度答题赚钱
  • 外贸都用什么网站/广告公司取名字参考大全
  • 龙岗住房建设局网站/百度一下百度首页登录
  • 俄罗斯网站域名注册/seo建站技巧
  • 做批发网站有哪些/百度指数教程