Skip to content

ドッキングポート

Flight中のactive vesselにある全ModuleDockingNodeを自動検出します。KSP標準ポートだけでなく、同じモジュールを使う互換パーツも専用設定なしで対象になります。

ポート名はdocking_port_<persistentId>_<moduleIndex>です。実際の名前は次で確認できます。

bash
ros2 topic list | grep docking_ports

Topic

方向Topic内容
出力/ksp_vessel/docking_ports/<id>/statepylon_interfaces/msg/DockingPortState接続・捕捉・切離し可否とカメラ選択状態。10 Hz、Best Effort
入力/ksp_vessel/docking_ports/<id>/commandpylon_interfaces/msg/DockingPortCommandカメラ選択・停止・切離し。Reliable
出力/ksp_vessel/docking_ports/<id>/camera/image_rawsensor_msgs/msg/Image選択中ポートの320×240、5 Hz、rgb8画像
出力/ksp_vessel/docking_ports/<id>/camera/camera_infosensor_msgs/msg/CameraInfo垂直FOV 60度のpinhole内部パラメーター

stateにはKSPの生のstate文字列に加え、dockedacquiringreleasablecamera_active、接続相手の名前とpart IDが入ります。

カメラを切り替える

Flight開始時とactive vessel切替時は、persistent ID順の先頭ポートが自動選択されます。同時に配信するポートは1個だけです。

bash
ros2 topic pub --once \
  /ksp_vessel/docking_ports/docking_port_12345_2/command \
  pylon_interfaces/msg/DockingPortCommand \
  '{vessel_id: VESSEL_ID, controller_id: CONTROLLER_ID, lease_id: LEASE_ID, action: 1, sequence: 1}'

action: 1SELECT_CAMERAaction: 2STOP_CAMERAです。停止後は自動的に再選択されず、別のSELECT_CAMERAを受けるまで画像を配信しません。ポートがactive vesselから消えた場合は残っている先頭ポートへ自動的に切り替えます。

カメラはドッキングノードの開口方向を向きます。shielded/inlineポートが閉じている場合は閉鎖状態がそのまま映ります。画像とCameraInfoは同じtimestampとREP-103 optical frame(+X右、+Y下、+Z前方)を共有します。

Undock / Decouple

bash
ros2 topic pub --once \
  /ksp_vessel/docking_ports/docking_port_12345_2/command \
  pylon_interfaces/msg/DockingPortCommand \
  '{vessel_id: VESSEL_ID, controller_id: CONTROLLER_ID, lease_id: LEASE_ID, action: 3, sequence: 2}'

RELEASEは現在KSPで有効なUndockを優先し、なければDecoupleを実行します。releasable: falseの状態では何も実行しません。事前に機体制御のleaseを取得し、そのIDを設定してください。連番は同じlease内の全制御指令で単調に増加させます。ゼロや再送済みの連番は拒否します。

相対Pose/Twist、ターゲット指定、Control From HereはこのAPIには含まれません。

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