*

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

関連記事

python

VisualStudioCommunityでのPython開発環境構築

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

記事を読む

raspberry-pi

RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出について、です。 1.今

記事を読む

no image

C言語でEV3開発(9)-opOUTPUT_SPEEDコマンド

どもです。 今回のエントリーでは、前回に引き続きEV3のモーターを動かしていきます。 ただし、単

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

toppers

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

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

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

no image

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

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

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、ということに挑戦し始めました。 しか

記事を読む

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

raspberry-pi
RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出

OpenCvLogo
RaspberryPiで物体検出(1)-白線検出への挑戦(1):輪郭検出による白線検出

どもです。 今回は、OpenCvを用いて道路の白線検出について、です

OpenCvLogo
OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、というこ

eclipse_oxygen
苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用

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

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

→もっと見る

PAGE TOP ↑