【Unitree Go2】Mid360 on Go2でFAST-LIOを使う

【Unitree Go2】Mid360 on Go2でFAST-LIOを使う

初めに


本記事では、【Unitree Go2】Mid360でSLAMを実行するの続きになります。 前回の記事では犬を少し歩かせると、地図が崩れてしまいました。 本記事ではGo2内蔵のIMUを用いて、安定的なSLAMを実現します。  

環境


環境は、次のようなものを想定しています。
  • 機種: Go2 R&D+(Edu+)(AIR/PROではないもの)
  • 付属LiDAR:Mid-360
※FAST-LIOはかなり重いので、Orin NXで行うことを前提とします。  

1.MID-360によるFAST-LIOの実行


本記事では下記の記事の続きになります。 MID360単体によるFAST-LIOを実行できるところまでは、できているとします。【Unitree Go2】Mid360でSLAMを実行する
 

2.go2 imuの配信


Unitree Go2の内部に搭載されたIMUは、Unitree社独自開発のIMUですが、Go2の高性能な運動を支えるものであり、かなり高性能になっています。 本記事ではこのIMUを用いて、FAST-LIOを実行させるように修正を加えます。

2-1. Docker Fileの修正

まず、go2 IMUを取得するために、unitree_ros2を使えるようにする必要があります。 そのためにDocker Fileを修正します。下記の内容を画像のあたりに差し込みます。
  1. # for unitree_ros2 RUN apt-get update -q && \ apt-get install -y \ ros-humble-rosidl-generator-dds-idl \ ros-humble-rmw-cyclonedds-cpp # Download unitree_ros2 WORKDIR /root/ RUN git clone https://github.com/unitreerobotics/unitree_ros2

2-2. dockerイメージの作成

その後、dockerイメージを作成します。 なお、前の記事で作ったdockerコンテナは削除しておきます。
  1. $ docker rm fast-lio-ros2 $ cd /path/to/FAST_LIO_ROS2/docker $ docker build -t fast-lio-ros2:latest .
※途中までは同じなので、さほど時間はかかりません

2-4. dockerコンテナの作成

前の記事と同様、コンテナを作成する際に、実行している様子の表示をNoMachine上で行えるようにするために、この時点でNoMachineから接続しGUI上のterminalからコンテナの作成を行います。 参考:【Unitree Go2】NoMachineでDocking StationのGUIを使う
  1. $ cd /path/to/FAST_LIO_ROS2/docker $ ./container_run.sh fast-lio-ros2 fast-lio-ros2:latest
これでdockerコンテナが作成されました。

2-5. livox_ros_driver2とFAST-LIOのコンパイル

ここでも前の記事と同様に、コンパイルします。
  1. # cd ~/ros2_ws/src/livox_ros_driver2 # ./build.sh humble

2-6. unitree_ros2の環境設定

unitree_ros2の環境を設定します。 (参照:【Unitree Go2】SDK or ROSを使う方法の最後の方を詳しくはご覧ください)
  1. # cd ~/unitree_ros2/cyclonedds_ws # colcon build

2-7. Go2 IMUの配信パッケージのダウンロード&コンパイル

今回、Go2 IMUのpublisher nodeについては弊社で作成しました。(imu_publisher) これをダウンロードし、コンパイルします。 なお、コンパイルするときにunitree_ros2を参照する必要があります。
  1. # cd ~/ros2_ws/src # git clone -b imu_publisher https://github.com/TechShare-inc/go2_unitree_ros2.git imu_publisher # source /opt/ros/humble/setup.bash # source ~/unitree_ros2/cyclonedds_ws/install/setup.bash # cd ~/ros2_ws # colcon build --packages-select go2_demo
 

3.実行



3-1. livox_ros_driver2の実行とFAST-LIOの実行

まずは、前の記事と同様のことが行えるか確認します。 下記のように行うことで、MID360の点群取得をdocker/humble環境で行えます。
  1. $ docker exec -it fast-lio-ros2 bash # . install/setup.bash # ros2 launch livox_ros_driver2 rviz_MID360_launch.py
さらに、新しいterminalを開きFAST-LIOを実行します。
  1. $ docker exec -it fast-lio-ros2 bash # . install/setup.bash # ros2 launch fast_lio mapping_mid360.launch.py
すると、マップが生成されますが、少し歩かせているとマップが吹き飛んでいくという同じような状況になることが確認できます。

3-2. FAST-LIOの参照IMUの変更

FAST-LIO/config/mid360.yamlについて、/livox/imuを/go2/imuに変更します。 その後、変更を反映させるためにコンパイルします。
  1. # # cd ~/ros2_ws # colcon build --packages-select fast_lio

3-3. Go2IMUとMID360を用いたFAST-LIOを実行する

まず、/go2/imuを配信します。 terminal 1: imu_publisher
  1. $ docker exec -it fast-lio-ros2 bash # export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp # . install/setup.bash # ros2 run go2_demo imu_publisher
次に、livox_ros_driver2とFAST-LIOを実行します。 terminal 2: livox_ros_driver2
  1. $ docker exec -it fast-lio-ros2 bash # . install/setup.bash # ros2 launch livox_ros_driver2 rviz_MID360_launch.py
terminal 3: FAST-LIO
  1. $ docker exec -it fast-lio-ros2 bash # . install/setup.bash # ros2 launch fast_lio mapping_mid360.launch.py

Go2を歩かせても地図がぶっ飛ぶことはなく、正しい自己位置推定・マッピングができている。  

おわりに

本記事ではGo2内蔵のIMUとMid360を用いたGo2 SLAMサンプルの実行方法を見てきました。 この記事が少しでも役に立てたのなら幸いです。

    • Related Articles

    • 【Unitree Go2】XT16 on Go2でD-LIOを使う【SLAM】

      初めに 本記事では、Unitree Go2 XT16版を用いたSLAMの方法を案内します。 SLAMのアルゴリズムにはいろいろな種類がありますが、今回はD-LIOというものを使っていきます。 本記事のゴール(SLAMの様子): ↓詳しくは下記動画 本記事のゴール(XT16のSLAM走行の動画) 環境 環境は、次のようなものを想定しています。 機種: Go2 R&D+(Edu+)(AIR/PROではないもの) 付属LiDAR:XT16 ※D-LIOはかなり重いので、Orin ...
    • 【Unitree Go2】一問一答FAQ

      初めに 本記事では、Unitree Go2を購入されたお客様からよくあるご質問内容を、一問一答形式でまとめたものになります。 一問一答(すべての機種について) Q: Go2を歩かせると、右方向に行くことがあまりにも多いですがこれは正常ですか? A: 初期姿勢が少しずれていると、右に行きやすくなることは他のGo2でも確認されています。初期姿勢が正しいか今一度確認ください。 ...
    • 【Unitree Go2】Mid360でSLAMを実行する

      初めに 本記事では、オプションのMid360版を用いたSLAMの方法を案内します。 今回はFAST-LIOというものを使っていきます。 環境 環境は、次のようなものを想定しています。 機種: Go2 R&D+(Edu+)(AIR/PROではないもの) 付属LiDAR:Mid-360 ※FAST-LIOはかなり重いので、Orin NXで行うことを前提とします。 1.mid360のip設定 【Unitree Go2】Mid360を動かしてみる の1の項を見て、接続設定をします。 ...
    • 【Unitree Go2】Mid360のデフォルトサンプルの使い方(現在使用できません)

      初めに 本記事では、オプションのMid360/XT16版を用いたメーカーの用意したSLAMの使い方を案内する予定です。 ただし、メーカーに確認したところ、現状はうまく動作せず、2024年の年末頃に更新予定とのことです。(24/8/5現在) 使用するためにTechShareで用意した使用例(点群取得とSLAM)が下記のようにございます: TechShareで用意したサンプル(点群取得とSLAM) Mid360の場合 【Unitree Go2】Mid360を動かしてみる 【Unitree ...
    • 【Unitree Go2】SDK or ROSを使う方法

      初めに 本記事では、ユーザー側で用意した外部PCを用いて、SDK(unitree_sdk2)やROS(unitree_ros2)を動かす方法についてご案内します。 環境 環境は、次のようなものを想定しています。 機種: Go2 R&D(Edu), R&D+(Edu+)(AIR/PROではないもの) Docking Station or 外部PC:ubuntu20 / ROS2 foxy 0.参考公式ドキュメント unitree_sdk2 Obtain SDK - Go2 SDK ...