前提条件
ここでは、Ubuntu 20.04にROS Noeticを入れて、Livox mid-70とWIT motion WT901Cを使ってFAST_LIOを使用するために実行した手順を示す。本記事では、ユーザー名はRaspberry PiのデフォルトであるPiとして各種操作を実行した事例を示すので、本記事を参考に同じ操作を実行する際は、ユーザー名やディレクトリ名については各自の環境に合わせて適宜読み替える必要がある点に注意が必要である。
なお、FAST_LIOを動作させるのに必要な、ROS Noeticやlivox_ros_driverのインストールの手順や、IMU(WIT motion WT901C)をROSで使うためのプログラムのインストールの手順については、別記事で説明した通りである。
インストール手順
基本的に以下のリンク先の手順の通り、下記のコマンドを実行してインストールを実行する。
github.com/hku-mars/FAST_LIO
cd ~/
source ws_livox/devel/setup.bash
cd ~/catkin_ws/src
git clone https://github.com/hku-mars/FAST_LIO.git
cd FAST_LIO
git submodule update --init
cd ../..
catkin_make
source devel/setup.bash
Livox mid-70向けの設定
FAST_LIOは基本的に、Livox社のLiDARについてはIMUを内蔵している機種(AVIAなど)を想定して作られている。そのため、mid-40やmid-70などのIMUを備えていない機種については、一工夫する必要がある。
具体的には、「/home/pi/catkin_ws/src/FAST_LIO/config」にある「avia.yaml」を開き、
imu_topic: "/livox/imu"
time_sync_en: false
と記載されている部分を、以下のように修正する必要がある。なお、GitHub上には「extrinsic_T」や「extrinsic_R
」なども必要があるような記載がされているが、変えなくてもちゃんと動く。
imu_topic: "/imu" #WT901Cのtopic名に合わせる。別記事の通りの手順で実施していれば、この通り直せばよい。
time_sync_en: true
動作確認
ターミナルを3つ開いて、以下のコマンドをそれぞれのターミナルで実行する。
roslaunch wit_node wit.launch
roslaunch livox_ros_driver livox_lidar_msg.launch
roslaunch fast_lio mapping_avia.launch
1行目はIMU(WT901C)の、2行目はLiDAR(mid-70)の値を取得するために必要なコマンドである。なお、1行目のコマンドを実行した際に「Permission Denied」のようなエラーが出た場合は、以下のようなコマンドを実行して、シリアルデバイスへのアクセス権限を付与してから再度コマンドを実行すればよい(詳細は別記事参照)。
sudo chmod 777 /dev/ttyUSB0
また、2行目のコマンドはlivox_mappingを実行する際のコマンド「roslaunch livox_ros_driver livox_lidar.launch」とは異なるlaunchファイルを指定していることに注意が必要である。
【未検証】メモ
なんか色々やっている間に出たエラーやその解決方法についてメモ。なお、これらのエラーの発生条件や再現方法は未検証。
①「ERROR: cannot launch node of type [fast_lio/fastlio_mapping]:」と出た
→参考ページ(github.com/hku-mars/FAST_LIO/issues/183)の最後のコメント「Add livox_ros_driver (CustomMsg.h and CustomPoint.h) in ~/catkin_ws/src/FAST_LIO/include.」の通り、
「/home/pi/catkin_ws/src/FAST_LIO/include」ディレクトリに、
/home/pi/catkin_ws/devel/include/livox_ros_driver」にある2つのファイル (「CustomMsg.h」「CustomPoint.h」)をコピーした
→その後、
cd ~/catkin_ws
catkin_make
を実施した結果、「fatal error: fast_lio/Pose6D.h: No such file or directory」が出た
②「fatal error: fast_lio/Pose6D.h: No such file or directory」が出た
→「catkin_ws/build」「catkin_ws/devel」ディレクトリを削除して、catkin_makeを何度かやり直したら、エラーが消えた。
→このエラーは、以下のように「FAST_LIO」のみをcatkin_makeしてやれば発生しなくなるらしい。
参考:x.com/50105tobu/status/1717203215178223888
catkin_make --pkg fast_lio
以上。
コメント