TEAMZ
技術記事一覧へ戻る
技術記事2026-09-10

Isaac Sim・ROS2で複数カメラの人物追跡を連携|固定カメラからG1へ

棚の裏で固定カメラが追っていた人が、G1自身のカメラにも現れたとき、同じ人物として追跡を引き継げるか。固定カメラと、Visual SLAMで位置を推定しながら歩くG1のカメラを、共通の追跡処理へ接続しました。

固定カメラのIDと履歴を、G1のカメラへ引き継ぐ

4.5秒・10fps・等倍速。左は固定カメラ、右はG1のカメラ。IDは画像から推定したもので、シミュレーターの正解IDではありません。

固定カメラの画像から人物を検出し、見た目の特徴と推定床位置を記録します。G1のカメラに人物が現れたら、同じ地図上の位置と画像の特徴を照合し、既存のIDへ観測を追加します。カメラごとに別のIDを付けるだけでなく、観測元と観測時刻を残した共通の履歴を持たせました。

今回の18秒の実行では、10.33秒に固定カメラで追っていたID 1が指定領域へ入り、ROS2で停止要求を出しました。その後、10.53秒にG1のカメラからの観測が同じID 1へ結び付きました。引き継ぐ直前の106件の観測履歴に、G1側の観測が加わっています。

採点で人物へ対応付けられた観測は固定カメラ125件、G1側11件で、両方とも同じIDでした。両カメラの観測を対応付けられた11組もIDが一致しました。これは1人の短い場面の結果です。推定床位置とシミュレーターの人物位置を距離で対応付ける簡易採点で、一般的な人物再識別の精度を示す値ではありません。

共通IDは、何に使うのか

「この領域に人がいるから止まる」という判断だけなら、共通IDは必須ではありません。固定カメラから情報が来ること自体が、早い停止要求につながります。

今回追加した共通IDは、停止の理由になった対象と、その後G1が見た対象を結び付けるために使います。ROS2には停止要求だけでなく、理由となった対象IDも記録します。これにより「固定カメラで見て停止した対象を、今はG1のカメラでも追っている」という履歴を確認できます。同時に見えた観測も、対象IDの一覧では一つにまとめます。

初回の公開では、2台の固定カメラ間でのID改善と、G1への停止要求を別々に検証していました。停止比較だけでは、固定カメラからG1への追跡引き継ぎを示せていませんでした。今回、その間を実装し直し、動くG1・画像認識・ROS2をつないで実行しました。

ただし、追跡履歴を使った停止解除や経路変更はまだ実装していません。共通IDの導入によって停止性能が向上した、という結果でもありません。

Visual SLAMと時刻・座標の役割

G1はIsaac Simの物理シミュレーションで歩きます。頭部のステレオ画像をcuVSLAMへ入力し、推定した位置から短い経路を追従する歩行指令を出しました。地図上の初期配置は既知という前提です。シミュレーターの真の位置を、経路追従の自己位置には使っていません。

固定カメラは設置位置・向き、G1のカメラはVisual SLAMの推定位置・向きを使い、人物の位置を共通の地図へ変換します。今回は検出枠の下端中央を足元、床を平面と仮定しました。上半身だけの検出や、しゃがむ姿勢では、この仮定が位置誤差を生みます。校正値とtf2の計算が一致していても、人物位置が正しいとは限りません。

時刻も同じです。毎秒1.55mで歩く人の1秒前の位置は、約1.55m後方です。古い位置を現在の位置と思って照合すると、別の人と結び付けたり、領域への進入を見逃したりします。今回の追跡処理では観測時刻と受信時刻を分け、古い入力・逆順・重複を除外しています。

新しい実行ではVisual SLAMは450回の推定を返しました。G1は停止要求後、水平速度が0.08m/s未満で0.5秒続く状態に入るまで約2.04秒かかり、約40cm進みました。停止指令と実際の減速は別々に測っています。

先の固定カメラ情報あり/なしの比較では、停止要求が0.50秒早まり、約27cm手前で止まりました。これは以前の比較実験の結果であり、今回のID統合による改善量ではありません。

同じログで引き継ぎを確かめる

認識入力、カメラの座標変換、時計、停止要求、停止理由のIDをrosbag2へ記録しました。新しい実行の180件の認識入力から追跡を再計算すると、ID・引き継ぎイベント・停止理由のID・領域判断が一致しました。座標は計算環境による微小差を分け、1e-9mの許容差で照合しています。実際のROS2通信による再生でも、認識入力180件と停止要求900件の内容・順序を確認しました。

保存済みの別実行の入力でも試しました。10.5秒以降の固定カメラ入力を打ち切ると、G1側はそれ以前の105件の履歴を持つIDへ引き継げました。カメラの処理順を入れ替えても同じ人物へ対応し、重複入力は除外しました。G1側の入力を400ms古くする試験では、古い観測を除外するため引き継ぎは行われません。

この入力打切り・遅延試験は保存ログに対する試験です。その条件でG1の物理走行を再実行したものではありません。また、保存入力からの判断の一致と、物理シミュレーションが毎回同じ結果になることは別です。

5人のID改善から引き継いだものと、残る課題

共通追跡には、先に5人の映像で改良した処理を使っています。最初の見た目の特徴を残し、人の検出枠が重なる間は特徴を更新しないことで、別人の服や背景を本人の特徴として覚えるのを抑えます。

先行する5人・2固定カメラの検証。5秒・30fps・等倍速。上の固定カメラ+G1の実験とは別の条件です。

同じ5動作の300画像では、カメラ間のID一致が648/724組(89.5%)から720/724組(99.4%)へ改善しました。全員歩行の別映像でも396/553組(71.6%)から526/553組(95.1%)へ改善しています。ただし取り違えは残り、どちらも改良時に使った映像です。5人は購入モデル142_Keiの色違いで、顔や体格の異なる5人を識別した結果ではありません。

今回の固定カメラ+G1は1人での検証です。複数人がG1の前ですれ違う場合、同じ服装の人、長時間の遮蔽後の再同定、実映像での性能は未確認です。認識器がG1自身をpersonとして検出する問題も残して表示しています。

人物の経路・出現時刻・判定領域は事前に設定しましたが、その予定や人物の正解IDを追跡処理へ渡したわけではありません。画像推論中はシミュレーション時計が止まるため、実時間の処理性能を示すものでもありません。実機の安全機能や停止性能の保証ではなく、画像からの認識・IDの引き継ぎ・停止理由・再生評価を一つの構成で確認した実験です。

実験日:2026年9月10日。Isaac Sim 5.1.0.0、Isaac Lab 2.3.0、ROS2 Humble、cuVSLAM 17、NVIDIA L4。外部のMCT製品とは未接続です。

お問い合わせ