ExpRe[15] Isaac Sim初体验,用python脚本启动Isaac Sim


目录
  • Isaac Sim使用初体验
    • 键盘控制Sample
    • 机械臂Sample和其python代码
  • Python Environment
    • Anaconda安装和使用
    • 创建Isaac-sim环境
    • OmniKitHelper
  • 总结和问答练习

时效性
本篇撰写时间为2021.11.23,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
Linux version 5.4.0-84-generic (buildd@lcy01-amd64-007) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04))

本篇前置:

  • ExpRe[3] Anaconda配置python环境
  • ExpRe[13] Isaac Sim安装。查找和解决错误的一次经验(Vulkan, VK_ERROR_INITIALIZATION_FAILED)

Isaac Sim使用初体验

https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/first_run.html

键盘控制Sample

  • 先试试键盘控制小车Sample
    https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/sample_jetbot.html
    按照提示操作。
    注意可以把这个弹出窗口Dock到边上

    键盘wasd控制操作
  • 尝试:菜单-File里,开启新Stage. 则初始时场景没有开始模拟,机器人动不了,需要按三角形启动才能开始。
  • Viewport选项卡按叉可以关掉,在菜单-Window可以再次打开。

机械臂Sample和其python代码

https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/sample_rmp.html


  • 如图。菜单-Window-Extensions打开这个界面,搜索包名(samples),点文件夹图标,看到代码所在目录。
  • 菜单-Isaac Examples里面找RMP Example,可以看到机械臂。

    Reload Robot,然后左侧播放按钮,然后Follow Target,发现可以鼠标拖动让机械臂跟踪。

    其它按钮的含义也很直观。
  • 代码里有一些值得注意的细节,官网里有说
            if self.first_step:
                self.register_assets()

以及

            # update RMP's world and robot states to sync with Kit
            self._world.update()
            self._robot.update()

以及

        ## unit conversions: RMP is in meters, kit is by default in cm
        self._meters_per_unit = UsdGeom.GetStageMetersPerUnit(self._stage)
        self._units_per_meter = 1.0 / UsdGeom.GetStageMetersPerUnit(self._stage)
  • Add Obstacles增加物体,并引入碰撞检测和避障。
    注意如果抓特别小的物体可能不能避地面。
  • 更多具体代码可进一步查看他的源码。

Python Environment

Anaconda安装和使用

除了选择下载Linux版本,其余和第3期Windows版本操作基本类似。
时效性:版本如下


安装方法就是下载后运行一个.sh
bash ./Anaconda3-2021.11-Linux-x86_64.sh
一路enter和yes
完成之后,
. ~/.bashrc
conda env list
发现可以正常使用,看到环境列表。
conda config和第3期中Windows版本是类似的
相应文件在~下,是隐藏文件。所以直接
vim ~/.condarc即可配置(有点像~/.bashrc的地位)
当然跟windows可能有一些小细节不同。比如代理设置的127.0.0.1前面是否要加http://

创建Isaac-sim环境

https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/python_environment.html#option-2-running-with-anaconda
如果按照默认的安装路径,应该
cd ~/.local/share/ov/pkg/isaac_sim-2021.1.1/python_samples/
然后即可执行nvidia官网给的命令。

conda env create -f environment.yml
conda activate isaac-sim

请严格按照官网命令,不要忘了更新(. setenv.sh)
注:其实可以考虑把这个更新(绝对路径)写到~/.bashrc里面。否则每次打开使用issac-sim环境要重新更新。
例如写alias isaac-sim-py='conda activate isaac-sim && . ~/.local/share/ov/pkg/isaac_sim-2021.1.1/python_samples/setenv.sh'
在该环境中,也可以尝试

python
import torch
torch.cuda.device_count()

发现正常运行

OmniKitHelper

Any omniverse level imports must occur after the helper class is instantiated. Because APIs are provided by the extension/runtime plugin system, it must be loaded before they will be available to import.

https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/python_environment.html#omnikithelper
到前述python_samples目录,python app_framework.py,就可以经历完整的开关过程。
输出的末尾:

[7.401s] [ext: omni.usd.config-1.0.0] shutdown
2021-11-23 15:05:18 [7,626ms] [Warning] [carb.tasking.plugin] Leaking 1 carb::tasking::Counter instances!
Shutdown complete

总结和问答练习

  1. Q: 请解释如果不. setenv.sh为什么会导致无法运行。
    A: 查看源码,其中setenv.sh定义了一些环境变量,并更新了(默认在~/.local/share/ov/pkg/isaac_sim-2021.1.1处)的setup_python_env.sh,其中定义了一大堆变量,特别是PYTHONPATH
    所以如果不更新,当然找不到包