*

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

公開日: : 最終更新日:2018/03/19 C言語, マインドストーム/EV3, 開発

どもです。
今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。

0.ヒステリシスとは
そもそも論です。
ヒステリシスとは、「加える力を最初の状態のときと同じに戻しても、状態が完全には戻らないこと」を示します。
えー…コレだけではさっぱり分かりません。
しかし、詳細な理論や計算方法については、今回のエントリーの目的・意図からずれますので、ココでは記載しません。
書籍やネットの記事を調べてみてください。

しかし、それでは少し無責任なので、少~し噛み砕いた言い方をしてみると…

「値の変化の方向によって、状態が変化する境界値が異なる。
「行き道と帰り道が違う」

といったとこでしょうか。

-2018/03/19 追記
「ヒステリシスの説明」で記載した説明を、図にしてみました。
hysteresis_base
図にも記載されていますが、状態の変化の方向によって、その変化の境界値が異なっています。
これが、ヒステリシスの簡単な説明/図解になります。

1.フィルタの対象
ヒステリシスを用いてフィルターしたいのは、モーターの出力です。
(Ev3の)モーターでは、出力値を一定にしていても、取得できる値は一定ではありません。
即ち、現在値、目標値から次の出力値を算出する際に参照する値が一定になりません。
そのため、モーターの動作を一定にすることができず、結果的に動作が安定しなくなる、という問題が発生します。
これを解消するために、モーター出力に対してヒステリシス処理を実施します。

2.フィルタの実装
実装は、下記の通りです。

3.実装/実行結果
上記の実装を施した上でモーターを動作させた結果を、下記に示します。
・青線 → 現在のモーター出力
・オレンジ線 → フィルター後のモーター出力
hysteresis_left
hysteresis_right
同時に、フィルター処理を実装した後のモーター出力の目標値のグラフも示します。
こちらは、フィルター後の動作値と目標値の2つを示します。
hysteresis_left_output
hysteresis_right_output

4.結果について
モーターから読み出す現在値は、基本的に一定にならず常に振動していることが分かります。
また、モーター目標値についても振動しなくなっていることが分かります。
即ち、今回実装したフィルターにより、モーターの動作を安定させることができている、ということが読み取れます。
よって、今回実装したフィルター処理により、モーター出力が安定してないという問題を解決できていることが分かります。

関連記事

no image

C言語でEV3開発(13)-opOUTPUT_STEP_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである 「opOUTPUT_STEP_S

記事を読む

Arduino_Logo

ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。 1.前回からの違い 前回の

記事を読む

no image

QtでRaspberryPi/GUI開発(3):ためしに時計を作ってみた(其の参)-StyleSheetの適用

どもです。 前回のエントリーでは、グループ化されたボタンに対するイベントハンドラについて書きました

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

no image

C言語でEV3開発(12)-opOUTPUT_TIME_POWERコマンド

どもです。 今回のエントリーでは、これまた前回に引き続き、モーターを動かすためのコマンドについて書

記事を読む

Splash

EV3開発サポートツール(3)-Ev3Controller

どもです。 今回は、以前ちらりと紹介した、Ev3のモーターの出力を調整するアプリケーションについて

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

RasPi_Qt
QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画

raspberry-pi
RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiから

no image
自宅で電子工作(1):ブレッドボードでの配線を省略する

どもです。 突然ですが、電子工作を始めてみました。 1.背

Arduino_Logo
ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。

Arduino_Logo
ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてで

→もっと見る

PAGE TOP ↑