YDLidarX2_Driver
USB シリアル接続の低価格 2D LiDAR「YDLIDAR X2」のドライバです。1 回転ごとに 1 スキャンを出力します。
処理内容
- DeviceName に 115200 baud で接続し、YDLIDAR のドライバコード(MIT ライセンス)でスキャンパケットをデコードします。
- Inverted は YDLIDAR のドライバにそのまま渡します。X2 は角度を時計回りに測ります。Inverted = true(初期値)では反時計回りが正の角度に変換し、このツールキットの座標系の約束(ROS REP-103:X 前方、Y 左、角度 0 は +X)に合わせます。変わるのは各点の角度(2π − θ)だけで、点は測定順(時刻の順)のままです。そのため、角度は配列の後ろほど小さくなります。生の時計回りの角度が必要なときだけ false にしてください。
- StartAtZeroAngle は、角度 0 に最も近い点が先頭になるように配列を巡回シフトします。点は測定順(時間順)のままで、値による並べ替えはしません。並べ替えが必要なときはソート用のコンポーネントを使ってください。FixedOutputSize は 1 回転あたりの点数を一定にします。
使い方
- 主な出力:
angle_num→DataViewer.input_0、angle→DataViewer.input_1、distance_in_m→laser_scan_to_xyz_points.dist_points。
データ形式
- angle(rad または deg、[-π, π))、distance_in_m(Float64)、distance_in_mm(Integer32)は angle_num 個の要素を持ちます(最大 2048)。
- 測定範囲外(0.05 m 未満または 64 m 超)の点は距離 0 として残します。すべての出力のタイムスタンプは、スキャンを受信した時刻です。
注意事項
- X2 で動作確認しています。ほかの YDLIDAR 機種は自己責任で使用してください。
- バージョン 1.01:AngleSort を StartAtZeroAngle に改名し、Inverted(初期値 true)を追加しました。バージョン 1.0 は時計回りの角度を出力していたため、1.0 で記録したデータと合わせるときは Inverted = false にしてください。
参考文献
- [1] EAI (YDLIDAR), YDLidar-SDK (bundled in 3rdparty/YDLidar-SDK). https://github.com/YDLIDAR/YDLidar-SDK — 使っている機能:センサとの接続とスキャンの取得(CYdLidar)。
プロパティ
| 名前 | 既定値 | 説明 |
|---|---|---|
DeviceName | COM1 | LiDAR のシリアルデバイス(Windows は COMx、Linux は /dev/tty*)。 |
FixedOutputSize | false | true の場合、毎回転を同じ点数で出力します。 |
StartAtZeroAngle | false | true の場合、角度 0 に最も近い点から出力します(巡回シフト、測定順は保持)。false の場合はドライバの順のまま出力します。 |
AngleUnit | radian | 角度出力の単位。選択肢: radian, degree。 |
Inverted | true | YDLIDAR のドライバにそのまま渡します。true(初期値):X2 は時計回りに測るため、反時計回りが正の角度(ROS REP-103)に変換します。false:X2 の生の時計回りの角度です。どちらでも、点は測定順(時刻の順)のままです。 |
出力
| 名前 | 説明 |
|---|---|
angle_num | 現在の 1 回転の点数。 型: Integer32 |
angle | 各点の角度(AngleUnit で選んだ単位)。Inverted が true(初期値)のとき反時計回りが正です。 型: Float64 |
distance_in_m | 各点の距離 [m]。 型: Float64 |
distance_in_mm | 各点の距離 [mm]。 型: Integer32 |
RTMaps ツールキット ドキュメント