1. はじめに
前回の記事(四足歩行ロボットをシミュレーション環境(Gazebo)で自律走行させてみる(CHAMP Quadruped Controllerの試行))では、githubで公開されているリポジトリを利用し、CHAMP Quadruped ControllerによるGazebo上での四足歩行の自律走行シミュレーションを試行することができました。そして、その記事の中でunitree_mujocoというシミュレーション環境が、以下で公開されていることを述べました。それについて試してみたのが、この記事の内容になります。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
- ROS2: Humble
3. 構築手順
構築手順としては、 unitree_mujocoのリポジトリ[1]のreadmeにおけるpython向けの手順を実行しました。ほとんどreadmeの手順に従いましたが、少しアレンジしたところもありましたので、そこについても記載してきたいと思います。
3.1 Unitree Mujocoのクローン
以下のコマンドでUnitree Mujocoをクローンしてきます。いつもなら、ここでcolcon buildをしてビルドするのですが、今回は不要です。
git clone https://github.com/unitreerobotics/unitree_mujoco.git
3.2 関連パッケージのインストール
unitree_sdk2_pythonのインストールは[1]のreadmeにあるように、以下のコマンドでインストールしました。
cd ~
sudo apt install python3-pip
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .
mujoco-pythonとjoystickのインストールについても[1]のreadmeにあるように、以下のコマンドでインストールしました。
pip3 install mujoco
pip3 install pygame
3.3 Joystickを使わないシミュレーションを行う場合の設定(USE_JOYSTICK = 0 に変更)
本記事ではJoystickを使わないでシミュレーションを行うことにしました。そのためunitree_mujoco/simulate_python/config.pyの中のUSE_JOYSTICK = 1 を USE_JOYSTICK = 0とする設定をしないと、Unitree Go2は立ったままで全く動きません。
3.4 lo インターフェースでマルチキャストを有効化
後述するstand_go2.pyを起動しようとしたときに以下のエラーが出ました。
python3: selected interface "lo" is not multicast-capable: disabling multicast
このエラーを回避するため、以下のコマンドを実行することで、lo インターフェースでのマルチキャストを有効化しました。
sudo ip link set lo multicast on
4. シミュレーション結果
以下のコマンドでシミュレーション環境(Mujoco)を起動しました。なお、起動するプログラムはクローンしてきたリポジトリにサンプルとして用意されているものです。
cd ~/unitree_mujoco/simulate_python
python3 unitree_mujoco.py
これを起動すると、Unitree Go2は最初に足を突っ張った状態で立っていますが、すぐに伏せの状態になります(以下の図の状態)。
そして以下のコマンドを実行することでUnitree Go2が立ち上がります。
cd unitree_mujoco/
python3 ./example/python/stand_go2.py
その様子が以下の動画になります。
5. まとめ
unitree_mujocoというシミュレーション環境を利用して、サンプルプログラムではありますが、Unitree go2が立ちあがるところをシミュレーションできました。次回はUnitree_ROS2を使ってのキーボードからの遠隔操作(teleop)などができないか取り組んでみたいと思います。