ExpRe[16] Isaac Sim强化学习示例


目录
  • 强化学习官方示例
    • 添加Assets
      • LeoCAD导出中间文件
      • blender继续处理
      • 添加入Isaac Sim
    • 训练RL
      • 官方示例
      • 代码阅读
  • 总结与问答练习

时效性
本篇撰写时间为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编写等等。

总结与问答练习

  1. Q: 如何快速把1.fbx4.fbx批量改名成a1.fbx等等?
    A: 终端简单循环一下
    for v in 1 2 3 4; do mv ${v}.fbx a${v}.fbx; done