LIO-SAMを使用して、3次元マップを作成する方法(VTC編)
- 概要
- やり方
- ①windowsにVirtual Tsukuba Challenge環境の構築
- ②ubuntuにrosで操作できるようにcage_ros_stackをインストール
- ③時刻同期
- ④ubuntuにてrosbag record -aでデータ収集
- ⑤ubuntuにLIO-SAMをインストール
- ⑥LIO-SAMを使用して、マップを作成
- なんか間違っていることが、あったら教えてください
- 他のサイトでリンクを貼ってもらうように書き換えたやつ
概要
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をインストールしておく。
してある場合は、飛ばして構わない。
- 以下のサイトにあるバイナリデータをダウンロードする
ダウンロード完了後zipファイルを解凍し、Unreal Engineのexeファイルがあるので実行する。
これでVTCの環境構築は完了。
②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は通常より速く走行できるので、インストールすると良いかも(たしか、レギュレーション範囲内)
③時刻同期
- windowsのUnreal Engineを別のPCのubuntuで動かし、かつ
rosbag record
でデータを収集する場合。 両方のPCでは、時刻同期を行う必要がある。(やらないと、その収集したデータは使えないものになってしまう。)
どちらかの方に統一すれば、良いと考えている。
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アドレス
操作できるように
~$ 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)
デフォルトは下側がコメントアウトされている。
⇩
あとは、pcdデータを出力してもらえるようにいじる。
(LIO-SAM/config/params.yaml)
- 実行方法
~$ roslaunch lio_sam run.launch
~$ rosbag play --clock 使用する.bag velodyne_points:=points_raw imu:=imu_raw