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