四足歩行ロボットをシミュレーション環境（Gazebo）で自律走行させてみる（CHAMP Quadruped Controllerの試行）

# 1. はじめに
[四足歩行ロボットのUnitree Go2をシミュレーション環境（Gazebo）でROS2で動かしてみる](https://qiita.com/bebebefu/items/7e3f65966883b188e7e5)という記事で公開されているリポジトリを利用し、Gazebo上でUnitree Go2をteleopで走行させることに成功しました。次の取り組みとしてこれを自律走行をさせられないかと色々と調べてみたところ、以下のリポジトリを見つけました。ドキュメントにはまだ反映されていないのですが、commitの履歴をみると自律走行に取り組んいることが見て取れます。

https://github.com/jasonjabbour/unitree-go2-ros2

早速私の環境でunitree-go2-ros2-navigationという名前のワークスペーを作成し、👆のリポジトリをクローンしてビルドし、まずは以下のコマンドでgazeboの環境が起動できるか試してみたのですが、、、

```:terminal
cd unitree-go2-ros2-navigation/
source install/setup.bash
ros2 launch go2_config gazebo_velodyne.launch.py 
```
起動した環境です。四足歩行ロボットが見えません。
![Screenshot from 2025-01-26 10-08-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/560e7965-40bc-2dee-ab8a-8fa65d259796.png)

本来なら四足歩行ロボットがいるところを拡大して見てみます。👇のような形でlidarと関節？だけ見えて本体が見えません。
![Screenshot from 2025-01-26 10-08-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/16a6313f-7bcc-251f-f627-41b549adbcf1.png)

これについては色々と試してみたのですが、本体を表示することがなかなかできませんでした。しかも、このリポジトリは頻繁にアップデートされているようなので、少し待てば改善する可能性もあり、現時点では一旦保留としました。

ただ四足歩行ロボットによる自律走行は試してみたかったため、前回の記事[四足歩行ロボットのUnitree Go2をシミュレーション環境（Gazebo）でROS2で動かしてみる](https://qiita.com/bebebefu/items/7e3f65966883b188e7e5)で構築した👇のリポジトリの一要素である『CHAMP Quadruped Controller』による自律走行を本記事では試してみました。

https://github.com/anujjain-dev/unitree-go2-ros2/tree/humble/champ/champ_config


# 2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
- ROS2: Humble

# 3. 構築手順
👇前回の記事で構築した環境をそのまま使いましたので、新たにビルドやインストールしたものはありません。

https://qiita.com/bebebefu/items/7e3f65966883b188e7e5

# 4. シミュレーション結果
以下のコマンドでシミュレーション環境(Gazebo)とrivz2を起動しました。
```:terminal(1)
ros2 launch champ_config gazebo.launch.py world:=/home/test/unitree-go2-ros2/install/champ_config/share/champ_config/worlds/outdoor.world
```
```:terminal(2)
ros2 launch champ_config navigate.launch.py rviz:=true map:=/home/test/unitree-go2-ros2/install/champ_config/share/champ_config/maps/map.yaml
```

デフォルトだと何も障害物がない環境が選ばれてしまいますので、　worldファイルとmapファイルを直接指定する形で指定しました。

起動したときの画像が以下です。左の画面がGazeboで、右の画面がrviz2の画像です。なお、ロボットはunitree go2ではなくてクローンしてきたリポジトリにてデフォルトで指定されている黒い四足歩行ロボットになります。

![Screenshot from 2025-01-26 09-16-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/cac70bc0-dbbd-bc1b-d756-9ef4f72e5850.png)

そしてrviz2上で2D Nav Goalをクリックして目的地を指定して自律走行させた時の動画が以下になります。

<iframe width="560" height="315" src="https://www.youtube.com/embed/adgW7LLAT-k?si=FcI0fsrhNP4MBFfe" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# 5. まとめ
公開されているリポジトリを利用し、CHAMP Quadruped ControllerによるGazebo上での四足歩行の自律走行シミュレーションを試行することができました。しかし、現時点ではUnitree go2による自律走行には対応できていないため、https://github.com/jasonjabbour/unitree-go2-ros2 のアップデートの様子もみつつ次回以降はそれに対応していきたいと思います。

またunitree_mujocoというシミュレーション環境もあるそうです。👇がそのリポジトリです。

https://github.com/unitreerobotics/unitree_mujoco

その環境でまずはunitree go2を読み込んだ様子が以下です。次回以降はこの環境も利用しつつUnitree go2の自律走行に取り組んでいきたいとも考えています。

![Screenshot from 2025-01-26 18-41-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581920/35add509-5ecb-3de4-7f56-d5bf0b684924.png)