備忘録 ROS & Loam_velodyne

IMG_9884
イルミネーションが点群に見えるようになる

VLP-16を使って部屋の点群データを作る.

 

背景

屋内位置推定がしたい.

名古屋大学オープンソースソフトウエアのAutowareは,Velodyne 32, 64だとNDT mappingが上手くいくが,VLP−16で室内だとダメ(ソース読むと.ある程度の距離からしか見てない.あるいはVelodyneドライバの問題?).もともと自動運転研究用なので,車の入れないような室内でできないのは仕方ない. → [追記] Autoware の ndt_mapping.launchファイルに使う点群の範囲(距離:RANGE),移動距離(SHIFT)を調整すると室内でもできました!すごいぞAutoware!Loam_velodyne はリアルタイム,Autoware は調整しやすく便利,という違いがあるので,そこは適宜.

Screen Shot 2016-04-05 at 15.01.55
Autoware + Velodyne 32. VLPー16以外だと良好に動作する.

そこで,サクッとROSを使って3D SLAMする.SLAM研究者ではないので,できるだけこの辺りに時間はかけず,成果だけ活用したいので,ありもののパッケージを活用する.

環境

Ubuntu 14.04

準備

ROSのインストール(catkin_wsの設定までしておく)

手順

1.Velodyneドライバの削除

Velodyneドライバが入っている場合,邪魔なので一旦消す(rospack listで確認).VLP−16はまだapt-get でインストールしたVelodyneドライバでは使えない.

sudo apt-get remove ros-indigo-velodyne*

ちなみにvelodyne 32用のドライバでキャリブファイルを16用で起動しても動く(rviz等で確認できる)が,SLAMなどが正しく実行されない.

2.Velodyneドライバのビルド

VLP-16に対応したVelodyneドライバのソースコードをgitからClone

catkin_ws/src で

git clone https://github.com/ros-drivers/velodyne.git

catkin_wsで

catkin_make -DCMAKE_BUILD_TYPE=Release

3.loam_velodyneのビルド

loam_velodyneはROSサイトからだとオリジナルソースにたどり着かないので,下記ソースをClone(オリジナルとの差分は不明)

catkin_ws/src で

git clone https://github.com/laboshinl/loam_velodyne.git

catkin_wsで

catkin_make -DCMAKE_BUILD_TYPE=Release

4.最後にcatkin_ws/devel/setup.bashを実行してrosに登録

source ~/catkin_ws/devel/setup.bash

roslaunch できない場合は大体これを忘れてる.

 

実行方法

とりあえず何もせずにSLAMしてみる.

1.まず,VelodyneのデータをROSに流す.bagファイル,pcapファイルなら別途再生する.

roslaunch velodyne_pointcloud VLP16_points.launch calibration:=’(キャリブファイルのパス)/VLP16_db.yaml’

2.loam_velodyneを起動してSLAM

roslaunch loam_velodyne loam_velodyne.launch

3. 結果のPCDを保存したいときは,あらかじめpcl_rosを起動しておく.

作業フォルダ内に各フレーム毎のPCDが保存されていく(結構な数のファイル数になるので,あとからCloudCompare等で合体させる)

rosrun pcl_ros pointcloud_to_pcd input:=/velodyne_cloud_registered

Screen Shot 2016-04-06 at 15.41.27
はいできた.ものの数時間でSLAMできるなんて.

備考

launchファイルを書き換えることもなく,数行のコマンドだけでSLAMができた.

VLP-16はIMUがない,計測点が少ないなどあるが,IMUを追加しなくても良好な結果が得られた.手持ちのIMUを使うこともできるらしいけど必要なさそう.

関連

  1. Autoware for LiDARMAN
  2. PointCloud data for Unreal Engine 4
  3. Recording Velodyne packets using Raspberry Pi 3
Advertisements

2 Comments Add yours

  1. lbh says:

    hi, I would like to ask you some understanding of the code, I do not understand why the first node code should be divided into five parts of the point cloud, there is the first part of the algorithm What is the point?

  2. ishi96440 says:

    Hi. I’m just using this. So, I’m not sure about the algorithm of source code. You may need to ask original developers.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s