*

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開発(11)-opOUTPUT_STEP_POWERコマンド

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

記事を読む

python

VisualStudioCommunityでのPython開発環境構築

どもです。 最近、VisualStudioでのPython開発を始めました。 その際の環境構築に

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

(テーマ) C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた (下書き

記事を読む

toppers

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

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

記事を読む

toppers

C言語でEV3開発(24)-APIの実行時間を測定してみた。

どもです。 今回、以前から気になっていた、開発環境/プラットフォームであるTOPPERS HRP2

記事を読む

no image

Windows/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 今回は、Windows/EclipseでRaspberry Piのクロス環境を構築した

記事を読む

toppers

C言語でEV3開発(22)-ロギング機能

どもです。 前回は、モーターの出力を制御する方法について記載しました。その際に、モータ/車体が期待

記事を読む

eclipse_4.3_kepler

elicpse/CDTでのgdbでのソースを追従したデバッグができない問題

どもです。 今回のエントリーは、Eclipse上でgdbを利用したデバッグ中に発生する問題について

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

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="">

eclipse_oxygen
Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryP

no image
Windows/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 今回は、Windows/EclipseでRaspberr

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

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場

raspberry-pi
RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B

toppers
C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

(テーマ) C言語でEV3開発(28)-EV3の移動距離を計算できる

→もっと見る

PAGE TOP ↑