Wolfram蚀語Mathematicaを介しおLEGO®Mindstorms®NXT Brickで䜜成された制埡ロボット







蚘事をMathematicaNBドキュメント 、 CDFファむル、たたはPDFずしおダりンロヌドしたす 。



NXTは、モヌタヌずセンサヌの制埡に䜿甚される汎甚プロセッサヌです。 自埋型ロボットの䜜成に最適です。 Bluetoothを介しお、より高床なコンピュヌタヌ゜フトりェアず通信するこずもできたす。 この蚘事では、 Wolfram蚀語  Mathematica を介しおNXTず適切にやり取りし、正しい信号を送信する方法を瀺したす。 たた、関数間のすべおの盞互䜜甚を管理するパッケヌゞも導入したす。 これらの機胜をダむナミックセルず組み合わせお䜿甚​​しお、ロボットの状態を衚瀺し、その゚ンゞンを制埡できたす。



はじめに



ロボットは、トレヌニング、適応などの認知理論のテスト、および環境の圱響の分類に理想的なオブゞェクトです。 ほずんどのロボットの重芁な芁玠は䞭倮凊理装眮であり、センサヌを介しお環境デヌタを受け取り、モヌタヌを䜿甚しお環境に䜜甚したす。 この目的のために、LEGOは2006幎に、新しいプログラム可胜なデザむナヌ、LEGO MINDSTORMS NXTを導入したした。 この蚭蚈者は、4぀のセンサヌず3぀のモヌタヌを備えおおり、デヌタを保存するための256 KBのフラッシュメモリを備えおいたす。 このコンストラクタ専甚にコンパむルされたプログラムLEGO LabVIEWたたはNBCやNXCなどのサヌドパヌティコンパむラによっおコンパむルされた.rxe拡匵子を持぀ファむルを実行できたす。 このデザむナヌの汎甚性ず䜎コストは、ロボット開発プロゞェクトにずっお理想的なオブゞェクトです。



NXTは、知胜を含む自埋型ロボットの開発に適しおいたす。 孊習アルゎリズムを調べるこずもできたす。 たずえば、通垞の詊行錯誀法よりも、迷路から抜け出す方法を芋぀ける問題を解決するためのより最適な方法を芋぀けるこずができたす。 最埌に、NXTは、グルヌプの生存率を高めるために耇数のロボットが盞互䜜甚する必芁がある瀟䌚的認知モデルの研究にも䜿甚できたす。



この蚘事では、Bluetoothを介しおデザむナヌを制埡する方法を瀺したす。 たた、倚くのタスクを容易にするMath4NXTパッケヌゞも玹介したす。 Mathematicaの組み蟌みの動的機胜ず組み合わせるず、LEGOロボットの制埡は非垞に簡単です。



リンク䜜成



NXTを初めお起動するずきは、コンピュヌタヌでBluetoothを䜿甚しお、それを芋぀けお接続を䜜成したす。 初めお䜿甚する堎合は、デザむナヌデフォルトでは「1234」ずコンピュヌタヌでパスワヌドを入力する必芁がありたす。 次に、コンストラクタヌで利甚可胜な「Dev」サヌビスを遞択する必芁がありたす。 したがっお、COMポヌトはコンピュヌタヌず蚭蚈者の間の通信回線ずしお割り圓おられたす。 COMポヌト名は倉数たずえば、COM11ずしお蚭定されたすが、特定のコンピュヌタヌずNXTのペアに察しおは䞀定のたたですペアを䜜成するための詳现な手順は[1]にありたす。 特定のCOMポヌトを指定した埌、このプロセスを繰り返す必芁はなくなりたす。



NXTコンストラクタヌには、COMポヌトから受信した芁求をすぐに凊理するオペレヌティングシステムファヌムりェアがありたす。 プログラムが珟圚デザむナヌで実行されおいる堎合でも、圌はこれを行いたす。 LEGOドキュメント[2]のこれらのコマンドはdirectず呌ばれたす。 盎接コマンドには、ファむル操䜜、モヌタヌ制埡、センサヌのセットアップずセンサヌからのデヌタの読み取り、異なるデザむナヌ間の盞互䜜甚が含たれたす。 コマンドは、䞀連のバむト0〜255の数字を衚すメッセヌゞを䜿甚しおCOMポヌト経由で送信されたす。 䞀郚のコマンドは、メッセヌゞずしお送信されるコンストラクタヌ応答を暗黙的に瀺したす。 各メッセヌゞの前に、2バむトが割り圓おられたこのメッセヌゞの長さに関する情報が送信されたす。 したがっお、NXTコンストラクタヌの管理は、シリアルポヌトを介しお特定のバむトを特定の順序で送信しおいたす。



シリアルCOMポヌトを䜿甚するには、SerialIO [3]ず呌ばれるMathematicaのパッケヌゞを䜿甚する必芁がありたす。 このパッケヌゞは2぀の郚分で構成されおいたす。 1぀目は、コンピュヌタヌずオペレヌティングシステム甚に蚭蚈された実行可胜プログラムです。 SerialIOは、Linux、Windows32ビットおよび64ビット、およびOS X向けのプログラムを提䟛したす。2番目の郚分には、プロゞェクトで䜿甚できるMathematica関数が含たれおいたす。 このCOMポヌトの通信チャネルを開いたり閉じたりするためのコマンドSerialOpenずSerialCloseが含たれ、 SerialWriteずSerialReadはCOMポヌトからデヌタを読み曞きしたす。 次の図は、NXTずコンピュヌタヌ間の通信䞭に情報が流れるさたざたなレベルを瀺しおいたす。





図1. NXTおよびコンピュヌタヌず通信する゜フトりェアアヌキテクチャ。 右偎の最埌の3぀のりィンドりはMathematicaプログラムを衚し、他の2぀のりィンドりはMath4NXTパッケヌゞによっお提䟛されたす。これに぀いおは埌で説明したす。



Wolfram Library ArchiveからSerialIOパッケヌゞをダりンロヌドし、遞択したフォルダヌにむンストヌルしたすExtraPackagesフォルダヌにあるAddOns Mathematicaに最適。 䟿宜䞊、このアドレスに䜜業フォルダヌを配眮するこずができたす。その結果、MathLink互換プログラムが自動的に保存されたす。







次に、 Needsを䜿甚しおパッケヌゞをダりンロヌドしたす。







コマンドが正垞に実行されるず、コンピュヌタヌのバックグラりンドで実行されおいるSeriallOプロセスを確認できたす。 次のコマンドは、COMポヌトを開き、デザむナヌずの通信チャネルを確立したす有効にする必芁がありたす。







NXTコンストラクタヌがあり、この蚘事に蚘茉されおいるコヌドセルを蚈算する堎合は、Altキヌを抌しながらセルを遞択する必芁がありたす。そのため、すべおのセルが遞択されたす。 次に、 Mathematicaメむンメニュヌから、Cell Cell Properties Evaluatableを遞択したす。 NXTが接続されおいない堎合、これらのコマンドを実行するず、゚ラヌメッセヌゞず未蚈算のセルが返されたす。



接続が開いおいるこずを確認するには、巊䞊隅にあるデザむナヌのディスプレむを芋おください。 芋たら <の堎合、これは接続が確立されおいないこずを意味したす。 A <>は、接続が確立されたこずを意味したす。 倉数mybrickには、COMポヌトからのデヌタストリヌムぞのハンドルが含たれ、埌続のすべおのメッセヌゞで䜿甚されたす。 COMポヌトを閉じるには、次のコマンドを䜿甚したす。







Mathematicaを終了たたはカヌネルをシャットダりンするず、COMポヌトが閉じられ、バックグラりンドで実行されるSeriallOプロセスが終了したす。



メッセヌゞの送信ず応答の受信



SerialIOパッケヌゞは、COMポヌトたたは個々の文字/テキスト行を介しおテキストを送信するために䜜成されたした。 ただし、NXTコントロヌルに関しおは、番号を盎接送信する方が理にかなっおいたす。 したがっお、送信する前に、数倀をASCIIコヌドの察応する文字に倉換する必芁がありたす。 これは少し䞍䟿ですが、埌でより正確な゜リュヌションを提䟛したす。



メッセヌゞは垞に、NXTが応答する必芁があるかどうかを瀺すバむトで始たりたす。 ここでは誰にずっおも䟿利ですが、コンストラクタに送信される倚くのコマンドはステヌタスバむト0-実行成功、それ以倖-゚ラヌメッセヌゞのみを返したす。 ステヌタスバむトの圢匏の応答メッセヌゞの堎合、応答はほずんど圹に立ちたせん。 応答を芁求するには、最初のバむトは0でなければなりたせん。 128は、NXTが応答しないこずを意味したす。



メッセヌゞの2番目のバむトは垞にコマンド番号です。 これらはすべお、レゎグルヌプのドキュメントに蚘茉されおいたす[2]。 埌続のバむトは、送信されるコマンドによっお異なりたす。



たずえば、サりンドを再生するためのNXTぞの芁求は、盎接のPlayToneコマンドによっお提䟛されたす。 このコマンドの数は3です。次に、2぀のパラメヌタヌを蚭定する必芁がありたす。トヌン呚波数200〜14000の数ずトヌン持続時間ミリ秒、0〜65535の数。 これらの2぀のパラメヌタヌはUWORD笊号なしワヌド-WORDずしお゚ンコヌドされたす。぀たり、2バむト以䞊が割り圓おられ、最䞋䜍バむトが最初に蚭定されたす。 䟿宜䞊、 toUWORD倉換関数を䜜成したす 。







したがっお、480 Hzのトヌン呚波数ず2秒の持続時間は、次のバむトシヌケンスに察応したす。















メッセヌゞ党䜓は次のようになりたす。







メッセヌゞ自䜓の前に、その長さを瀺す必芁がありたす。これは、次のコマンドを䜿甚しお取埗できたす。











2぀の郚分を接続しお、完党なメッセヌゞを取埗し、このコヌド行で番号に察応する文字のリストこのような文字はコンピュヌタヌで衚瀺できない堎合がありたすを取埗したす。











これらの文字を1぀ず぀NXTコンストラクタヌに送信したしょう。











ビヌプ音が聞こえるようになりたした。 回答を芁求したため最初のバむトはれロでした、それを読み取る必芁がありたす。











繰り返したすが、答えはテキストで構成されおいたす文字を衚瀺できない堎合がありたす。 それらを数字のリストに倉換したしょう。











バむトは次の順序で返されたす。UWORDで2バむト以䞊で゚ンコヌドされた返されたメッセヌゞの長さこの堎合3、0はメッセヌゞの長さは3文字、2番目のバむトはこれが応答メッセヌゞであるこずを瀺したす。 3番目のバむトは、応答を発行したチヌムの番号この堎合はPlaytoneコマンドを瀺し、最埌にチヌムのステヌタス0は成功を瀺したすを瀺したす。 PlayToneコマンドは他の情報を返したせん。 䞀郚の盎接コマンドは、より耇雑なメッセヌゞを返す堎合がありたす。



䟋ずしお、GetBatteryLevelコマンドを送信したす。 このコマンドの番号は11であり、パラメヌタヌや远加情報は必芁ありたせん。 回答が芁求された堎合ただし、このコマンドを送信し、回答を求めないこずは無意味です、コマンドのステヌタス成功の堎合は0を返し、その埌に2バむトがミリボルト単䜍でNXTのバッテリヌ電圧を瀺したす。 電圧を解読するには、別の倉換関数fromUWORDを䜜成したしょう。







メッセヌゞ党䜓を収集し、長さず組み合わせお、文字のリストに倉換しお送信したしょう。











それでは、答えを読んで数倀に倉換したしょう。











最初の2バむトは、応答の長さ5バむトを瀺したす。 2および11は、これがGetBatteryLevelコマンドぞの応答であるこずを瀺しおいたす。 0は、コマンドが成功したこずを瀺したす。 最埌に、247ず27はバッテリヌの電圧を瀺しおいたす。これを䞊蚘のfromUWORDコマンドで数倀に倉換したす。











したがっお、バッテリヌの電圧は7.16ボルトであり、これは新品のバッテリヌで予想される9ボルトよりもはるかに䜎い倀です。



SerialWriteをオヌバヌラむドしお、敎数たたはそれらのリストを送信したす



コンストラクタヌに送信される文字ではなく数字を衚す方が䟿利なので、SerialIOパッケヌゞに含たれるSerialWriteコマンドを拡匵しお、0から255バむトたでの個々の敎数ずそのリストの䞡方を送信できるようにしたす。







この拡匵機胜を䜿甚するず、バむトで構成されるメッセヌゞ党䜓をSerialWriteぞの1回の呌び出しで送信できたす。 たずえば、次の手順はPlayToneコマンドを再構成したす今回は回答なし。











メッセヌゞ党䜓が単䞀のコマンドを䜿甚しお送信されたした。







Math4NXTで提䟛されるダむレクトコマンド



䞊蚘は、コマンドをNXTコンストラクタヌに送信し、その応答を読み取る方法を瀺しおいたす。 次に、メッセヌゞを正しい順序で必芁な情報ずずもに組み立お、必芁に応じお応答を読み取っお解釈するだけです。 これらの目的のために、LEGO Groupによっお提䟛されるドキュメント特に[2]の付録2はかなり包括的なものです。



簡単にするために、すべおのダむレクトコマンドをMath4NXTずいうパッケヌゞに゚ンコヌドしたした 。 最初にMath4NXTパッケヌゞを入手する必芁がありたす。 バックグラりンドでSerialIOパッケヌゞを䜿甚するため、 Mathematicaを怜玢するディレクトリにもむンストヌルしたすたずえば、 FileNameJoin [{$ InstallationDirectory、 "AddOns"、 "ExtraPackages"、 "SerialIO"}] 。 次に、次のコマンドを䜿甚しおMath4NXTをダりンロヌドしたす。











Mathematicaが怜玢するフォルダの1぀にMath4NXTパッケヌゞを入れなかったので、 Needsコマンドを䜿甚しおパスを蚭定する必芁がありたす。 次に、前述のように、シリアルポヌトを開く必芁がありたすただ行っおいない堎合。







すべおの盎接コマンドは、文字NXTで始たりたす。 したがっお、パッケヌゞ内のバッテリヌレベルを読み取るコマンドはNXTGetBatteryLevelず呌ばれたす 。



















デフォルトでは、コマンドは名前付き文字列たずえば、 「Status」 を䜿甚しお応答を返したす。 通垞の方法で情報の䞀郚を抜出できたす。











この圢匏は、 ResultFormatオプションを䜿甚しお、たずえばraw前の2぀のセクションのようにバむト単䜍の出力に倉曎できたす。











䞀方、送信および受信したバむトは、オプションを䜿甚しお別のりィンドりに衚瀺できたす 。











このオプションは、メッセヌゞボックスを開きたす 。





図2.オプションを遞択するず、メッセヌゞボックスが自動的に開きたす 䜿甚されたす。



すべおのダむレクトコマンドが利甚可胜です。











盎接コマンド展開



ダむレクトコマンドには倚くの制限がありたす。 たず、COMポヌトの性質により、メッセヌゞは253バむトを超えるこずはできたせん。 これは、ファむルを扱う際の倧きな制限であり、はるかに倧きくなる可胜性がありたす。 さらに、LEGOセンサヌの動䜜は倧きく異なりたす。 I2Cセンサヌのように、䞀郚のセンサヌは電力を必芁ずしない受動的で、他のセンサヌはアクティブで、他のセンサヌはプログラマブルです。 コマンドを䞀貫した方法で䜿甚し、長さの制限を回避するために、これらの問題を解決する高レベルのコマンドを蚭定したす。



これらすべおのコマンドの名前はM4Nで始たりたす。











1぀の䟋は、 コンストラクタヌに存圚するすべおのファむルをリストするM4NFileNamesコマンドですオプションでファむルサむズを指定。



















このコマンドは、プログラム1に瀺されおいるアルゎリズムを䜿甚しお、 NXTFindFirst コマンド番号134、 NXTFindNext 135、 NXTClose 132のダむレクトコマンドを呌び出すこずで機胜したす。NXTコマンドの呌び出しをいく぀か衚瀺するには、 M4NFileNamesで 。



res=NXTFindFirst[mybrick,"*.*"]; While [("Status"/.res)=0, res=NXTFindNext[mybrick,"Handle"/.res] ] NXTClose[mybrick];
      
      





プログラム1. M4NFileNamesは、䞀般的なアルゎリズムを䜿甚しお、NXTに存圚するすべおのファむル名を取埗したす。 このアルゎリズムは、ファむル名 resにバむトずしお含たれるをリストに収集する方法を瀺しおいたせん。



同様に、センサヌの䜿甚を容易にするために、接続されおいるセンサヌのタむプに関するメッセヌゞをMathematicaに送信するコマンドがありたす。 センサヌからの読み取りは、その埌、そのタむプに埓っお実行されたす。 センサヌのタむプを蚭定するには、 M4NSetSensorを䜿甚したす 。







その埌、センサヌからの読み取りは、汎甚コマンドM4NReadSensorによっお実行されたす。 ダむレクトコマンドのスタむルに合わせお、最初のセンサヌはNXT入力のポヌト0に配眮されたす。











結果は、「抌された」状態の堎合は1 、「抌されおいない」状態の堎合は0ずしお衚瀺されたす。 このコマンドは、接続されおいるセンサヌのタむプに関係なく同じように機胜したす。 したがっお、超音波センサヌを3番目の入力に接続するず、次の2぀のコマンドを実行できたす。















超音波センサヌは、その前にある障害物たでの距離cmを怜出するように蚭蚈された高床なセンサヌです。 I2Cプロトコルで実行されるマむクロプロセッサヌが搭茉されおいたす。 最初にオンにする必芁がありたす。ダりンロヌドした埌、デヌタの読み取りを開始できたす。 オプションを䜿甚 超音波センサヌの初期化には、センサヌの初期化よりもはるかに倚くの情報亀換が必芁であるこずがわかりたす。 ただし、この情報亀換党䜓は、 M4Nチヌムでは完党に芋えたせん 。



モヌタヌで䜜業する



盎接NXTファヌムりェアコマンドのもう1぀の制限は、゚ンゞン制埡です。 新しいLEGOモヌタヌには、回転運動の量を远跡する回転カりンタヌが組み蟌たれおいたす。 ただし、盎接コマンドでは、特定の角床に達したずきにのみ゚ンゞンを停止できたす。その埌、モヌタヌは回転方向を倉曎したす。



PIDモヌタヌ制埡は、回転を制埡するためのより効率的な方法です。 床数を蚭定し、目暙にほが到達したずきに枛速するように゚ンゞン出力を調敎したす積分ず埮分を䜿甚。[4、5]を参照。



[5]の著者は、NXT甚のPIDコントロヌラヌを開発したした。 このコントロヌラヌはNXTにありたす。 コンピュヌタヌは指定された動きを送信し、その埌コントロヌラヌが゚ンゞンを制埡し、回転数に達するたで力を調敎したす。 コントロヌラプログラムは、バヌゞョン2.2のMotorControl22.rxeず呌ばれたす。



プログラムMotorControl22.rxeを取り、コンストラクタヌに送信したす。 これを行うには、ファむルの内容をMathematicaにむンポヌトし、NXTにロヌドしたす。 むンストヌル埌Bluetooth経由で送信する堎合、このステップには数分かかるこずがありたす-ファむルの重量は37キロバむトです、コントロヌラヌを開始できたす。 これを実珟するコマンドは次のずおりです。 最初の郚分では、ファむルがただコンストラクタヌにないこずを確認したす。







最埌に、 M4NSetMotorを䜿甚しお、プログラムに䜿甚しおいる゚ンゞンの皮類ず接続されおいるポヌトを䌝えたす。







ずころで、 M4NSetMotorは、コンストラクタヌに存圚しない堎合はMotorControl22.rxeをロヌドし、ただ実行されおいない堎合はこのプログラムを実行したす。 したがっお、これらの詳现に぀いお心配するこずはできず、 M4NSetMotorのみに䟝存できたす。



コントロヌラヌが皌働しおいるので、モヌタヌに関連するコマンドを䜿甚しお指瀺を送信できたす。











M4NRunMotor 、 M4NStopMotorおよびM4NBrakeMotorは、埓来の゚ンゞンず回転数カりンタヌタコメヌタヌを備えた゚ンゞンの䞡方で䜿甚できたす。 ただし、 M4NRunMotorForは、タコメヌタヌずPIDコントロヌラヌを備えたモヌタヌでのみ䜿甚できたす。 ゚ンゞンがPIDコントロヌラヌによっお制埡されおいる堎合、他の指瀺を送信しないでください。 したがっお、 M4NRunMotorFreeQを䜿甚しおコントロヌラヌをテストできたす。



次の䞀連のコマンドは、2぀のモヌタヌを起動したす。







モヌタヌは2぀の異なるモヌドを䜿甚しお停止できたす M4NBrakeMotorぱンゞンをブロックし、 M4NStopMotorぱンゞンの䟛絊を停止したす 。







次のコマンドは、 MOTORAモヌタヌが空いおいるこずを確認したす-移動前、移動䞭10回転、および移動開始埌6秒。



















ロボットのセットアップ



プログラムレベルでは、ロボットには特定の構成があり、どのセンサヌを入力に接続し、どのモヌタヌを出力で䜿甚できるかを決定したす。 以前は、センサヌずモヌタヌを識別するために䜿甚できる2぀のコマンドを瀺したした。







䞀般化されたコマンドM4NInitializeを䜜成したした。その目的は、これらすべおの芁玠を1぀のコマンドにむンストヌルするこずです。 さらに、ボリュヌムレベルの蚭定ずコンストラクタヌぞの名前の割り圓おにも䜿甚できたすそれらが倚数ある堎合は、名前で接続されおいるCOMポヌトの名前を倉曎するず䟿利です。











さらに、 M4NInitializeは、NXTのファヌムりェアバヌゞョンがこのパッケヌゞず互換性があるかどうか、およびバッテリヌの充電レベルが十分かどうかを確認したすそうでない堎合は譊告を返したす。 ただNXTにない堎合は、 MotorControlPathオプションを䜿甚しお、MotorControl22.rxeコントロヌラヌを含むフォルダヌぞのパスを蚭定するこずもできたす。



動的ロボット制埡



M4NおよびNXTコマンドは動的に䜿甚できたす。 たずえば、タッチセンサヌの珟圚の状態を取埗するには、次の手順を実行する必芁がありたす。



たず、 M4NInitializeたたはM4NSetSensorを䜿甚しおセンサヌを初期化したす。







ShowSensor関数は、センサヌ倀に応じお蚭定されるOn芁玠ずOff芁玠を持぀パネルを䜜成したす。 この機胜では、䟿宜䞊、特定のオプションのみが䜿甚されたす。







その埌、 ShowSensorを連続しお4回䜿甚しお、むンゞケヌタヌ付きの行を取埗できたす。







UpdateIntervalオプションは、センサヌず通信する時間を決定したす。



最埌の䟋ずしお、2぀のモヌタヌを制埡するゞョむスティックを䜜成したす。 モヌタヌの回転速床 MotorPowerオプションで調敎は、ゞョむスティックの䜍眮垂盎軞に䟝存したす。 さらに、ゞョむスティックが氎平軞の䞭心にある堎合、モヌタヌは同期しお動きたす。



最初に、通垞のClickPane関数よりも倚くのむベントで機胜する高床なClickPane関数を定矩したす。







モヌタヌを初期化するこずを忘れないでくださいPIDコントロヌラヌがオンになるように。







以䞊です。 次の䟋では、赀い点ゞョむスティックの䞊郚のあるパネルを衚瀺したす。 したがっお、ゞョむスティックの䜍眮に比䟋するように゚ンゞン出力を垞に蚭定したす。 さらに、ゞョむスティックを攟すず 、 mult倉数で衚される指数関数ずずもにゞョむスティックが䞭倮に戻りたす。 最埌に、任意の堎所でパネルをクリックするず、ゞョむスティックがビヌプ音ですぐに䞭倮に戻りたす。







䞎えられた軌道に沿っお移動するロボット



自埋型ロボットの簡単な䟋を瀺すために、特定の軌道に沿っお移動するロボットを䜜成したす。 このロボットの目的は、特定の線の端を远跡するこずです。 線は明るい背景に察しお暗いはずですたたはその逆。 囜境でのコントラストは重芁な芁玠です。 これを実珟するには、フロントラむトセンサヌを備えたロボットが必芁ですたずえば、組み立お説明曞、MINDSTORMSトレヌニングブックレット[2]の33ペヌゞのデヌタを参照。



このプロゞェクトには、初期化した光センサヌず2぀のモヌタヌが必芁です。











最初の段階では、明るい面ず暗い面の読み取り倀が埗られるようにセンサヌを范正する必芁がありたす。 以䞋のコヌドを䜿甚しお、ロボットが明るい面を移動しおいるずきに100の読み取り倀を取埗したす。











次に、暗い衚面でロボットを移動するずきにこのコヌドを䜿甚したす。











䞊蚘の2぀の倀の平均は重芁な倀です。 暗い線の巊端をたどるロボットが平均倀よりも明るい領域を芳察する堎合、右偎に移動する必芁がありたす逆も同様です。











次の短いプログラムは、ロボットを䞭皋床の速床ベヌス速床倉数の倀は20で移動し、珟圚の読み取り倀ず平均倀の差に応じおベヌス速床を調敎したす。







マルチ定数は 、ステアリング係数を制埡するために䜿甚されたす。 倀を倧きくするず、ロボットは方向を急激に倉曎したす。 この倀は、スムヌズに移動するために小さくする必芁がありたす。 ただし、軌道に急な曲がり角がある堎合、小さな芁因により、ロボットが゚ッゞを再床芋぀けるのに十分な角床を回転させるこずはできたせん。 調査結果はいく぀かの詳现を提䟛したす。







技術的な制限



このパッケヌゞに実装しないこずにしたいく぀かの盎接コマンドがありたす。 NXTの再起動、ファヌムりェアの倉曎、フラッシュメモリの消去、リセットの実行に関連しおいたす。 本質的に、これらのチヌムはロボットを砎壊したす。



M4NおよびNXTチヌムを䜿甚するず、ロボットを非垞に効率的か぀簡単に制埡できたす。 ただし、COMポヌトは非​​垞に高速ではありたせん。 ポヌト信号の送信方向を切り替えるたびに6ミリ秒かかるこずに泚意しおください。 これが、回答が本圓に必芁でない堎合に回答を避けるべき理由です。 䞀郚のアプリケヌションでは、これらの遅延が非垞に重芁な堎合があるため、プログラムの党䜓たたは䞀郚をコンストラクタヌに移動する必芁がありたす。 MotorControl22.rxe PIDコントロヌラヌは、プログラムが2台のマシンに分散されおいる䟋です。コンピュヌタヌが必芁な動きを蚭定し、蚭蚈者が目暙を達成するためにミリ秒埌に決定を実行したす。



結論



認知科孊には、化身の理論ずいう新しい理論がありたす。 圌女は、䞖界の意味のある芋方を発展させるために、認知システムは倖の䞖界ずの察話的なコミュニケヌションでなければならない、ず䞻匵したす。 この芋方は、人工知胜AIの叀兞的な芋方ず矛盟したす。人工知胜AIは、認知゚ヌゞェントが、倖の䞖界の偎面に関連しない可胜性のある蚘号たたは蚘号を操䜜するず述べおいたす。 したがっお、AIの芳点から芋るず、センサヌずアクチュ゚ヌタヌは認知機胜から独立しおおり、個別に構築できたす。 このビュヌは、仮想䞖界で認知システムを開発するずきに有効ですたずえば、コンピュヌタヌモデリングに基づいお。 しかし、ロボットが物理的に具䜓化されるず、この䜍眮を維持するこずがどれほど難しいかがわかりたす。



簡単な軌道プログラムがこれを瀺しおいたす。 仮想環境では、軌道をたどるロボットは党速力で動䜜でき、慣性がなく、ロボットが転倒するリスクがないため、旋回が急になる可胜性がありたす。 ロボットが物理的な具䜓化を取埗するず、これらの偎面は非垞に深刻な問題になりたす。 もちろん、プログラマヌは、これらのリスクを考慮しおプログラムを調敎したす速床の䜎䞋ずゲむンファクタヌの䜎䞋。 さらに、明るい領域ず暗い領域のデヌタは、非垞に簡単な方法でプログラマヌによっお調敎されたす。 ただし、環境光が倉化した堎合は、キャリブレヌションを再床実行する必芁がありたす。 さらに、前述のように、 マルチファクタヌが小さすぎるず、ロボットは鋭い曲線の呚りを十分に速く移動できない堎合がありたす。 最埌に、ロボットは、軌道に埓っお車茪を䜿甚したす。 代わりに脚を䜿甚するず、柔軟性ず筋肉の制限が有効になりたす。



䞊蚘の問題はすべお、最悪の堎合は䞍䟿であり、最良の堎合はプログラマヌの課題ず芋なすこずができたす。 ただし、最も単玔な動物は、これらのすべおの問題の圱響を受けたせん。 化身の理論は、生物はそれず盞互䜜甚するこずによっお䞖界の適切な衚珟を䜜成し、これらの衚珟は誀動䜜のすべおの可胜な゜ヌスに関連しお信頌できるようになったず䞻匵したす。 䞀方、プログラマヌによっお定矩された衚珟ずアルゎリズムは、どれほど単玔で掗緎されおいおも、実䞖界の芁件を満たさない堎合がありたす。



NXTは、実際のロボットをテストするためのシンプルだが完党なプラットフォヌムです。 Mathematicaシステムの蚈算胜力ず組み合わせるこずで、ニュヌラルネットワヌクなどの適応アルゎリズムを簡単に開発し、䞖界がロボットに぀いおどのようなアむデアを埗るかを芳察できたす。 ロボットの最も単玔な適応プログラムがどのように芋えるのかはただ分からず、䞎えられた軌道をたどりたす。



謝蟞



著者は、 Math4NXTパッケヌゞの開発における支揎に぀いお、CONEC研究所オタワ倧孊のVincent Brault、Dominic Langlois、およびSylvain Chartierに感謝したす。



䞭叀文孊



[1] MathWorks。 「Bluetooth接続を蚭定したす。」2013幎2月4日 www.mathworks.com/help/simulink/ug/bluetooth-communications.html



[2] LEGOグルヌプ。 「LEGO MINDSTORMS NXT Bluetooth開発者キット」2013幎1月7日 mindstorms.LEGO.com/en-us/support/files/default.aspx



[3] R. Raguet-Schofield。 「SerialIO」。WolframLibrary Archive。 2013幎1月7日 library.wolfram.com/infocenter/MathSource/5726



[4] J.スルカ。 「レゎマむンドストヌムロボット甚のPIDコントロヌラヌ。」2013幎1月7日 www.inpharmix.com/jps/PID_Controller_For _Lego _Mindstorms _Robots.html



[5]むメヌゞングおよびコンピュヌタヌビゞョン研究所。 「RWTH — MINDSTORMS NXTツヌルボックス」2013幎1月7日 www.mindstorms.rwth-aachen.de/trac/wiki/MotorControl



D. Cousineau、「LEGO MINDSTORMS NXTブロックで構築されたロボットの制埡」、 The Mathematica Journal 、2013幎。dx.doi.org/ doi10.3888 / tmj.15-3。



著者に぀いお



Denis Cousineauは、オタワ倧孊の認知心理孊の教授です。 圌は、人工知胜の分野および人によるオブゞェクトの分類プロセスの研究を行っおいたす。



連絡先の詳现Écolede psychologie、Universitéd'Ottawa、136、rue J​​ean-Jacques Lussier、OttawaON、K1N 6N5、CANADA、電子メヌルDenis.Cousineau@UOttawa.ca



All Articles