Unreal Engineの環境構築から、ROS(LIO-SAM)を使用してマップ作成を行うまで(VTC)

概要

VTCで使用するUnreal Engineの環境構築から、ROS(LIO-SAM)を使用してマップ作成を行うまでの一連の作業をまとめました。

動作環境&筆者のPCスペック(実際に動かした)

環境

  • Ubuntu18.04 LTS(ラップトップ)(Ubuntu 20.04でも可)
  • Windows 10 Home 64ビット(デスクトップ)

ラップトップPCスペック

  • Corei7-8665 QadroP520 メモリ32GB

デスクトップPCスペック

  • Core i9-10900X RTX 2080 Ti メモリ32GB

手順

windowsにVirtual Tsukuba Challenge環境の構築

ubuntuにrosで操作できるようにcage_ros_stackをインストール

③時刻同期

ubuntuにてrosbag record -aでデータ収集

ubuntuにLIO-SAMをインストール

LIO-SAMを使用して、マップを作成

windowsにVirtual Tsukuba Challenge環境の構築

  • 事前準備として、Visual Studio2019をインストールしておく。

してある場合は、飛ばして構わない。

support.microsoft.com

  • 以下のサイトにあるバイナリデータをダウンロードする。

github.com

ダウンロード完了後zipファイルを解凍し、Unreal Engineのexeファイルがあるので実行する。

これでUnreal Engineの環境構築は完了。


ubuntuにrosで操作できるようにcage_ros_stackをインストール

  • 以下のサイトに書かれている方法で、インストールを行う。

github.com

  • 一応、インストール方法を記述。(ワークスペース名以外、サイトの通り)(catkin_makeでも可、多分)
~$ mkdir -p ~/vtc_ws/src
~$ cd ~/vtc_ws
~/vtc_ws$ catkin init
~/vtc_ws/src$ cd ~/vtc_ws/src
~/vtc_ws/src$ git clone --recursive https://github.com/furo-org/cage_ros_stack.git
~/vtc_ws/src$ rosdep install -r -y -i --from-paths cage_ros_stack
~/vtc_ws/src$ cd ~/vtc_ws
~/vtc_ws$ catkin build
~/vtc_ws$ source devel/setup.bash    ←使用する時

以上でcage_ros_stackのインストールは、完了。

以下のサイトのtelelopは最大並進速度2km/hとなっています。 最大速度の変更は、こちらをいじることで可能です。

github.com

つくばチャレンジでの走行速度についての資料(公式サイトから引用)


③時刻同期

  • windowsUnreal Engineを別のPCのubuntuで動かし、かつrosbag recordでデータを収集する場合。 両方のPCでは、時刻同期を行う必要がある。(やらないと、その収集したデータは使えないものになってしまう。)

どちらかの方に統一すれば、良いと考えている。(今回はwindowsに統一)

windowsでの設定方法(見るだけ)

https://i.gyazo.com/eeb7b152d56f3295627d26b5a2b02e99.png

ubuntuでの設定方法

同期先サーバを変更したい場合/etc/systemd/timesyncd.conf 設定ファイルを以下のように変更する。

~$ vim /etc/systemd/timesyncd.conf
   ⇩
#NTP=    ←コメントアウト外す
NTP=(windowsの方で見たアドレス等)

システムの再起動

~$ sudo systemctl restart systemd-timesyncd.service

ubuntuにてrosbag record -aでデータ収集

windowsの方

Unreal Engineのexeファイルを起動する。

ubuntuの方

cage_ros_stackを使用して、通信を行う。

実行するとrvizが立ち上がる。(たまにPointcloud2のデータが可視化されないときがある、一応トピックがあれば問題ない)

~$ roslaunch vtc_bringup bringup.launch ip:=192.168.1.110 ←ipconfigまたはifconfigなどで調べたwindows側のIPアドレス

操作できるように(他のteleopでも可)

~$ rosrun vtc_teleop vtc_teleop.py

データ収集するために(たまに点群データを収集出来てないときがあるので、rostopic listとかでvelodyneのトピックがあるか調べると良いかも)

~$ rosbag record -a

終了したらCtl+cで完了。


ubuntuにLIO-SAMをインストール

Ubuntu18.04 ROS Melodicの場合

以下のサイトよりインストール。 github.com

一応、インストール方法を記述(サイトの通り)

  • ROS(Melodic)
~$ sudo apt-get install -y ros-melodic-navigation
~$ sudo apt-get install -y ros-melodic-robot-localization
~$ sudo apt-get install -y ros-melodic-robot-state-publisher
  • gtsam
~$ wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip
~$ cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
~/Downloads$ cd ~/Downloads/gtsam-4.0.2/
~/Downloads/gtsam-4.0.2$ mkdir build && cd build
~/Downloads/gtsam-4.0.2$ cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
~/Downloads/gtsam-4.0.2$ sudo make install -j8
  • LIO-SAM(git clone)
~$ cd ~/lio-sam_ws/src
~/lio-sam_ws/src$ git clone https://github.com/TixiaoShan/LIO-SAM.git
~/lio-sam_ws/src$ cd ..
~/lio-sam_ws$ catkin_make
~/lio-sam_ws$ source devel/setup.bash 
Ubuntu20.04 ROS Noeticの場合

Ubuntu18.04 ROS Melodicの場合とは違い、そのままではビルドできないものがありました。

変更すべき箇所を踏まえながら、インストール方法を説明します。

  • ROS(Noetic)
~$ sudo apt-get install -y ros-noetic-navigation
~$ sudo apt-get install -y ros-noetic-robot-localization
~$ sudo apt-get install -y ros-noetic-robot-state-publisher
  • gtsam
~$ wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/develop.zip
~$ cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
~/Downloads$ cd ~/Downloads/gtsam-develop/
~/Downloads/gtsam-develop$ mkdir build && cd build
~/Downloads/gtsam-develop$ cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
~/Downloads/gtsam-develop$ sudo make install -j8
  • LIO-SAM(git clone)
~$ cd ~/lio-sam_ws/src
~/lio-sam_ws/src$ git clone https://github.com/TixiaoShan/LIO-SAM.git
~/lio-sam_ws/src$ rosdep install -r -y -i --from-paths LIO-SAM

LIO-SAMのクローンと依存パッケージのインストールが完了したら、以下の図のように ビルドが通るように修正していきます。

LIO-SAM/include/utility.h#L17

https://i.gyazo.com/c2b5a63f118033da3ee25a8210da97a4.png

LIO-SAM/CMakeLists.txt#L5

https://i.gyazo.com/45046ba236d61b15abcdfa53e7ce4e20.png

修正が完了したら、以下のようにビルドして完了です。

~$ cd ~/lio-sam_ws
~/lio-sam_ws$ catkin_make
~/lio-sam_ws$ source devel/setup.bash 

⑥LIO-SAMを使用して、マップを作成

LIO-SAMとrosbagデータを使用してマップを作成する

  • パラメータ変更

以下のissueを参考にパラメータを変更した。

github.com

デフォルトは下側がコメントアウトされている。

それを、上側コメントアウトし下側のコメントアウトを外す。

LIO-SAM/config/params.yaml#L40

https://i.gyazo.com/7502f94ed130367244e09c49b265f0d7.png

     ⇩

https://i.gyazo.com/2a33265d535f06f7a258dbb0ee50236a.png

あとは、pcdデータを出力してもらえるようにいじる。

LIO-SAM/config/params.yaml#L22

https://i.gyazo.com/9bda2423d86526a80f13c22915cab73c.png

  • 実行方法
~$ roslaunch lio_sam run.launch
~$ rosbag play --clock <使用する>.bag velodyne_points:=points_raw imu:=imu_raw

生成されたPCDデータ

https://i.gyazo.com/16de84e9c212937df62bb8052959b7ed.png


実行結果

実行動画(マッピングのみ)
実行動画(マッピングとUnreal Engine)
生成したPCDデータ

rosbagデータ

今回、筆者が使用したデータと同じものです。

rosbag compress で圧縮されたデータ(実際は5GB)

何か間違っていることが、あったら教えてください