部屋ひとつ離れただけで役に立たなくなるロボットは、VPN の問題よりずっと前に、リンクの問題か作業量の問題を抱えている。暗号化が守るのは経路であって、電波の到達距離を延ばすわけでも、遠隔の計算を早く終わらせるわけでもない。目の前の判断は、どの作業が本当にネットワークを越える必要があるかであり、その答えはたいてい人が予想するより多くのトラフィックを消す。三つの条件で決まり、スループットはその一つではない。

三つの構成、一つの依存関係の問い

表は、図にどのソフトウェアが現れるかではなく、何がリンクに依存するかで構成を分けている。

ArrangementWhat depends on the linkWhat stays onboard
Live remote processingThe exchange and any timely result the workstation returnsOnly what the remote step does not block
Onboard processing, remote observationThe declared telemetry or display streamThe processing loop itself
Local recording, later analysisTransfer of one selected datasetThe entire run, including raw sensors

その表のどの行も安全の根拠ではない。制御と安全の機能には、遅延、パケット損失、接続断に対する適切な答えが依然として必要であり、トンネルの表示がそれを与えることはない。表が示すのは依存関係がどこにあるかであり、それはネットワーク設計が実際に変えられる部分である。

条件一:その答えは即時性を必要とするか?

遠隔の結果が制御器に渡るなら、ネットワークは制御ループの内側にあり、その遅延、ジッタ、切断は制御の性質になる。同じ結果がディスプレイ、ダッシュボード、あるいは見ている人にだけ渡るなら、同一の遅延は見た目だけの問題である。

無線リンク上の閉ループ作業は可能であり、「VPN が遅い」という報告の多くもそこから生じるのは、見える構成要素がトンネルで、原因は無線と経路にあるからだ。トンネル自身の ping ではなく実際のメッセージの往復時間を測り、その数値がループの予算に収まるかを問う。収まらないなら、部屋の誰も制御していないリンクに対して厳しいサービス水準を交渉するのではなく、その処理を機体側へ移す。測定した数値は、次の報告が条件を伴わずに届くのだから、測定条件とともに記録する。

条件二:どのレート、方向、中断を宣言できるか?

データ、レート、方向、そしてアプリケーションが許容する最長の中断を書き出す。上りのカメラ映像と下りの指令チャネルは異なる壊れ方をし、静止した点検が許容する中断は移動中の作業を終わらせる。

選択肢を比べるときは物理的な接続とトンネルを分けて考えるべきで、強い無線と小さい作業量は別の修理だからだ。最終的に完了する大きな転送は、時間に敏感な結果が安定して届くことを何も証明せず、健全なトンネルはその背後の無線について何も証明しない。

次に、要求を擁護するのではなく減らす。観測ストリームを間引き、要約や差分を送り、生のセンサデータは保存が安く送信が高くつく機体側に残す。ペイロードが小さくなれば、より速いリンクの根拠は弱まり、しばしばリンク自体が不要になる。

条件三:誰が見る必要があり、何がローカルに残るか

観測はたいてい処理よりはるかに小さな要件である。人がカメラを見て、後からログが残る必要があるなら、それはテレメトリと保存である。モデルを動かす必要があるなら、まずその結果だけを転送して機体側で動かせないかを問うべきで、重い処理を機体側へ移せば同期の依存が消え、再試行できる転送だけが残る。

同じロボット上に二つの ROS 参加者が存在することは、それ自体ではトンネルを正当化しない。ノードの到達性、アプリケーションの認可、ローカルの復旧計画は別々の問題であり、VPN が答えるのは最初の一つだけで、しかも経路指定を求められたトラフィックについてだけである。

データセットの記録はそれ自体が設計であり、独自のコマンドを持つ

バージョンに固定した例として、ROS 2 Jazzy の記録チュートリアル は選択したトピックの記録、生成された bag の検査、再生を扱っている。承認された観測トピックを記録し、実行に名前を付け、メッセージ定義と設定をそのそばに置く。

ros2 bag record -o run42 /scan /camera/image_raw
ros2 bag info run42
ros2 bag play run42

ツールが簡単だからといって、すべてのトピックを記録してはいけない。保存領域は埋まり、カメラと位置のデータは機微を含み、ラベルのないトピックの bag は次にそれを開く人にとって分析の問題になる。導入済みのディストリビューションもコマンドを決めるので、ROS 1 の bag 向けに書かれたツールは ROS 2 の bag には移らず、ドキュメントをロボットに導入されたバージョンに合わせる。

隔離された分析環境またはシミュレーション環境で再生する。記録した指令トピックを稼働中のロボットのアクチュエータへ再生するのは事故であり、防ぐには別の ROS ドメインにするか、ループ内にハードウェアを置かないことだ。

依存関係がどこに属するかを決めて書き留めるべきで、VPN は行われる必要のある交換を守り、機体側の処理は同期である必要のなかった交換を消し、記録したデータセットはライブの消費者を後からの消費者に置き換える。そして、誰かが設計を完成と呼ぶ前に、ローカルの作業を動かしたまま切断のケースを意図的に試す。

関連記事