テーマ
2D / 3D LiDAR
2D LiDARは平面スキャンを、3D LiDARは前方半球の点群を配信します。どちらもROSセンサー座標の+X前方、+Z上方です。
入出力Topic
| パーツ | 入力Topic | 出力Topic | 型 |
|---|---|---|---|
| PyLoN LiDAR 2D | なし | /ksp_vessel/lidar_2d/<lidar_2d_id>/scan | sensor_msgs/msg/LaserScan |
| PyLoN LiDAR 3D | なし | /ksp_vessel/lidar_3d/<lidar_3d_id>/points | sensor_msgs/msg/PointCloud2 |
2D LaserScan
angle_minは水平FOVの-1/2です。- 360度スキャンでは
angle_increment = FOV / horizontalCount、360度未満では両端を含むためFOV / (horizontalCount - 1)です。 scan_timeは1 / scanRateHz、time_incrementはscan_time / horizontalCountです。range_minは0.0、range_maxはパーツの最大距離です。- KSP側の未ヒット値
-1、非有限値、範囲外値はROS側で+Infになります。 intensitiesは空配列です。
bash
ros2 topic echo /ksp_vessel/lidar_2d/front_lidar/scan3D PointCloud2
height = 1のunorganized point cloudです。- fieldは
x、y、zの3つで、すべてlittle-endianFLOAT32です。 point_step = 12byteです。- 未ヒットは点群から除外され、
is_dense = trueになります。 - 現行の3DパーツはFibonacci半球配置を使います。KSPはrangeだけを送り、bridgeが既知の方向列を復元して点へ変換します。
bash
ros2 topic echo --once /ksp_vessel/lidar_3d/roof_lidar/points既定設定
| 設定 | 2D | 3D |
|---|---|---|
| スキャン周期 | 10 Hz | 10 Hz |
| 水平FOV | 360° | 360° |
| ray数 | 180 | Mediumで約2011 |
| 最大距離 | 2000 m | Mediumで100 m |
| UDP送信先 | 127.0.0.1:49010 | 127.0.0.1:49010 |
| 自船collision除外 | 有効 | 有効 |
3DはPart Action Windowから次のプロファイルを選択できます。
| Profile | 距離設定範囲 | 密度 | 既定距離 | おおよそのray数 |
|---|---|---|---|---|
| Near | 10〜30 m | 160 rays/sr | 30 m | 1005 |
| Medium | 50〜150 m | 320 rays/sr | 100 m | 2011 |
| Long | 150〜250 m | 1024 rays/sr | 250 m | 4096(ray上限) |
Topic作成と削除
lidarEnabledとudpEnabledが有効な状態でFlightへ入ると送信を開始します。最初のスキャンを受けてTopicが作られ、Flight終了時のinactive通知または受信タイムアウトで削除されます。streamAt20Fpsを有効にするとscanRateHzを無視して20 Hz固定になります。
各LiDARはVAB/SPHのEdit ROS2 Sensor IDで編集できる永続IDを持ちます。新規パーツには2Dならlidar_2d_<8桁UID>、3Dならlidar_3d_<8桁UID>が自動設定され、UDPのsensorIdとしてbridgeへ渡されます。
Frame
active vesselモデルとpartFlightIdが対応した場合、frame_idは機体linkの子LiDAR frameです。モデルがない場合は次のfallbackになります。
text
<frame_prefix>_<sensor_id>_lidar既定のframe_prefixはpylonです。
取り付けと計測原点
2Dの計測原点はパーツローカル(0, 0, -0.032)、3Dはドーム頂点の2 mm外側(0, 0, 0.059)です。3Dは取付面の外向き法線を中心とする半球を走査します。軸と原点の設定はパーツ設定を参照してください。
レーザープレビュー
VAB/SPHまたはFlightでLiDARパーツを右クリックし、Show Laser Previewを押すと、そのパーツのレーザー線を表示します。Hide Laser Previewで非表示に戻せます。アクショングループにはToggle Laser Previewとして登録できます。