Skip to content

2D / 3D LiDAR

2D LiDARは平面スキャンを、3D LiDARは前方半球の点群を配信します。どちらもROSセンサー座標の+X前方、+Z上方です。

入出力Topic

パーツ入力Topic出力Topic
PyLoN LiDAR 2Dなし/ksp_vessel/lidar_2d/<lidar_2d_id>/scansensor_msgs/msg/LaserScan
PyLoN LiDAR 3Dなし/ksp_vessel/lidar_3d/<lidar_3d_id>/pointssensor_msgs/msg/PointCloud2

2D LaserScan

  • angle_minは水平FOVの-1/2です。
  • 360度スキャンではangle_increment = FOV / horizontalCount、360度未満では両端を含むためFOV / (horizontalCount - 1)です。
  • scan_time1 / scanRateHztime_incrementscan_time / horizontalCountです。
  • range_min0.0range_maxはパーツの最大距離です。
  • KSP側の未ヒット値-1、非有限値、範囲外値はROS側で+Infになります。
  • intensitiesは空配列です。
bash
ros2 topic echo /ksp_vessel/lidar_2d/front_lidar/scan

3D PointCloud2

  • height = 1のunorganized point cloudです。
  • fieldはxyzの3つで、すべてlittle-endian FLOAT32です。
  • point_step = 12 byteです。
  • 未ヒットは点群から除外され、is_dense = trueになります。
  • 現行の3DパーツはFibonacci半球配置を使います。KSPはrangeだけを送り、bridgeが既知の方向列を復元して点へ変換します。
bash
ros2 topic echo --once /ksp_vessel/lidar_3d/roof_lidar/points

既定設定

設定2D3D
スキャン周期10 Hz10 Hz
水平FOV360°360°
ray数180Mediumで約2011
最大距離2000 mMediumで100 m
UDP送信先127.0.0.1:49010127.0.0.1:49010
自船collision除外有効有効

3DはPart Action Windowから次のプロファイルを選択できます。

Profile距離設定範囲密度既定距離おおよそのray数
Near10〜30 m160 rays/sr30 m1005
Medium50〜150 m320 rays/sr100 m2011
Long150〜250 m1024 rays/sr250 m4096(ray上限)

Topic作成と削除

lidarEnabledudpEnabledが有効な状態で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_prefixpylonです。

取り付けと計測原点

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として登録できます。

PyLoNを使ったROS2アプリケーション開発のためのガイドとAPIリファレンス