BEIKE blog

備忘録です

LIO-SAMを使用して、3次元マップを作成する方法(VTC編)

概要

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

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

環境

  • Ubuntu18.04 LTS(ラップトップ)
  • 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 Stdio2019をインストールしておく。

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

support.microsoft.com

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

github.com

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

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


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は通常より速く走行できるので、インストールすると良いかも(たしか、レギュレーション範囲内)

github.com


③時刻同期

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

どちらかの方に統一すれば、良いと考えている。

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アドレス

操作できるように

~$ rosrun vtc_teleop vtc_teleop.py

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

~$ rosbag record -a

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


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

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

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

  • ROS
~$ sudo apt-get install -y ros-kinetic-navigation
~$ sudo apt-get install -y ros-kinetic-robot-localization
~$ sudo apt-get install -y ros-kinetic-robot-state-publisher
  • gstam
~$ 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
~$ 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を使用して、マップを作成

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

  • パラメータ変更

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

(LIO-SAM/config/params.yaml)

github.com

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

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

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

     ⇩

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

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

(LIO-SAM/config/params.yaml)

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

  • 実行方法
~$ roslaunch lio_sam run.launch
~$ rosbag play --clock 使用する.bag velodyne_points:=points_raw imu:=imu_raw
実行動画
生成したPCDデータ

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

他のサイトでリンクを貼ってもらうように書き換えたやつ