資料
ダウンロード
Technology > 床・天井の画像による地図作成と自己位置推定の実機検証

床・天井の画像による地図作成と自己位置推定の実機検証

床の模様から地図と自己位置を出す slam_tenchi の仕組みは、以前の記事に書いています。今回はその続きで、実写の動画にかけたときに処理がどこまで通るかを、2026年10月13日の記録からまとめたものです。

撮ったのは床だけではありません。人が通ったり荷物が置いてあったりすると、下を向けたカメラは床の模様を失います。そのときは天井の方が残ります。照明や天井板の目地が、床のタイルと同じ役割をします。今回は床と天井の両方で、キーフレームと移動軌跡ができ、その位置を床の地図と間取り図の上に表示し、さらに ArUco マーカーの設定を自動で作って、マーカーを優先してもう一度生成するところまで確認しました。

まだ言えないこともあります。実写で「本当の位置から何ミリずれていたか」は測っていません。正解の位置も、正解の経路も、この記録には入っていないからです。このあと出てくる距離や範囲は、処理が完了したことと、SLAM が自分の計算で積んだ長さの話です。

今回見ている方式

自己位置のとり方は、現場によって変えます。模様があって床が見える屋内なら、下向きカメラと床の地図です。床が人や荷物で隠れるなら、上向きカメラと天井の地図です。電波の強さを記録して照合する Wi-Fi は、既にある設備で大まかな区画を見るとき。カメラと IMU で動きを追う VIO は、地図が無い区間を連続して追うとき。立体物が多い場所では、形と 3D の地図を使う LiDAR です。

この5つは、どれを選ぶかの資料です。同じ条件で走らせて、精度を並べた結果ではありません。今回の実写で通したのは、床と天井の画像を使う方式です。

動画から地図になるまで

やっていることは、前後の画像で同じ模様を追うことです。

カメラを床か天井に向けて動画を撮ります。隣り合うフレームから、同じ筋や同じ傷を探します。その点がどちらへ動いたかで、進んだ量と向きの変化を計算します。一定のところまで来たら、その画像と推定した位置をキーフレームとして残します。残ったキーフレームと、その間の軌跡が地図です。

入力に使った床は、筋の入ったタイルカーペットです。天井は、蛍光灯と天井板、目地が写っています。追っているのは、その部屋に写っている見た目です。

床を映した実際の入力画像。筋の入ったタイルカーペット
床の入力。タイルの筋が、フレーム間で追う模様になる。
天井を映した実際の入力画像。蛍光灯と天井板
天井の入力。照明と天井板の目地を、床の模様と同じように使う。

床と天井で、地図と軌跡ができた

床は、以前の 51 キーフレーム版です。1,449 フレームの動画から 51 枚を残し、推定した移動距離は 6.61 m、動いた範囲は 1.57 m × 2.13 m でした。

天井はもっと短い動画です。157 フレームから 23 キーフレームを残し、推定した移動距離は 6.20 m、範囲は 3.31 m × 3.16 m でした。フレーム数は床より少ないのに、推定した範囲は床より広がっています。コースの長さが違ったのか、画像の上での動き方が違ったのかは、この数字だけでは分かれません。

どちらも、SLAM が自分で積んだ値です。巻尺でコース長を測って比べたものではないので、この 6.61 m や 6.20 m をもって精度が出たとは言えません。言えるのは、床の動画からも天井の動画からも、キーフレームと軌跡を持つ地図が残った、ということです。

間取り図の上に載せる

地図ができたあと、その軌跡を部屋の形の上に表示できるかも見ています。

床の表示は、上の 51 枚とは別の記録です。キーフレームは 59 枚、経路の点は 1,548、画面上の長さは 9.70 m でした。軌跡は一周するような形で、途中に自己位置が載っています。

床マップ上の移動軌跡。一周するような経路の上に自己位置がある
床の地図上の軌跡。ピンクの点が、その時点の自己位置。

天井側は、地図のなかに部屋の形が入っているわけではありません。開始位置と、どちらが前か、長さの縮尺をこちらで指定して、間取り図に重ねています。図の青い区間は 1.00 m です。開始位置から廊下が延びる方向へ進み、途中で曲がっています。

これは「指定した縮尺で、間取りの上に経路を描けた」という確認です。壁の位置と軌跡が何ミリずれているかは、この図からは読んでいません。

間取り図に重ねた経路。開始位置と1.00 mの縮尺がある
天井側の経路。開始位置と向き、1.00 m の縮尺を指定して重ねている。

壁の近くでは、設定で結果が分かれた

もう一つ、壁に寄せた実写があります。壁までの距離は約 50 cm で、移動はかなりゆっくりです。距離は概算です。カメラは棚の正面を向いていて、床のタイルを広く映す構図とは違います。

マーカーを置かない通常の処理は、最後まで通りました。308 フレームすべてを処理し、キーフレーム 8 枚の地図が残っています。

マーカーなしの壁面テスト。308フレームすべてを処理して完了
マーカーなし、通常。308/308 を処理し、8 キーフレームで完了。

同じように壁へ寄せ、マーカーが見える状態で通常の処理にすると、途中で止まりました。182 フレームのうち 83 フレーム目で、平面計算エラーになっています。このときの画面は、床のタイルではなく棚が大部分です。記録は、そこで失敗した、と残しています。

マーカーありの壁面テスト。棚とマーカーが写り、処理は途中
マーカーあり、通常。83/182 で平面計算エラー。

記録の「安全」は、失敗したときに中間画像を残す設定です。これに切り替えると、546 フレームのうち 544 まで処理でき、キーフレームは 7 枚、補完したフレームは 12 枚で完了しています。マーカーが見えていても、失敗の扱いが違うと、最後まで残るかどうかが分かれました。

マーカーありで安全設定にした壁面テスト。棚にマーカーが貼ってある
マーカーあり、安全。544/546、7 キーフレーム、補完 12 フレームで完了。

マーカーの位置を登録した条件も見ています。登録した値は概算で、計算の途中で失敗し、そこまでに残った軌跡は短い直線でした。設置位置と寸法を測り直した条件は、まだやっていません。

マーカー位置が概算のときの途中軌跡。短い直線
マーカー登録あり(概算)。計算が失敗するまでの途中結果。

マーカーは、登録した配置との差まで

ArUco は、ID が読める印刷のマーカーです。置いた場所が分かっていれば、地図を補正するときの拘束に使います。床や天井の模様だけでも軌跡は作れます。マーカーは、その軌跡に「この ID はここにある」という位置を足すためのものです。見えたフレームでは、その位置を優先して使います。

この記録では、処理した 443 フレームのうち、位置を算出できたのは 209 フレームです。検出した ID は 0 から 4 でした。計算上のマーカー残差は 1.28〜1.51 mm です。

この残差は、こちらが登録した配置と、画像から求めた位置との差です。部屋のなかの本当の位置を測って比べた誤差ではありません。「位置精度が 1 mm だった」とは読めません。登録が概算なら、残差が小さくても、それは概算の配置に合っていた、というところまでです。

カーペットに貼った印刷のArUcoマーカー。SLAMマーカー id 1
床に貼ったマーカー。印刷した紙をテープで固定している。

検出して、設定を作り、優先してもう一度

マーカーをあらかじめ全部測って書き込むのではなく、動画から見つける流れも確認しました。

まず 5 個を検出します。次に、その検出から設定を自動で作って保存します。最後に、マーカーを優先してもう一度地図を生成します。完了した記録は 1,309/1,310 フレームです。キーフレームは 5 枚、マーカーを認識したフレームは 211、補完は 12 フレームでした。

ここでも、正解の位置は用意していません。処理が最後までつながり、5 個のマーカーが軌跡の上に載ったところまでは確認できています。その軌跡が実寸で何ミリ正しいかは、この完了記録からは出していません。

5個のマーカーを通る移動軌跡。M0からM4
自動で拾ったマーカーと、そのあとの軌跡。M0 から M4 が検出した位置。

正解経路と比べられたのは、シミュレーションだけ

実写の誤差を出すには、通った経路の正解が要ります。今回の動画にはそれがありません。代わりに、正解経路のある Gazebo で、推定結果をあとから比べています。比べる値は SLAM には入れていません。推定が終わったあとで、正解と並べています。

地図を作ったときの位置誤差は 4.5 mm でした。自己位置は、地図を作ったときとは別の経路で 6.1 mm です。評価したフレームのうち、位置を求められない割合は 0% でした。

この数字はシミュレーションの評価です。上に書いた実写の 6.61 m や、間取り図上の 9.70 m が、同じ精度で合っていることは示しません。Gazebo での中身は、以前の記事にあります。

次に測ること

今回通ったのは、床の動画からキーフレームと移動軌跡を持つ地図を作れたこと、同じ作り方を天井の動画にも載せられたこと、ArUco の検出から設定の自動作成、マーカー優先の再生成までつながったことです。間取り図への表示と、壁際での設定の違いも、あわせて見ています。

精度として言うには、まだ二つ要ります。実写の環境に正解の経路と基準点を置き、絶対位置の誤差を測ること。マーカーの設置位置と寸法を実測し、概算のままではない条件でやり直すことです。

この技術や導入について、お気軽にご相談ください。

お問い合わせ・ご相談はこちら
一覧に戻る

Contact

自社のロボット、現場、データにどう使えるか。まずは相談から

既存ロボットへの知性付与、ローカルAI導入、移動AI、ヒューマノイド制御、行動ログの記録まで。製品選定とPoCの組み立てを、Forcesteed Robotics が支援します。