はじめに
LD06 LiDARをPCのUSBポートにつないでROS2環境で動かしてみた。
LD06 LiDARはMini PupperのLiDARに採用されており、非常に小さくコンパクトであることが特徴。
USB-シリアル変換器を使うことで、Raspberry Pi 4だけでなく普通のPCでも使用することができる。
実行環境
以下の環境で動作確認しています。
CPU | Ryzen5 |
OS | Ubuntu22.04LTS |
ROS2 | Humble |
ROS2パッケージのインストール
こちらのROS2パッケージを使用
mkdir -p ~/ros2_ws/src
cd ros2_ws/
git clone -b ros2 https://github.com/linoroot/ldlidar src/ldlidar
rosdep update && rosdep install --from-path src --ignore-src -y
colcon build
source install/setup.bash
準備する物
- LD06 LiDAR本体
- USB-シリアル変換基板
- USB micro-Bケーブル
- ROS2がインストールされたPC
筆者はRSで購入したLiDAR本体にaliexpressで購入したUSB-シリアル変換基板を使用した。
実行
USBポートに実行権限を付与
sudo chmod 777 /dev/ttyUSB0
永続的に使用する場合、dialoutグループに追加する
sudo gpasswd --add $USER dialout
ROS2ノードの実行
source ~/ros2_ws/install/setup.bash
ros2 launch ldlidar ldlidar.launch.py
portを指定する場合(デフォルトは/dev/ttyUSB0)
ros2 launch ldlidar ldlidar.launch.py serial_port:=/dev/ttyUSB1
エラーが出なければ成功
ros2 launch ldlidar ldlidar.launch.py
[INFO] [launch]: All log files can be found below /home/porizou/.ros/log/2022-09-23-04-18-08-388939-porizou-Lenovo-IdeaPad-S540-14API-12039
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ldlidar-1]: process started with pid [12040]
[ldlidar-1] [INFO] [1663874288.598305955] [rclcpp]: Autodetecting serial port
[ldlidar-1] [INFO] [1663874288.623736308] [rclcpp]: /dev/ttyUSB0 CP2102 USB to UART Bridge Controller
[ldlidar-1] [INFO] [1663874288.623796246] [rclcpp]: Using port /dev/ttyUSB0
[ldlidar-1] [INFO] [1663874288.641227783] [rclcpp]: LiDAR_LD06 started successfully
LaserScanトピックの確認
ros2 topic echo /scan
header:
stamp:
sec: 1663890733
nanosec: 93872047
frame_id: laser
angle_min: 0.0
angle_max: 6.2831854820251465
angle_increment: 0.013947107829153538
time_increment: 0.0
scan_time: 0.0
range_min: 0.004999999888241291
range_max: 15.0
ranges:
- 3.2829999923706055
- 3.2829999923706055
- 3.2829999923706055
- 3.2679998874664307
- 3.2829999923706055
rvizでLaserScanを見る
rviz2
rviz2を起動してFixedFrame
にlaser
を入力、ADDからLaserScanを選択してTopic名は /scan
を選ぶと点群が表示される。
変更可能なパラメータ
以下launch.pyから変更できるパラメータ
パラメータ | デフォルト値 | |
---|---|---|
serial_port | USBのシリアルポート | /dev/ttyUSB0 |
topic_name | LaserScanのトピック名 | scan |
lidar_frame | LaserScanのフレームID | laser |
range_threshold | これより小さいデータはNaNにする | 0.005 |
おわりに
LD06 LiDARを使ってみて、他の1万円代の安いLiDARと比べて以下の点が優れていると感じた。
- 回転部が露出していないので安心
- intensity(強度)データが取得できる
- サイズが小さいので、小型のロボットにも搭載しやすい
今後、小型の自律移動ロボットに使うLiDARとして非常に有力な選択肢になるだろう。
その他
ROS2 Foxy環境でlaunchファイル実行時にエラーが出たので、
launch/ldlidar.launch.py
の11行目を以下のように変更する。
- default_value='',
+ default_value='/dev/ttyUSB0',
参考