はじめに
Isaac Simを使用して、Unitree製品を仮想空間上で動作させます。
本体を直接開発するのには、ハードルがあると思いますので、まずは仮想空間上で、開発することをおすすめしております。今回紹介するレポジトリには、ROS2でのインターフェースも含まれておりますので、rviz2での連携やローレベルのインターフェースの操作にも対応しております。
開発環境
- OS : Ubuntu 22.04
- GPU: RTX3090
- Isaac Sim: 2023.1.1
- Isaac Lab: 0.3.1
- Nvidia Driver: 545
Isaac Simを使用するためにはGPUマシンが必要となります。下記、推奨スペックとなります。
Element | Minimum Spec | Good | Ideal |
---|---|---|---|
OS | Ubuntu 20.04/22.04Windows 10/11 | Ubuntu 20.04/22.04Windows 10/11 | Ubuntu 20.04/22.04Windows 10/11 |
CPU | Intel Core i7 (7th Generation)AMD Ryzen 5 | Intel Core i7 (9th Generation)AMD Ryzen 7 | Intel Core i9, X-series or higherAMD Ryzen 9, Threadripper or higher |
Cores | 4 | 8 | 16 |
RAM | 32GB [1] | 64GB [1] | 64GB [1] |
Storage | 50GB SSD | 500GB SSD | 1TB NVMe SSD |
GPU | GeForce RTX 3070 | GeForce RTX 4080 | RTX Ada 6000 |
VRAM | 8GB [1][2] | 16GB | 48GB |
事前準備
以下、それぞれを事前に準備しておきます。
Dockerのインストール
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
ROS2のインストール
ROS2 humbleを使用します。
https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Install-Binary.html
MiniCondaのインストール
https://www.anaconda.com/docs/getting-started/miniconda/install#macos-linux-installation
Isaac Simのインストール
今回対応している2023.1.1がomniverse launcherで利用できないので、Dockerを使用してIsaac Simをインストールします。
イメージをPullします。
docker pull nvcr.io/nvidia/isaac-sim:2023.1.1
イメージを起動します。
docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
nvcr.io/nvidia/isaac-sim:2023.1.1
Isaac Simの本体をコンテナからホストマシーンにコピーします。コンテナのIDはdocker ps -aで確認しておきます。コピーが完了したらDockerは使用しないので終了して問題ないです。
docker cp <id_container>:isaac-sim/. .local/share/ov/pkg/
Isaac Lab 0.3.1をCloneします。
git clone --branch v0.3.1 --depth 1 https://github.com/isaac-sim/IsaacLab.git
環境変数を登録
export ISAACSIM_PATH="${HOME}/.local/share/ov/pkg/isaac-sim-2023.1.1"
export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh"
labのルートに入って、リンクを追加
cd IsaacLab
ln -s ${ISAACSIM_PATH} _isaac_sim
Pythonの実行環境を作成します。
./orbit.sh --conda
conda activate orbit
sudo apt install cmake build-essential
./orbit.sh --install
./orbit.sh --extra rsl_rl
インストールがうまく行かない場合は、Numpyのバージョンを下げる必要があるので、こちらを実行します。
pip reinstall numpy==1.23.5 scipy==1.9.3
rsl_rlがうまく入らなかった場合は、こちらでインストールします。
pip install rsl-rl-lib==2.2.3
実際にIsaac Simが立ち上がれば動作確認はOKです
python source/standalone/tutorials/00_sim/create_empty.py
レポジトリの設定
有志が作成されたGo2 Omniverseを使用します。ルートに戻ってレポジトリをクローンします。
git clone https://github.com/abizovnuralem/go2_omniverse/ --recurse-submodules -j8 --depth=1
Isaac LabにL1Lidarのファイルをコピーします
cp ~/go2_omniverse/Isaac_sim/Unitree/Unitree_L1.json ~/IsaacLab/source/data/sensors/lidar/
素材をコピーします
cp -r ${ISAACSIM_PATH}/data/material_files/* ~/IsaacLab/source/data/material_files/
仮想空間をこちらからダウンロードして、/envs内に保存します。立ち上げのときのオプションに–custom_env=officeとすることで空間を指定することができます。
https://drive.google.com/drive/folders/1vVGuO1KIX1K6mD6mBHDZGm9nk2vaRyj3?usp=sharing
起動
./run_sim.shでGo2が起動でき、./run_sim_g1.shでG1を起動することができます。また、キーボードの入力に応じて操作することが可能です。
- A key: Move Left
- S key:Move Back
- D key:Move Right
- Q key:Trun Right,
- W key: Move Forward
- R key:Trun Left


フロントカメラの映像も取得することが可能です

ROS2と連動しているので、ローレベルAPIへの指示やLidar、カメラ情報も取得することが可能です。
$ ros2 topic list
/parameter_events
/robot0/cmd_vel
/robot0/front_cam/rgb
/robot0/go2_states
/robot0/imu
/robot0/joint_states
/robot0/odom
/robot0/point_cloud2
/rosout
/tf
おわりに
Isaac Simを利用した仮想空間での環境構築の方法を紹介しました。ROS2と連動することで、仮想環境上で物体認識の実装やLidarを使用したSLAMの実装が可能となります。GPU環境があればお試しいただくのはいかがでしょうか。