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単位。
rvizでの表示方法
距離の測定結果は数値だけ見ても把握しづらいけど、rvizで可視化すると理解しやすい。
Addで/scanを追加
Global OptionのFixed Frameにlaserを設定。StyleでPointsを選択。
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 というものがあった。
ROS.org navigation/Tutorials/RobotSetup/Sensors
LaserScan配信の実装例