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

読めなければ、撮り直す。Go2の工場点検をIsaac Simで検証

工場の点検では、計器の前に到着できても、数値が読めるとは限りません。遠すぎたり、角度が悪かったりすると、撮った画像をそのまま記録しても点検を完了できないからです。

チームゼットでは、四脚ロボットGo2が画像を確認し、読取条件を満たさなければ撮影位置を変えるデモを制作しました。タンク・配管・ポンプを配置した架空の工場をIsaac Sim上に作り、移動と計器の読み取りをつないでいます。Isaac Simは、ロボットの動き・接触・カメラ画像を計算できるシミュレーターです。

約26秒のシミュレーション。移動 → 読取保留 → 撮り直し → 数値の記録。25fps・シミュレーション時間の等倍で、途中を省略していません。

見どころは、読めないときの次の行動

最初の位置では、文字盤の目盛りを事前登録した画像と十分に照合できず、5枚とも読取を保留しました。その判定を受けて、ロボットは近くの別の撮影位置へ移動します。移動先の候補はあらかじめ設定してあります。

撮り直した5枚では、0.914〜0.917 MPaの値が得られました。5枚を小さい順に並べた中央の値、0.916 MPaを記録しています。MPaは圧力の単位です。仮想の計器に設定した値は0.920 MPaで、この試行の差は0.004 MPaでした。

最初の撮影位置では目盛りの照合が不十分。撮り直した位置では文字盤が大きく見え、5枚から0.916 MPaを記録した比較
実際にロボットの仮想カメラで撮った画像です。クリックすると拡大できます。

カメラの画像は、移動と点検の両方に使う

Go2に左右2台の仮想カメラを追加しました。ステレオカメラと呼ばれる構成で、左右の見え方の差と、時間とともに変わる画像の特徴を使います。Go2標準カメラの仕様を再現したものではありません。

移動にはcuVSLAMを使います。Visual SLAMとは、画像から自分の位置と周囲の特徴の位置を同時に推定する技術です。今回はその位置推定を使い、あらかじめ決めた通路内の目標位置に近づくよう速度を調整しました。動画右下の線は、画像から推定した移動の軌跡です。

左右カメラから現在地を推定する移動系と、計器画像から読取可否を判定する点検系。読めない場合は次の設定済み撮影位置へ戻る流れ
画像の判定を、次の移動につなげます。歩く動作には公開済みの学習済み方策を利用しています。

脚を動かす部分には、Isaac LabのGo2用の公開済み歩行方策を使いました。方策は、速度の指示や関節・姿勢の情報から脚の動きを決める学習済みモデルです。当社による追加学習はしていません。機体の位置を直接書き換えて動かすアニメーションでもありません。

シミュレーターが持つ正確な機体位置は検証記録と撮影用カメラに使い、通路上の位置制御には渡していません。ただし、歩行方策は関節や機体姿勢の情報も使います。ロボット全体を画像だけで制御している、という意味ではありません。

文字盤を正面に直してから、針を読む

斜めに写った文字盤では、そのまま針の角度を測ると値がずれます。そこで、針を含まない文字盤の基準画像を用意し、撮影画像の目盛りや文字との対応を探します。対応が十分に取れた画像だけを、正面から見た形に補正してから針を読みます。

実際の撮り直し画像を正面に補正した圧力計の文字盤
撮り直し画像の補正結果。登録済みの目盛りの範囲は0〜1.6 MPaです。

実装にはSIFT(拡大や回転があっても照合しやすい画像の特徴を探す処理)と、RANSAC(誤った対応を除きながら変換を求める処理)を使いました。十分な対応点があることに加え、短時間に撮った5枚中3枚以上で値が得られ、その最大と最小の差が0.015 MPa以内であることを採用条件にしています。

今回は特定の文字盤の画像処理です。言葉で指示するVLAや、画像を文章で解釈する大規模モデルは使っていません。圧力の設定値は採点にだけ使い、画像を読む処理には渡していません。

撮り直さない場合とも比較した

撮影位置を固定した試行と、読取保留後に移動する試行を比較しました。さらに針の位置を変え、固定の答えを返しているだけではないかも確認しています。すべて同じ仮想工場・同じ文字盤・同じ照明での少数試行です。

試行最初の位置次の位置記録値 / 設定値
撮り直しなし0/5枚を採用移動しない読取未完了 / 0.920
撮り直しあり・比較用0/5枚を採用3/5枚を採用0.916 / 0.920 MPa
針の位置を変更・低い値0/5枚を採用5/5枚を採用0.421 / 0.420 MPa
針の位置を変更・高い値0/5枚を採用5/5枚を採用1.319 / 1.320 MPa
掲載動画・最終確認0/5枚を採用5/5枚を採用0.916 / 0.920 MPa

各行は1試行です。比較用と最終確認では、正確なカメラ位置を検証用に記録する方法を修正しました。画像による制御や読取条件は同じです。値が得られなかったフレームも含めて記録し、成功率や実機の精度を示す集計としては扱っていません。

できたことと、現場に向けて残っていること

今回できたのは、既知の通路での画像による位置推定、学習済み方策による歩行、読取を保留する判定、その結果をきっかけとする移動・再撮影・数値の記録です。映像用の動きを別に作り直さず、同じ試行のカメラ画像と判定記録を使っています。

まだ確認していないこと理由と次に必要な検証
未知の工場での自律巡回通路と撮影位置の候補を事前設定しているため。地図の保存・再利用、経路計画、障害物への対応が必要です。
最適な撮影位置の自動探索次の候補へ移るルールまでの実装です。見え方や移動コストから候補を生成・比較する処理は未実装です。
反射・汚れ・暗所・別の計器今回は1種類の文字盤と固定照明です。最初の失敗は照合条件の不足であり、反射を認識して避けた結果ではありません。
実機のGo2での点検理想的な仮想カメラでの試験です。実際のレンズ、露出、振動、通信遅延や歩行誤差を含む確認が必要です。

工場へ持ち込む前に、何を試すか

このような環境では、計器をどの高さに置くか、カメラをどこに載せるか、どこからなら読みやすいか、読めなかったらどう報告するかを、実機試験の前に比較できます。次は照明・遮蔽物・計器の配置を変え、どの条件で読み取りが崩れるかを調べます。

チームゼットでは、仮想環境の制作からロボット制御・画像処理の接続、試行ごとの評価まで取り組んでいます。工場巡回や設備点検について、まずシミュレーションで確認したいことがあれば、ご相談ください。

着想の参考・使用技術

観察の結果に応じて撮影位置を見直す考え方は、Tuomistoらの「Automating on-site object inspection with a quadruped robot and BIM」を参考にしました。同研究はSpot・BIM・3D LiDARなどを使う構成です。今回のGo2・Visual SLAM・計器読取は当社が組み合わせた別の試作であり、同論文の再現実験ではありません。

実行環境はIsaac Sim 5.1、Isaac Labの固定版、RSL-RL 3.0.1、cuVSLAMのPython APIです。工場は当社制作の架空環境です。記事では当社が取得した映像・結果を掲載し、第三者のロボットモデルや学習重みは配布していません。

お問い合わせ