ExpRe[16] Isaac Sim强化学习示例
- 强化学习官方示例
- 添加Assets
- LeoCAD导出中间文件
- blender继续处理
- 添加入Isaac Sim
- 训练RL
- 官方示例
- 代码阅读
- 添加Assets
- 总结与问答练习
时效性
本篇撰写时间为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[15] Isaac Sim初体验,用python脚本启动Isaac Sim
强化学习官方示例
首先直接尝试用python
运行python_samples/jetbot/jetbot_train.py
(这之前当然要activate环境,以及用setenv.sh
更新$PYTHONPATH
等等)
注意这次查看jetbot_train
源码发现默认不是Headless,所以默认有GUI
然而运行没成功,报错:原因是没有添加Assets
添加Assets
LeoCAD导出中间文件
https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/sample_training_rl.html#acquiring-road-tile-assets
按此节
下载LeoCAD 时效性:版本Linux-21.06-x86_64
同样chmod a+x
给它权限,双击运行
发现可以乐高搭模型。左键移动,右键拖动改视角,滚轮放大缩小。
继续按NVIDIA官网教程做
右边选择All parts,找积木块,直接分别拖四个进来,构造环境
注意选中积木块,方向键可以微调
这里挑一个符合审美的颜色
继续按NVIDIA官网指示进行
导出.dae
blender继续处理
下载https://www.blender.org/download/
blender 时效性:2.93.6-linux-x64
直接双击即可解压
文件夹中直接双击即可进行
新建常规文件
删除所有目前有的东西,导入刚刚的.dae
右侧分别把4块平移量设为0,且右上角双击橙色三角旁边字符串,改名。
分别4次,每次右上角单独选一个,然后文件-导出,导出.fbx
(右侧选项处注意要选“选定的物体”),自行命4个名。(还是按照NVIDIA官网教程来的)
注:上面的命名是错的。不能数字开头。参见“总结与问答练习”
实际上,如果想直接复用官方代码,必须用NVIDIA官方指定名称(p
开头那些)
添加入Isaac Sim
继续按教程添加assets
(打开Isaac Sim在里面导入)
导入结果要符合官方代码的指示(导入时,点击文件后,在导入窗口的右侧Option里面选导入路径)
self.tile_usd = {
0: None,
1: {"asset": nucleus_server + "/Library/Props/Road_Tiles/Parts/p4336p01.usd", "offset": 180
2: {"asset": nucleus_server + "/Library/Props/Road_Tiles/Parts/p4342p01.usd", "offset": 180},
3: {"asset": nucleus_server + "/Library/Props/Road_Tiles/Parts/p4341p01.usd", "offset": 180},
4: {"asset": nucleus_server + "/Library/Props/Road_Tiles/Parts/p4343p01.usd", "offset": 180},
}
注:localhost:8080直接导入并不能得到.usd
,而是保持.fbx
训练RL
官方示例
官方示例把网络,训练细节,包括randomization设定都说的很清楚了。
https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/sample_training_rl.html#training-and-environment
可以python_samples/jetbot/jetbot_train.py
开始训练了。
注:此时路面方位可能不对。但我们先不纠结这个sample了
代码阅读
https://code.visualstudio.com/Download
下载并安装vscode的.deb
在vscode中,open folder,然后弹出窗口中右键选择显示隐藏文件。
到这里
找到jetbot
文件夹打开,信任作者
(注:如果需要自己修改,请复制到自己需要的目录再打开)
选择解释器(左下角有按钮调出此界面)
vscode里如果报这种错就需要在下面的TERMINAL里手动更新setenv.sh
之类。
jetbot_train.py
代码阅读:- 其可读取命令行参数。且可以直接使用
.json
文件做update
,非常方便。 signal
是显式处理Ctrl + C
用的。此处其实可以删去。CUSTOM_CONFIG
中,headless
就是是否有GUI。experience
等更多参数的含义可以逐步运行,找到某个文件里的文档串里有。如下图
……更多的细节可自行考察代码。例如gym
的使用,RL环境和Reward编写等等。
- 其可读取命令行参数。且可以直接使用
总结与问答练习
- Q: 如何快速把
1.fbx
至4.fbx
批量改名成a1.fbx
等等?
A: 终端简单循环一下
for v in 1 2 3 4; do mv ${v}.fbx a${v}.fbx; done