【Unitree Go1】デフォルトプログラムUnitreeSLAM/catkin_lidar_slam_3dでできること【3D LiDAR】

初めに


3D LiDAR版のUnitree Go1を購入された場合、内部コンピューターXavier NX内のUnitreeSLAM/catkin_lidar_slam_3dにサンプルプログラムが入っております。
本稿では、このデフォルトプログラムの解説を行います。

下記に英語ですがYoutube動画が上がっているので、よろしければこちらも参考にしてください:
Go1-3d-rshelios16p-operation – YouTube

 

環境


環境は、次のようなものを想定しています。

  • 機種: R&D+(Edu+) 3D LiDAR版
  • 3D LiDAR: RS-Helios-16p

※2022年12月以前にご購入の場合velodyne VLP-16ですが、こちらでも内容はほぼ同じです。

 

1.3D LiDARの接続


背中のレールに3D LiDARを付けたのち、給電ケーブルと有線ケーブルを図のように接続します:


 

2.イントラネットに接続+NoMachineで無線接続


可視化の方法として、本記事ではNoMachineを用いた方法で行います。
※メーカー公式の動画Go1-3d-rshelios16p-operation – YouTubeではROSによる複数コンピューター間の通信によって可視化を行っていますが、これを行う場合、ROSがインストールされた外部PCが必要です。本記事では一般のPCでも行える方法にしております

まず内部NXにWi-FiのUSB子機を接続し、イントラネットに接続します。
その後、外部PCからNoMachineで接続します。

イントラネットへの接続については、以下の記事を参考にしてください:
【Unitree Go1】Nano/NX のインターネット接続方法
※本記事の内容を行う場合、インターネット接続設定までは必要ありませんので、『2. GUI からWI-FIへ接続』まで行えば十分です

NoMachineでの無線接続については、以下の記事を参考にしてください:
【Unitree Go1】リモートデスクトップを使おう【NoMachine】

 

3.実行


3-1.build_map

build_mapプログラムは、2D mapと3D mapを作成します。
2D mapの作成はgmapping, 3D mapの作成はLIO-SAMによって行われます。ただしオドメトリは共通してLIO-SAMのものを用いています。

$ roslaunch start build_map.launch map_name:=my_map_name
$ rviz -d src/lidar_slam_3d/start/rviz/build_map.rviz


※2D nav goalを用いて自律走行もさせられます


※3D map作成の様子が分かりやすいように、2D mapの表示は消しています

さらにpatrol pointの設定も行えます:
joystickコントローラーからXボタンを押すと、今いる場所のポイントを保存します。これは次のstart_patrolで使う巡回ポイントになります。(参考:Go1-3d-rshelios16p-operation – YouTubeの7:30頃)

最後に、「ctrl+c」でプロセスを終了させると、自動的に3D mapや2D mapが保存されます。
my_map_nameという名前の場合、lidar_slam_3d/start/maps/LOAM/my_map_name/以下にSLAMによって作成された3D mapが格納され、2D mapはlidar_slam_3d/start/maps/gmapping/以下に格納されます。なお、patrol pointはlidar_slam_3d/start/maps/gmapping/内に.txt形式で保存されます。

 

3-2.start_patrol

start_patrolプログラムは、作成した2D mapと3D mapを用いて、build_mapで設定したpatrol pointを順に巡回します。
移動経路の作成は、2D mapとmove_base(teb_local_plannerを使用)による経路生成であり、自己位置推定は3D mapとndt_localizationパッケージに依ります。

$ roslaunch start start_patrol.launch map_name:=my_map_name
$ rviz -d src/lidar_slam_3d/start/rviz/start_patrol.rviz

rvizを起動すると同時に、巡回が開始されます。

 

参考:LiDAR設定とUnitreeSLAMのコンパイル


通常、デフォルトではこの節をする必要はありません。

内部Jetson Xavier NXで以下の設定とコンパイルを行います。

(参考)3D LiDARの設定:


※3D Laser SLAM Development Guide抜粋

次のpingが通れば成功です。

$ ping 192.168.1.200
(参考)UnitreeSLAM/catkin_lidar_slam_3dのコンパイル

デフォルトではコンパイル済みになっていますが、何かしらの理由でこれをコンパイルしたい場合について。

基本的には、UnitreeSLAM/catkin_lidar_slam_3d内のsrcフォルダをcatkin_makeすればよいですが、以下の2点に気を付けてください。

1.sdkのパス
a2_ros2udpパッケージ内のCMakeLists.txt内のsdkのパスはcatkin_lidar_slam_3dの外を参照しています。

2.メモリ
普通にコンパイルをするとメモリ不足になるため、以下のswap領域の作成を行ってください。

※3D Laser SLAM Development Guide抜粋

 

おわりに

UnitreeSLAM/catkin_lidar_slam_3dの機能を見てきました。
この記事が少しでも役に立てたのなら幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です