血管内を進むカテーテルの変形と血管壁への接触を、患者ごとの血管形状を使ってGPU上で計算するモジュールが一般提供となった。器具全体の動きを連結した制約式として解き、透視画像を参照する操作をリアルタイムで模擬する。
血管内の操作を単体モジュールで模擬
NVIDIAは、医療ロボット向け基盤Isaac for Healthcareの血管内シミュレーションモジュールを一般提供した。初期リリースでは、透視画像を参照しながら血管内を進むカテーテルの操作をリアルタイムで模擬する。
このモジュールは単体のパッケージとして実装され、異なる作業環境にも個別に組み込める。操作対象となる柔軟な器具の動きは、次の物理計算へ渡される。
器具全体の変形を連結した制約式で解く
柔軟な器具の曲げ、ねじれ、伸びには、細長い物体の変形を表すCosserat rodsを使う。XPBDによる計算では、器具の各区間に伸び・せん断の制約式を3本、曲げ・ねじれの制約式を3本設ける。
これらを連結すると、6×6のブロックを持つ三重対角の行列系になる。この行列系をThomas algorithmで解く処理量は、器具の長さに対して線形に増える。NVIDIAによると、手元側から加えた挿入や回転は、この連結した計算を通じて各シミュレーションステップ内に先端へ伝わる。
患者別の血管メッシュで壁との接触を判定
先端まで伝わった器具の動きは、患者ごとの血管形状との接触判定に使われる。判定では血管の三角形メッシュへ直接最近点を問い合わせ、距離場を事前計算する工程を省く。
器具のサンプル点が血管壁に入り込むと、計算上は血管内腔へ戻し、壁に沿った滑りは残す。現行リリースでは血管壁を変形しない境界として扱い、器具の側を拘束する一方向の相互作用になっている。
複数環境の計算と学習データをGPU上でつなぐ
独立した器具の計算は、GPU上の複数のシミュレーション環境で並行して進む。器具全体の変形と血管壁との接触を、それぞれの環境で処理する構成だ。
制御や強化学習とのデータの受け渡しには、TorchとWarpの相互運用機能を使う。データをGPU上に保ったままコピーなしで受け渡せるため、シミュレーションの状態を学習側へ接続できる。