360°の距離を計測できる2D LiDAR LDS-01を使ってみた

スポンサーリンク

2D LiDAR LDS-01(別名 HLS-LFCD2、HLS-LFCD-LDS、Neato XV-11 LiDAR?)を使ってみたので、その記録です。

距離はレーザーの反射で測定しているので、鏡など鏡面反射する物があると測定結果が乱れる。確認してないけど、反射率の低い黒い物の測定にも弱く、透過するようなガラスなどは測定できないらしい。使用しているレーザーはIEC60825-1 Class 1準拠なので、裸眼やルーペ、双眼鏡で見ても安全なレベル。室内用で測定できる距離は12cmから3.5mと狭め。TurtleBot3で使われているため、ROSやROS2での対応状況はとてもいい。

動作確認環境

CPUボート: Jetson Nano
OS: Ubuntu 18.04
ROS: Melodic

セットアップ

ROSパッケージのインストール

$ sudo apt-get install ros-melodic-hls-lfcd-lds-driver -y
$ sudo chmod a+rw /dev/ttyUSB0

利用

起動:

$ roslaunch hls_lfcd_lds_driver hlds_laser.launch

デフォルト設定では/dev/ttyUSB0に接続されている前提で、LiDARの結果はtopic名/scanで配信される。

起動とrvizでの表示:

$ roslaunch hls_lfcd_lds_driver view_hlds_laser.launch

動作確認

/scan topicの内容を確認。

$ rostopic hz /scan
subscribed to [/scan]
average rate: 4.926

$ rostopic echo /scan
header: 
  seq: 1112
  stamp: 
    secs: 1609495529
    nsecs: 110188328
  frame_id: "laser" ← デフォルトのframe_id
angle_min: 0.0  ← Z軸が上を向いている状態だと、0°はX軸に沿った方向
angle_max: 6.26573181152             ← 6.265 rad = 359°
angle_increment: 0.0174532923847     ← 0.01745 rad = 1°
time_increment: 2.98800005112e-05
scan_time: 0.0
range_min: 0.119999997318  ← 12cm
range_max: 3.5 ← 3.5m
ranges: [0.6890000104904175, 0.6850000023841858, 0.6790000200271606, 0.675000011920929,
省略
7269999980926514, 0.7350000143051147, 0.722000002861023, 0.7279999852180481] ← 360個のデータ
intensities: [2986.0, 2874.0, 2991.0, 2920.0, 2838.0, 2639.0, 2719.0, 2725.0, 2661.0, 2650.0, 
省略
2541.0, 2634.0, 2711.0] ← 360個のデータ

360°カバーできていて、前方から順番に1°単位でデータが格納されていることがわかる。詳しい説明は sensor_msgs/LaserScan 参照。

データの格納順番

上からみて、X軸方向が0番目のデータ。その後、反時計周りに格納されている。
Gridはrvizのデフォルトそのままなので、1m単位。

f:id:sato_susumu:20210102002140p:plain

rvizでの表示方法

距離の測定結果は数値だけ見ても把握しづらいけど、rvizで可視化すると理解しやすい。 Addで/scanを追加
f:id:sato_susumu:20210102002144p:plain

Global OptionのFixed Frameにlaserを設定。StyleでPointsを選択。
f:id:sato_susumu:20210102002147p:plain

LDSとUSB2LDS間の接続に使うハウジングとコネクタ

1.25mmピッチであまり見かけないタイプなので、潰しかけて焦った。
LDS側 Molex 51021-0800
USB2LDS側 Molex 53048-0810

リンク

ROBOTIS-GIT / hls_lfcd_lds_driver
マニュアル
技術仕様
sensor_msgs/LaserScan

ROS.org rviz/ DisplayTypes/ LaserScan

laser_filters - ROS Wiki
距離や強さなどのフィルター処理パッケージ
erenaud3 / fakeLaserScan
実機がなくてもLiDARを試せる fakeLaserScan というものがあった。

良さげなマウントの3Dデータ、他

ROS.org navigation/Tutorials/RobotSetup/Sensors
LaserScan配信の実装例