レゴEV3で高校で無人輸送を開発します

ドライバーのないロボモービルはピザを配達します。 ドライバーのいないタクシーは人を運びます。 ドライバーのいないトラックは、数トンの積荷を運びます。 これらの壮大なプロジェクトをすべて分析すると、さまざまな典型的なタスクが発生します。最も重要なタスクは、ルートの検索と最適化です。 このような問題は、 グラフ理論を使用して解決されます 。 このトピックは単純ではなく、主に大学で、または少なくとも上級の専門クラスで研究されています。 しかし、この投稿では、LEGO EV3を使用して、すでに高校でグラフ理論を学習する方法を示します。 詰め込むことなく、魅力的な応用レベルで。





ダニーのLAB EV3自動車用コンベヤー 本当にレゴ車を収集します。 しかし、それは彼について少しではありません。



無人輸送が必要な場所に到達するためには、指定されたポイント間のルートを構築できなければなりません。 できるだけ短く、交通ルールと一致することが望ましい。 このような問題をシミュレートして解決するには、LEGO EV3モバイルプラットフォームと、実際にこのプラットフォームが移動するマップが必要です。



LEGO EV3モバイルプラットフォーム



当社のモバイルプラットフォームには、センサーとサーボを搭載する必要があります。 必要なものはすべて、レゴマインドストームEV3 45544の基本的な教育セットに含まれています。プラットフォームは次のようになります。







アセンブリには電子機器の知識は不要で、30分もかかりません。 プラットフォームには、問題を解決するために高レベルの抽象化を実現するために必要なものがすべて揃っています。



ロードマップ



ロードマップをグリッドの形で描いてみましょう。 線は道路であり、交差点は道路の交差点です。







交差点間の道路のすべてのセクションは同じ長さであり、それらのトラフィックは双方向です。 一部の道路はブロックされています-「レンガ」でマークされています。 さらに、マップ上のすべてのターンは90度の倍数です。 道路のグリッドの複雑さは、問題解決の原則に影響を与えません。明確にするために、かなり単純なオプションを使用します。 私たちのタスクは、最短経路についてA地点からB地点まで運転することです。



カウント



各交差点には、独自の座標(水平線番号と垂直線番号)があります。 グラフ理論では、このような交点は頂点と呼ばれます。 交差点間の道路は矢印で示されています。 グラフ理論では、これらはエッジです。 すべての道路は双方向(両方向の矢印)であり、グラフは無指向です。 コスト(移動時間)は、道路のすべてのセクションで同じです。つまり、グラフは重み付けされていません







隣接行列



写真で表されるグラフは、マップとその内部の接続を明確に示しています。 しかし、EV3を含むコンピューターでは、グラフィック情報を処理するのは面倒です。 マトリックス、隣接マトリックスを使用してグラフをエンコードすることが最適です。







交差点の間に直接接続がない場合、0を置きます。ある場合-1.ある場合-1.隣接する交差点間のすべての距離が1に等しいことに同意しました。プロットの重み。 そして、動きの方向を考慮に入れると、上の行列は非対称になります-ある方向では1、もう一方では0になります。



隣接行列により、ロボットはすでに問題を解決できます-AからBへの最短経路を見つけます。しかし、2次元の行列があり、EV3では1次元の配列しか保存できません。 シフトn * Y + Xを介して1次元配列に簡単に移動できます。nは行列のサイズです。



ダイクストラのアルゴリズム



ダイクストラアルゴリズムは、グラフの1つの頂点と他のすべての頂点との間の最短パスを見つけるためのアルゴリズムで、ソリューションに使用されます。 このアルゴリズムは、1956年にオランダの科学者Edsger Dijkstroyによって発明されました。 説明が可能な限り単純な場合、アルゴリズムは、移動距離の一定の評価によるグラフの隣接する頂点への連続的な前進に基づいています。 アルゴリズムの優れた実例と基本的なフローチャートは、Wikipediaの記事に記載されています。



この場合、Dijkstraアルゴリズムのフローチャート(「Dijkstra」)は次のようになります。







アルゴリズムによると、その数学モデルによると、ロボット用のプログラムをすでに作成できます。 入力は、隣接行列、開始点および終了点になります。 説明されたすべてのアクションの後、同じマップ上の任意のポイント間の最短パスの検索をすばやく見つけることができます。



もちろん、ダイクストラアルゴリズムに加えて、当社のLEGO EV3ベースのロボットには、より簡単なソフトウェアモジュール(サブプログラム)がいくつか必要になります:線に沿って交差点に移動し、交差点を数え、両方向に回転し、絶対座標系X、Y、Θに対する相対位置を決定しますX、Y-グリッド上の座標、Θ-ロボットの現在の方向(たとえば、1-上、2-右、3-下、4-左)。





そして、これが問題の解決策の実演です。 入力データはわずかに異なりますが、本質は変わりません。



ボーナステーマ:オドメトリー



オドメトリ機能を地上での移動タスクに統合することができます。たとえば、迷路内のロボットが現在位置と移動位置を認識できるようにします。 オドメトリを使用して、ロボットの動きは、ドライブの動き(モーターの回転)のデータに基づいて推定されます。 車輪の直径がわかれば、特定の時間にロボットが移動した距離を計算できます。 車輪の角速度がわかれば、ロボットがオリジナルに対して回転した角度を判断できます。 そして、異なる角速度を設定することにより、下のビデオのように、ロボットの弧に沿った動きを調整し、同時にロボットを動かすときの「ループ」を決定できます。





学校では、三角法に多くの注意が払われていますが、その実用的な応用は決してカバーされていません。 LEGO EV3で解決された走行距離計の問題は、なぜ三角法が必要なのかを示しています。 実際には、オドメトリは輸送だけでなく、たとえばCNCマシンのツールの位置を追跡するためにも使用されます(数値制御)。



このすべてをどこで学ぶことができますか?



広告を許可します。 上記のタスク、およびより複雑なタスクは、ロボットクラブで訓練された7〜9年生の子供によって解決される可能性があります。 エカテリンブルクでそのようなクラブ、ロビットを運営しています-これが私たちのトレーニングプログラムです。 上記のタスクの1つのクラスでデモからビデオを撮影しました。 その後、6時間で私たちのクラブの8年生の1人がグラフ理論の基礎を学び、同様の問題を解決しました。



LEGO EV3プログラミング環境の選択方法



LEGO EV3に適したプログラミング環境を選択しないと、問題解決は不可能です。 この分野の最新情報については、 別の資料があります。 私は子供たちに、学習した構文のタスクではなく、タスクのプログラミング言語を選択するように教えようとしています。 しかし、低学年では、すぐにテキストベースのプログラミング言語で作業することは難しいため、エントリのしきい値が低いグラフィック言語のアルゴリズムの研究を開始します。 10歳から、生徒はEV3マインドストームのグラフィカル環境を学びます。 一部のロボット競技会では、ツールキットをこの環境のみに制限しています。



12歳から、男たちはEV3 Basic環境をマスターし始めます。 環境は比較的簡単に習得でき、BasicはLEGO EV3プラットフォームに強力な機能を提供します。 さらに、Python、Java、Cなどのさまざまな言語をインストールできるEV3Dev環境でプログラミングします。EV3Devを使用すると、流行の人気のある言語で初めて体験できます。 EV3Devの唯一のマイナスは、他の環境と比較して比較的低いセンサーポーリングレートです。 適切なアプローチにより、LEGO EV3はプログラミングを理解するための優れたツールになります。 生徒が自分のコードがコンストラクターに命を吹き込むのを見るとき、これは素晴らしい動機です。



次は?



高校でそのようなアルゴリズムを研究した後、子供たちは知識をさらに統合し、例えば、実際のボーナスを与えるデザインと主題のオリンピックに参加することができます-例えば、大学への入学試験で100点が自動的に得られます。



All Articles