Unreal Engineの環境構築から、ROS(LIO-SAM)を使用してマップ作成を行うまで(VTC)
概要
VTCで使用するUnreal Engineの環境構築から、ROS(LIO-SAM)を使用してマップ作成を行うまでの一連の作業をまとめました。
動作環境&筆者のPCスペック(実際に動かした)
環境
ラップトップ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をインストールしておく。
してある場合は、飛ばして構わない。
- 以下のサイトにあるバイナリデータをダウンロードする。
ダウンロード完了後zipファイルを解凍し、Unreal Engineのexeファイルがあるので実行する。
これでUnreal Engineの環境構築は完了。
②ubuntuにrosで操作できるようにcage_ros_stackをインストール
- 以下のサイトに書かれている方法で、インストールを行う。
- 一応、インストール方法を記述。(ワークスペース名以外、サイトの通り)(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となっています。 最大速度の変更は、こちらをいじることで可能です。
つくばチャレンジでの走行速度についての資料(公式サイトから引用)
③時刻同期
- windowsのUnreal Engineを別のPCのubuntuで動かし、かつ
rosbag record
でデータを収集する場合。 両方のPCでは、時刻同期を行う必要がある。(やらないと、その収集したデータは使えないものになってしまう。)
どちらかの方に統一すれば、良いと考えている。(今回はwindowsに統一)
windowsでの設定方法(見るだけ)
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のクローンと依存パッケージのインストールが完了したら、以下の図のように ビルドが通るように修正していきます。
修正が完了したら、以下のようにビルドして完了です。
~$ cd ~/lio-sam_ws ~/lio-sam_ws$ catkin_make ~/lio-sam_ws$ source devel/setup.bash
⑥LIO-SAMを使用して、マップを作成
LIO-SAMとrosbagデータを使用してマップを作成する
- パラメータ変更
以下のissueを参考にパラメータを変更した。
デフォルトは下側がコメントアウトされている。
LIO-SAM/config/params.yaml#L40
⇩
あとは、pcdデータを出力してもらえるようにいじる。
LIO-SAM/config/params.yaml#L22
- 実行方法
~$ roslaunch lio_sam run.launch
~$ rosbag play --clock <使用する>.bag velodyne_points:=points_raw imu:=imu_raw
生成されたPCDデータ
実行結果
実行動画(マッピングのみ)
実行動画(マッピングとUnreal Engine)
生成したPCDデータ
rosbagデータ
今回、筆者が使用したデータと同じものです。