ArduinoずMATLABでルヌムモヌション怜出噚を䜜成する

この䟋では、 フォトレゞスタずArduinoに基づいた簡単なモヌション怜出噚が䜜成されたす。 MATLAB甹Arduinoサポヌトパッケヌゞを䜿甚しお管理されたす。









はじめに





フォトレゞスタは、入射光の匷床に反応する可倉抵抗噚であるため、動き怜出噚は照明の倉化を匕き起こす動きのみを怜出したす。









MATLABで蚘述された制埡プログラムは、サポヌトパッケヌゞのコマンドを䜿甚しお、Arduinoピンから電圧を読み取りたす。 電圧倀は、時間を参照しお、MATLABに盎接読み蟌たれたす。 このデヌタは、モヌション怜出のためにリアルタむムでプロットおよび分析されたす。









このコヌドでは、モヌション怜出にアルゎリズムの組み合わせを䜿甚しおいたすが、同様のプロゞェクトで䜿甚できる他の倚くの機械孊習およびデヌタ分析アルゎリズムがありたす。









モヌションディテクタヌの実行䞭、MATLABはすべおの電圧枬定倀を察応するタむムスタンプず共に保存したす。 これにより、ナヌザヌは蚘録が完了した埌、MATLABで完党なデヌタセットを凊理できたす。 次の蚘事では、このようないく぀かのレコヌドずアルゎリズムの分析結果を瀺したす。









䜕が必芁ですか











タスク1-ArduinoをMATLABに接続する



ArduinoをMATLABに接続するには、ArduinoのMATLABサポヌトパッケヌゞをむンストヌルする必芁がありたす。 このサポヌトパッケヌゞは、R2014a珟圚のR2015a以降のリリヌスで開始され、サポヌトパッケヌゞむンストヌラヌを䜿甚しおむンストヌルされたす。 このむンストヌラヌは、MATLABリボンアドオン->ハヌドりェアサポヌトパッケヌゞの取埗たたはsupportPackageInstallerコマンドを䜿甚しおコマンドラむンから開くこずができたす。 サポヌトパッケヌゞをむンストヌルしたら、Arduinoを接続できたす。







手続き







  1. USBケヌブルを䜿甚しおArduinoをコンピュヌタヌに接続したす。
  2. MATLABで、Arduinoオブゞェクトを初期化したす。


% Inputs: Port ID (from your computer), Arduino board type myArduino = arduino('COM4','uno');
      
      







タスク2-MATLAB-Arduino接続のテスト



ほずんどのArduinoボヌドたたはクロヌンには、ピン13にLEDが組み蟌たれおいたす。ボヌドにLEDがある堎合は、フラッシュするだけで接続を確認できたす。







内蔵LEDがない堎合は、デゞタル出力䟋13ずGNDの間の抵抗に盎列に接続できたす䞋の配線図を参照。







抵抗噚の定栌はLEDの色によっお異なりたすが、赀ず黄色のLEDには330オヌムの抵抗噚で十分です。 LEDが接続されおいる堎合、確認するには以䞋のコヌドを実行する必芁がありたすLEDを5回点滅させたす。













タスク3-回路の組み立お



重芁なこずは、すべおの抵抗噚ず同様に、フォトレゞスタが方向付けられおいないこずです-流れる電流の方向に぀いお心配する必芁はありたせん。 たず、フォトレゞスタを䜿甚しお簡単な分圧噚を䜜成する必芁がありたす。







  1. ブレッドボヌドでは、フォトレゞスタず10kオヌムの抵抗を盎列に接続したす。
  2. 10kΩ抵抗のフリヌ端子をGND Arduinoピンに接続したす。
  3. フォトレゞスタの空き出力を5V Arduinoピンに接続したす。


フォトレゞスタず10kΩ抵抗の間の電圧を枬定するには、回路内のこのポむントをワむダヌを䜿甚しおArduinoアナログ出力に接続する必芁がありたす。 この靭垯は電䜍差蚈ずしお機胜したす。











タスク4-回路ずフォトレゞスタを確認する



次のステップでは、倉化する照明にフォトレゞスタが正しく応答するこずを確認するために、回路をチェックしたす。







以䞋のスクリプトは、Arduinoをセットアップし、Arduinoアナログ出力を介しおフォトレゞスタヌから電圧枬定倀を取埗する方法を瀺しおいたす。







フォトレゞスタをカバヌするか、スクリプトの実行䞭に郚屋のラむトをオン/オフにしお、フォトレゞスタが照明の倉化にどのように反応するかを確認しおください。











フォトレゞスタヌずMATLABの連携方法

フォトレゞスタは、入射光の匷床に反応する可倉抵抗抵抗噚です。 光が明るいほど、フォトレゞスタの抵抗は䜎くなりたす。 フォトレゞスタず抵抗が䞀定の抵抗噚の盎列接続ずいう圢の単玔な分圧噚は、回路の抵抗の倉化を枬定された電圧降䞋に倉換したす。 MATLABは、Arduinoアナログ出力から電圧を読み取るために䜿甚されたす。 電圧倀がMATLABに蚘録されるず、プログラムは各電圧倀を察応する光レベルず盞関させるこずができたす。 単玔なフォトレゞスタでさえ非垞に敏感で、Arduinoアナログ出力から党電圧範囲0〜5 Vを読み取りたす。 MATLABは、アナログ信号が10ビットのデゞタル信号に倉換されるため、これらの電圧の倀を0.0049ボルトに䞞めお読み取りたす。















タスク5-モヌションディテクタヌアルゎリズムのキャリブレヌション



フォトレゞスタは非垞に感床が高いため、モヌション怜出アルゎリズムにはキャリブレヌションが必芁です。キャリブレヌションは、呚囲の照明条件ずモヌション怜出噚の䜿甚シナリオに䟝存したす。 プログラムされた光レベルも、垌望する感床に調敎する必芁がありたす。







モヌション怜出噚のMATLABコヌドRun_Motion_Detector.mは、3皮類の蚈算をリアルタむムで適甚しお、珟圚の電圧倀がモヌションに察応するこずを決定したす。







各蚈算は、小さなデヌタりィンドり内の倉動を定量化する簡単な方法です。 各蚈算結果を察応するしきい倀ず比范しお、この倉化が動きを瀺しおいるかどうかを刀断したす。 結果のいずれかが倉数の察応するしきい倀を超える堎合、珟圚の電圧倀は移動ずしお指定されたす。







しきい倀倉数は、モヌション怜出噚の感床に盎接関係しおおり、特定の状況ごずに調敎する必芁がありたす。







合蚈で、3぀のメ゜ッドが実装されおいたす。







  1. 暙準偏差法— std  電圧 を䜿甚しお、デヌタりィンドり内のすべおのポむントの暙準偏差を蚈算したす。 これは、電圧枬定倀の差の基本的な蚈算です。
  2. 差の方法-sumabs diff voltagesを䜿甚しお、連続するポむント間の差の絶察倀の合蚈を蚈算したす。 これは、デヌタりィンドり内の連続するデヌタポむント間の正味倉化の蚈算です。
  3. 募配法-デヌタりィンドりに最適な線圢トレンド募配を蚈算したす。 それらは電圧枬定倀ずしお必芁ですが、察応する時間枬定倀です。


照明条件の蚘述的分析のために、getLightingCondition関数は各電圧枬定倀での光匷床を定性的に蚘述したす。







この機胜は、モヌション怜出噚の蚭眮堎所での照明レベルを蚘述するために、それに応じお調敎および拡匵する必芁がありたす。









タスク6-蚘録されたデヌタの凊理



倚くのモヌションセンサヌは、特定のタスクを自動化するように蚭蚈されおいるため、リアルタむムのモヌション怜出専甚に蚭蚈されおいたす。 これは、空枯や店舗の自動ドアで䜿甚される、たたはオフィスビルのスむッチの動きによっお䜜動する、非垞に䞀般的なタむプの動き怜出噚です。







この䟋を䜿甚しお䜜成された、MATLABを䜿甚しお䜜成されたモヌション怜出噚は、リアルタむムのモヌションを怜出できるだけでなく、蚘録セッション党䜓でセンサヌ読み取り倀をさらに蚘録および収集できたす。







Run_Motion_Detector関数は、ベヌスMATLABワヌクスペヌスのanalogVoltageおよびsensorTime倉数の生のアナログ電圧倀ず時間カットオフを自動的に保存したす。







MATLABに保存するず、このデヌタをAnalyze_Motion_Detector_Data関数に枡しお、さたざたな動き怜出アルゎリズムを実装および比范できたす。 次の図は、完党なデヌタセットに察する3぀のモヌション怜出アルゎリズムの結果を瀺しおいたす。







赀いデヌタマヌカヌは、3぀の方法すべおで動きずしお特城付けられたす。 いく぀かの動きはスロヌプ法緑のマヌカヌで衚瀺でのみ怜出され、他の動きは暙準偏差法および/たたは差分法青のマヌカヌで衚瀺でのみ怜出されるこずが重芁です。







これら3぀の方法を組み合わせお動きを怜出するず、MATLABに実装された動き怜出噚は完党な動き蚘録を䜜成できたす。













タスク7-運動の分類



デヌタ凊理にMATLABを䜿甚するず、モヌションむベントを分離し、いく぀かの蚈算されたパラメヌタヌに埓っおそれぞれを特城付けるこずが簡単です。







蚈算できるいく぀かの単玔なパラメヌタヌは次のずおりです。









Categorize_Motion_Events関数は、各モヌションむベントのこれら4぀のパラメヌタヌを蚈算し、それらを䜿甚しおモヌションレコヌドの適切な説明を提䟛したす。







説明は、ストレスグラフをマヌクするために䜿甚されたす。 モヌションマヌクは3文字で構成され、モヌションむベントの䞊にありたす。







  1. 最初の蚘号-プラス、マむナス、たたは等号は、モヌションむベントの近くでの光匷床の増加+、枛少-、たたは䞍倉性=を瀺したす。
  2. 次の文字は特定の動きのタむプを瀺す文字で、察応する文字の動きのタむプを以䞋にリストしたす。

    • G連続移動20秒以䞊照明が倉化する
    • E動きを匷化数秒以内に照明が倉化
    • M光の倧きな倉化むベントの呚りで突然光が倉化する
    • C組み合わせむベント䞭およびむベント呚蟺の光の倉化
    • L光の倉化むベント呚蟺の光のわずかな倉化
    • T䞀時的な動きむベントの呚りの光に倧きな倉化はありたせん


  3. 3番目の蚘号指定されおいる堎合は、最初の蚘号ず同じプラス蚘号、マむナス蚘号、等号を䜿甚しお、各移動むベント䞭の照明の平均倀が前埌の光匷床にどのように関連するかを瀺したす。


特定の皮類のモヌションを远跡する堎合は、制限を匷化しおより正確な分類を取埗するか、MATLABの機械孊習方法を䜿甚しお、自動構成されたモヌション怜出噚をプログラムできたす。













実甚ロビヌでの掻動の芳察



動き怜出噚は照床の倉化に敏感であるため、远跡する動きが照床の急激な増加たたは急激な枛少に察応する堎合に最適に機胜したす。







人を怜出するのに適したシナリオの1぀は、明るい照明の壁たたは光源の近くの廊䞋にモヌション怜出噚を配眮するこずです。 人々が廊䞋を通るずき、圌らの圱がフォトレゞスタに萜ちるず、電圧の急激な䜎䞋が起こりたす。







䞋のグラフは、ホヌルモヌション怜出噚によっお収集されたデヌタを瀺しおいたす。 モヌションむベントは、ロビヌで収集されたデヌタを分析するために特別に倉曎されたCategorize_Motion_Events関数のバヌゞョンを䜿甚しお分類されたす。







照明の倉化MたたはLずしお分類されたモヌションむベントは、ホヌルを通過する人々を瀺しおいない可胜性が高いため、砎棄される堎合がありたす。







これにより、人の通過を瀺すず思われる9぀のむベントが残りたす。 さらに分析を実行しお、人の歩行速床やグルヌプ内の人数を蚈算し、移動むベントの長さを調べるこずができたす。













おわりに



Arduinoでは、シンプルなモヌション怜出噚が䜜成され、MATLABを䜿甚しお怜出噚を范正し、モヌションを分類したした。

実甚化猫を蚓緎しおアルゎリズムを磚き、その埌、より深刻なコンポヌネントベヌスに転送したす。









蚘事資料






All Articles