ROS でNavigation Stack のSLAMを使う場合の手段の1つです。
LiDAR(Light Detection And Ranging)を使ってみます。ものによってはとってもお高いデバイスですが、今回使うのはSLAMTEC製の、1万円ちょっとで入手できるRPLiDAR A1M8 という機種です。
Jetson Nano をセットアップ
以下をご参照ください
Jetson Nano にROS1 (Melodic) をインストール(メモ)
このページではワークスペース作成にcatkin_make を使っていますが、catkin build を使いますので、ページ下段のAppendix3を参照してください。
RPLiDARをセットアップ
発注すると、本体、ケーブル、接続変換基板の3つと簡単な説明書きがペラで送られてくるだけです。
で、これらをどうするかというと、こんなふうに接続します。
Jetson に接続するデータ転送可能な給電用MicroUSBケーブルは自前で準備しておきます(100均でも入手可)。
ROS1 (Melodic) でRPLiDARを動作確認
catkin_wsにrplidar_rosをクローンしてビルド
1 2 3 4 5 6 7 8 9 |
cd ~/catkin_ws/src git clone https://github.com/Slamtec/rplidar_ros.git cd .. catkin build source ~/.bashrc |
Jetson を再起動
1 |
sudo reboot |
RPLiDARをJetson に接続
基板のLEDが点灯して、RPLiDARのヘッド(測距コア)が高速回転します。
MicroUSBケーブルにデータ転送能力があるかどうかはLEDで判定できます。点灯しない場合はデータ転送ができていません。
ttyUSBを確認して使用権を付与
1 2 3 |
ls /dev | grep ttyUSB sudo chmod 666 /dev/ttyUSB0 |
RPLiDARが取得する点群データを確認する場合は、view_rplidar.launchを実行。
1 |
roslaunch rplidar_ros view_rplidar.launch |
注:以下のようなエラーメッセージが出た場合
RLException: [view_rplidar.launch] is neither a launch file in package [rplidar_ros] nor is [rplidar_ros] a launch file name
ワークスペースセットアップスクリプトの取り込み 、再度実行
1 |
source ~/catkin_ws/devel/setup.bash |
rvizは今は必要ないよ…という場合は
1 |
roslaunch rplidar_ros rplidar.launch |
rvizで点群地図を表示する場合はAppendixを参照
注:以下のエラーが出た場合、実行権を付与して再起動
*** buffer overflow detected ***:
1 2 |
sudo chmod 777/dev/ttyUSB0 roslaunch rplidar_ros view_rplidar.launch |
または、実行エラーの出たターミナルを閉じて、別ターミナルを開いて再実行してみるという手もあります。
1 2 3 4 5 |
ls /dev | grep ttyUSB sudo chmod 666 /dev/ttyUSB0 roslaunch rplidar_ros view_rplidar.launch |
このエラーはUSBケーブルが外れている場合にも表示されます。
再接続して再実行
topicのリスト
1 |
rostopic list |
RPLiDARが取得しているデータを見てみます
1 |
rostopic echo /scan |
こういう意味だそうです。
Appendix
rvizで点群地図を表示
rvizを起動
1 |
rviz |
Fixed Frame のmapをlaserに変更
左下にあるAddボタンをクリック
By topicタブでLaserScanを選んでOK
点群地図が表示されます
Next
ROSのNavigation Stack などでSLAMする場合、LiDARのデータと共にodometryデータなども使って精度を高めます。
ただロボットカーなどの車輪を駆動するモータからエンコードデータを採取できない場合、LiDARデータのみでSLAMせにゃなりません。
Hector_SLAM パッケージを使ってみます(精度は落ちるようですが)。
Jetson Nano (Jetpack 4.6) + ROS1 (Melodic) で Hector_SLAM を動かしてみる
Appendix
Leave a Reply