Skip to content

システム概要

初めて導入する場合は、Getting Startedで必要なソフトのインストールから受信確認まで進めてください。

PyLoNは、KSP 1.xのFlightシーンとROS2ノードの間を2本のUDP経路で接続します。ROS2側では、用途ごとに標準メッセージへ変換されたTopicだけを扱えばよく、UDP JSONを直接処理する必要はありません。

KSP pluginセンサー、機体状態、Ground TruthをUDP 49010へ送信
ROS2 bridgeUDP JSONと標準ROS2メッセージを相互変換
ROS2 nodesTopicを購読し、指令Topicへpublish

指令は逆向きに、ROS2 bridgeからKSPのUDP 49011へ送られます。

データフロー

方向内容既定経路
KSP → bridgeセンサー、モーター/アクチュエータ状態、推進系、Ground Truth、URDFUDP 127.0.0.1:49010
bridge → KSPauthority、lease-bound Wrench、型付きアクチュエータ指令UDP 127.0.0.1:49011
bridge → ROS2センサー、状態、診断、Ground Truth、URDF、TFROS2 Topic
ROS2 → bridgeモーター、推進系、機体・アクチュエータ指令ROS2 Topic

パーツと機能

KSP側ROS2側の主なAPI役割
PyLoN LiDAR 2Dsensor_msgs/msg/LaserScan平面距離スキャン
PyLoN LiDAR 3Dsensor_msgs/msg/PointCloud2前方半球点群
PyLoN RGB CameraImage + CameraInfoRGB画像と内部パラメーター
PyLoN Size-0 Axial ServoMotorCommand / JointState回転軸制御
PyLoN Slim Telescoping ActuatorMotorCommand / JointState最大約2倍に伸びる直動軸制御
KSP標準Wheel / Engine / RCSpylon_interfacesパーツ単位の型付き制御・状態
KSP標準ドッキングポートDockingPortCommand/State + Image状態、切離し、選択式ポートカメラ
active vesselBodyWrenchCommand / WrenchFeedback / PoseStamped所有権付き機体要求・実現量・Ground Truth

標準Engine / RCSは専用パーツではありません。active vessel内のModuleEngines系とModuleRCS系をFlight開始後に自動検出します。

Topicの寿命

  • bridge状態、集約モーター/推進系、機体制御、Ground Truth、モデル関連のTopicはbridge起動時から存在します。
  • LiDARとカメラのTopicは、対象パーツから最初のデータを受け取った時点で動的に作成されます。
  • /ksp_vessel/actuators/<type>は種類ごとの常設Topicで、commandのidにより個体を選択します。切断済みの分離状態はactive vessel切替まで保持されます。
  • /ksp_vessel/docking_ports/<id>はactive vesselのドッキングポートmanifestから動的に作成され、ポート消失または無通信timeoutで削除されます。
  • センサーTopicはKSPからinactive通知を受けると削除されます。通知が欠落した場合も、既定では最終受信から3秒後に削除されます。
  • 次のFlightでは、最初のデータ受信時に同じTopicが再作成されます。

名前と座標系

センサーTopicの<sensor_id>は、VAB/SPHのパーツ右クリックメニューから設定します。英数字とアンダースコアへ正規化され、同一機体内の重複には_2_3のような接尾辞が付きます。

LiDARはROSセンサー座標の+X前方・+Z上方です。カメラはREP-103 optical座標の+X右・+Y下・+Z前方です。active vesselモデルを受信できた場合、各メッセージのframe_idはSensor ID由来の安定名になり、対応する機体linkへ/tf_staticで接続されます。

KSP mod と ROS2 bridge の実装に基づくリファレンス