ホーム » 段階的なアプローチ
段階的なアプローチ
そして、Marvelmind屋内測位システムで成功するためのその重要性
段階的なアプローチこそが成功の鍵です
自律型ロボットやドローン向けのMarvelmind屋内測位システムを扱ううえで、段階的なアプローチがいかに重要かについては、これまでも記事や動画でさまざまな形で何度も取り上げてきました。また、このアプローチに従って当社のシステム、さらには事実上あらゆる高度なシステムで成功していただけるよう、お客様にお願いするメールも数えきれないほど書いてきました。このアプローチは普遍的だからです:
しかし、多くのお客様は意気込みが強すぎて、いきなり最終構成に取りかかろうとします。いわゆる「plug-and-pray」(つないで祈るだけ)アプローチ 🙂
残念ながら、高度な多層システムではそれはうまくいきません。段階的なアプローチこそが、成功への最も速く確実な道です。
複雑なシステムでは、なぜ「plug-and-pray」アプローチがよくないのか?
カジノで黒か赤に賭けるなら、成功の確率が50%あるので、その賭け方は悪くありません。しかし、それは1ステップのゲーム、つまり単層のシステムです。
より高度なシステムは、通常、複数のステップや複数のレイヤーで構成されています。検証なしにやみくもに推測しても、成功の確率は低すぎます:
- たとえば10〜20のレイヤーやステップのように、多くのレイヤーで構成されたシステムがあると想像してください
- 各レイヤーの成功率は10〜80%です(システムへの理解不足やその他の基本的なミスによる)
- 各ステップは実行するのも非常に簡単で、そのステップに問題があれば、検証して修正するのも簡単です
- 各ステップで検証せずにシステム全体を構築しようとすると、最終的な期待成功率は0.8^10~0.1^20、つまり 10.7% ~ 1e-20 となります(経験やシステムのステップ数によって異なります)。
これが目指す成功率でしょうか?…
この「plug-and-pray」(つないで祈るだけ)アプローチ、つまり下位の各レイヤーを事前に検証しないまま多層システム全体を組み上げ、電源を入れて、動くことを祈る方法では、許容できる確率で成功を得ることはできません。時間を浪費するうえ、比較的簡単とはいえ多層構造のシステムで失敗を招くおそれもあります。
段階的なアプローチ = 確信
この記事の内容は、どれも当たり前で平凡なことばかりです。しかし、高度な教育を受けたユーザーが最終構成にいきなり取りかかり、システムが動くことを期待する場面を、私たちは何度も目にしてきました。そのため、段階的なアプローチの重要性はいくら強調しても足りません。基本的な段階的アプローチを真剣に受け止め、当社のシステムでも他の多層システムでも成功率を飛躍的に高めていただけるよう、改めてお願いしたいのです。
このアプローチに魔法はありません。ただし、はっきりと認識しておくべき重要なポイントがいくつかあります:
- システムを構成する一つひとつのステップはシンプルです。システム全体は非常に複雑に見えるかもしれませんが、通常、各ステップはおばあちゃんや小学生に説明しても理解してもらえるほどです
- 各ステップはすばやく簡単に検証できます。各レイヤーでのテストが鍵です。保存した構成にはいつでも戻って再テストでき、同じ結果が得られます。そのうえで、次のステップをさらに慎重に進め、どこで間違えたのかを正確に確認できます。また、各ステップでのテストとデバッグは非常に簡単で速いということを理解しておくことも、きわめて重要です。変更が小さいので、間違いがあっても「あっ、ビーコンの電源を入れていなかった」「あっ、ビーコンの高さを入力していなかった。だからマップや測定値がゆがんでいる」「あっ、新しいビーコンが壁の向こうにあって、この地点は見通し外になっている」といった程度の単純なものだからです。すぐに見つけて、その場で直せます。しかも非常に速く。なぜ速いのでしょうか?極端に単純化したシナリオで考えてみましょう。6つのステップがあり、各ステップに間違え方が10通りあるとします。決定をランダムに行うわけではありませんが、それでも選択肢は10通りあります。システムを動かすには、テストは6回だけで済み、前のステップで成功してから次のステップへ進めばよいのです。すべてを組み上げてからテストを始めると、テストのパターンは10^6=1,000,000通りになりますが、段階的なアプローチなら、もともとのテストはわずか6回です
- デバッグは驚くほど楽になります。何十億通りもの組み合わせを探す必要はありません。問題がどこにあるかが正確にわかります。「このステップの結果はOK。次のステップはNG。まさにこのステップで何かを間違えている…。具体的に何を変えた?…。セットアップを点検しよう。結果を検証しよう。基本を再確認しよう」といった具合です。何日もかけて実りのない調査や推測を繰り返す代わりに、数分、あるいは数秒で済みます。基本的なことではありませんか?当然やるべきことではありませんか?――そのとおりです…。では、なぜ高度な教育を受けた多くのユーザーがそうしないのでしょうか?…人の心はいつも興味深いものです 🙂
- 各ステップに確信を持てます。下位の各レイヤーが検証済みだからです。未検証の仮定によって土台が揺らぐこともありません。集中力を保ち、自信を持って作業できます。これにより、開発とデバッグが何倍も速くなります
- 複雑さは一歩ずつ増やしていく。これこそが段階的なアプローチの本質です。前のレイヤー/ステップから2つ以上を変更して何かが動かなくなった場合、原因は変更Aかもしれませんし、変更Bかもしれませんし、変更Cかもしれません。組み合わせと選択肢が爆発的に増えます。そのすべてを検証するには時間がかかります…それも膨大な時間が…。なぜそんなリスクを冒すのでしょうか?!Aを変更して検証する。次にBを変更して検証する。Cを変更して検証する。ステップは3つ、検証もわずか3回です。一度に複数を変更すると、組み合わせは数千通りにもなり得ます。その多くを確実に除外するのは難しく、すべてを検証するのは事実上不可能です…
段階的なアプローチの重要性をより深く理解するための例
段階的なアプローチの論理は、非常にわかりやすくシンプルです。以下の例は、上で述べたことをMarvelmind屋内測位システムの文脈で改めて強調しているだけなので、読み飛ばしてもかまいません。
自律型ドローン向けPrecise Z構成
お客様からの典型的なご質問:「屋内でのドローン飛行のためにMarvelmindシステムをセットアップしています。次の構成図と、マニュアルの「9.15.1. How to build vertical submap for stable Z(安定したZのための垂直サブマップの構築方法)」に従っています…
ところが、私のDashboardにはRX1~RX4しかなく、RX5がありません。私のビーコンはIMU付きのSuper-Beacon-3です。マニュアルに従いましたが、RX4だけをオンにすると、地上の4台のビーコンで測定値がまったく得られません。
私のモデルにはRXセンサーが5つあるのでしょうか、それとも4つだけですか?
4つだけの場合、それぞれの番号はどの向きに対応していますか?」
この質問への答えは非常にシンプルで、センサーやトランスデューサーとはまだ関係ありません。いきなり最終構成に飛びつかないでください、ということです。もちろん最終構成にはたどり着けますが、それは小さな検証済みのステップを重ねてのことです。そうしないと、当社のような多層システムに不慣れなうちは、どこかで基本的なミスをして、それがどこなのかわからなくなる可能性が高すぎます。ミスを見つけるには、段階的に進めて、各ステップですべてが問題ないことを確認していく以外に、はっきりした手がかりはありません。
例:
ステップ1:基本的な2D マップを、NIAの単一サブマップで構築する:
- モバイルビーコン1つを三脚に設置
- ドローンはまだ使わない。
- 飛行もまだしない。
- もちろん、自律飛行もまだしない
最終的に3DトラッキングやPrecise Z、IAが必要でも関係ありません。それらは、小さな検証済みのステップを重ねて実現します。
モバイルビーコン1つで2DのNIAを構築します。トラッキングを確認します。次のレイヤー/ステップが何らかの理由でうまくいかなくても、いつでも戻れるように、構成を保存しておきます。
これで、確実に動作する最初の構成ができました。この時点ですでに、50%以上のよくある間違いを回避できています。レイヤーからレイヤーへ、一度に小さな変更を1つだけ加えるようにすれば、集中して、間違いを簡単かつすばやく見つけられるようになります。
単一サブマップ内でビーコン1つによる基本的な2Dトラッキングができたら、次のステップには選択肢のツリーがあります。ただし、重要なのは一度に1つだけ変更すること、例えば:
次にどのステップを選ぶべきかは、スキルやプロジェクトなどによって異なります。重要なポイントは非常にシンプルです:構成の変更は一度に1つだけ。それ以上はしない。これにより、デバッグが簡単かつ速くなります。
ステップ2:たとえば、次に 3Dトラッキングを構築することにしたとします。すでに動作している固定ビーコン2台による2Dトラッキングの代わりに、固定ビーコン4台を使います。繰り返しますが、NIAはNIAのまま、モバイルビーコンは1つだけ、サブマップも1つだけ、すべて三脚に載せたままです。すべて同じです。変わったのは2Dから3Dへの移行だけで、それ以外は何も変えません。このような基本的な変更だけでも、間違いが起こり得る箇所はたくさんあります:
- 新しいビーコンのソフトウェアを更新していない
- 新しいビーコンの設定をデフォルトに戻していない
- 新しいビーコンが見通し外になっている
- 新しいビーコンのアドレスがわからない
- 新しいビーコンの電源が入っていない
- 新しいビーコンの高さを設定していない
- など
多くの初歩的な間違いが起こる余地はありますが、少なくとも、トラッキングがうまくいかない場合にどこを探せばよいかはよくわかります。すでに実績のある2Dトラッキング、つまり動作が確認済みの2D構成があるからです。最悪の場合でも、動作しない3D構成を解体して、動作する2D構成に戻り、自分の作業にさらに注意を払いながら、そこから最初からやり直せます。
各ステップ/レイヤーで、トラッキング(他のシステムであれば、それに相当する成功)を確認することが絶対に必要です。
3Dに成功したら、再び分岐する選択肢のツリー:
- IAに移行する
- 2つのモバイルビーコンをトラッキングする
- ビーコンをドローンに取り付けて手動モードで飛行させ、すべてが引き続き機能するかを確認する。ドローンの無線操縦やテレメトリーがMarvelmindの無線と干渉しないか、ドローンの部品が超音波の見通し外を生じさせないか、プロペラがトラッキングを妨げないか、などです
ステップ3:たとえば、IAを試すことにしたとします。IAには確信が持てないからです。IAは NIAより複雑だと読んだことがあるでしょう。実際、使う側から見ればIAは NIA と同じくらいシンプルですが、内部的には NIAよりはるかに複雑です。そのため、IAではより多くの注意が必要です。たとえば:
- NIAでは、モバイル用にも固定用にも、どの周波数のSuper-Beaconでも選べます。それで動作します
- しかし、IAにはその自由はありません。IAでは、1つのサブマップ内のすべての固定ビーコンが、それぞれ異なる超音波周波数でなければなりません
- 周波数の間隔はできるだけ大きく取るのが望ましいです。フィルタリングが容易になり、信頼性も高まるからです。たとえば、25+31+37+45 kHzのビーコンの組み合わせは、19+22+25+28 kHzよりも適しています。ビーコン間の周波数差に注目してください
- IAでドローンを飛ばす予定なら、19 kHzや22 kHzのSuper-Beaconは最適な選択肢ではない可能性があることも確認しておくとよいでしょう。可聴域に近いため、プロペラからの音響ノイズが大きすぎる場合があるからです。ノイズが問題になるかどうかは、Dashboardに組み込まれたオシロスコープで簡単かつすばやく確認できます。実際にテストすれば、お使いのセットアップでの状況が数秒でわかります
ポイントはもう明らかでしょう:各ステップはシンプルですが、どのステップにも新たな間違いの可能性があります。各ステップには、成功の確率を重み付けして割り当てることができます。その確率はユーザーの正確さや経験、タスクの複雑さによって異なりますが、常に1未満です。そのため、ステップが多い場合、成功の確率は、Marvelmind屋内測位システムのような多層システムでは、各ステップで検証しなければゼロに近づきます。
確実で簡単、しかも速い唯一の解決策は、小さなステップごとに検証することです。
ステップ4:IAに成功したら、手動操縦の飛行モードでドローン上でのトラッキングをテストしてみましょう。これまでは、すべて三脚の上だったことを思い出してください。参考:ショーロボットでの同様の例。テストはモバイルビーコン1つだけで行います。たとえば、ペアードビーコン構成の左側のモバイルビーコンです。
ステップ5:左側のモバイルビーコンで成功したら、その電源を切って右側のビーコンを取り付け、前のステップ(特に慎重を期すなら、その前のいくつかのステップも)を繰り返します。ただし今度は、ドローンに右側のモバイルビーコンだけを取り付けた状態で行います。
ステップ6:次に、両方のモバイルビーコンを同時に有効化します。ただし、まだペアにはしません。
ステップ7:ビーコンをペアにする。設定の左右に注意し、高速に通信できるよう、モバイルビーコン間のケーブル接続を確認してください。どちらがマスターでどちらがスレーブかも把握しておきましょう。Dashboardでは、モバイルビーコン間の距離を正しく設定します。距離をどの点からどの点まで測っているのかも、正確に把握しておいてください。
ご覧のとおり、どのステップにも陥りやすい基本的な落とし穴があります。やるべきことは、シンプルなパズルをできるだけ短時間で解き、レイヤー/ステップを確認して、次へ進むことです。シンプルでしょうか?――シンプルです。しかし、これはパズルであり、どんなに正確で知識豊富な人でも間違えることがあるので、各レイヤーでの確認は欠かせません。迷子にならないでください。新しいステップへ進む前に、各ステップを検証してください。
ステップ8:いよいよ外部システムとの統合です。対象は、たとえば ArduPilot/PX4/PixHawk。
外部システムも多層構造になっています。そのため、そこでも同じアプローチを使ってください。基本的なボーレートの設定から、磁力計や気圧計の無効化、その他何十もの設定まで、各ステップを検証します。「plug-and-pray」で臨まないでください。当社のシステムでは成功しても、外部システムで失敗することがあります。それは私たちの望むところではありません。プロジェクト全体を最初から最後まで成功させていただきたいのです。
ステップ9:自律飛行に成功しましたか?おめでとうございます!あなたはすでに、ユーザーの50%よりも先を行っています。
思い出してください。目標はPrecise Z構成でした。基本的な3Dトラッキングも、基本的な自律飛行も、すでにできています。たとえば、固定ビーコンが床から5 mの高さにあり、その下で問題なく飛行できているとします。すべて配置マニュアルどおりです。完璧です!
しかし、目標はPrecise Z構成でした。たとえば、自律着陸のため、あるいは屋外でのGPS誘導飛行と格納庫への着陸を組み合わせるためです:
現在は自律飛行がうまくいっていますが、固定ビーコンは飛行経路より上にあります。そこで今度は、固定ビーコンを上向きにして床に置き、モバイルビーコンは下向きにする必要があります。そのようにしてください。
一歩戻って、自律飛行の代わりに、まずモバイルビーコンの基本的なトラッキングを1台ずつ確認するか、すぐにペアードビーコン構成で確認してもかまいません。どちらにするかはお任せします。段階的に構成していくという考え方は変わりません。たとえ小さなステップでも、飛ばせばリスクがあることに変わりはありません。
いつもどおり、変更は一度に1つだけです。それ以外は何も変更しないでください。
固定ビーコンの平面付近、つまり床の近くでは、Z座標に問題が出ることがあります。これは正常です。下の動画をご覧ください。このZの問題こそ、後でPrecise Z構成によって解決しようとしているものです。ただし、まだその段階ではありません。
固定ビーコンの平面から比較的離れて飛行し、ビーコンの幾何学的配置が良好なときに、自律飛行が引き続き問題なく行えることを確認してください。このテーマの詳細:
ステップ10:地上の固定ビーコンのはるか上を問題なく飛行できるようになったので、次は 2つ目のサブマップを構築します。これは垂直サブマップで、Precise Z構成の2つ目の要素です。お察しのとおり、推奨事項は同じ考え方に従います:
- 他のすべての固定ビーコン(水平サブマップのビーコン)、つまり垂直サブマップに属さないビーコンを無効にします
- 垂直サブマップだけで、まず完璧なトラッキングを実現し、その後で自律飛行を行います
ステップ11:この段階で初めて両方のサブマップを有効にし、Dashboardで正しく設定して、両方のサブマップで基本的なトラッキングを確認してから飛行を試みます:
検証に成功すれば、Precise Zのセットアップは完了です。おめでとうございます!
メールでいただいた、トランスデューサーとマイクに関するその他のご質問への回答:
ご覧のとおり、トランスデューサーに関するご質問はPrecise Z構成の構築に関係するかもしれませんが、それよりはるかに大切なことがあります。
まとめ
- この段階的なアプローチは、Marvelmind屋内測位システムをはじめとする複雑なシステムで確実に成功するための、きわめて分かりやすい近道です
- この「plug-and-pray」(つないで祈るだけ)アプローチは、理論上は速く思えるかもしれませんが、多層システムでは実際にはまったく機能しません。システムの層が多い場合や多くのステップが必要な場合、このアプローチでは成功の確率が無視できるほど低くなるからです