モーターの制御方法を検討しよう

モーターの制御方法を検討しよう

2輪倒立振子ロボットをライントレースさせる方法にON/OFF制御を使うと、カクカクした走行になり速く走ることができないこと、そして速く走るためにカクカクの度合いを小さくして滑らかに走行させようとしたら、今度はラインから外れやすくなってしまうことがわかりました。簡単な実験をして、ON/OFF制御にはどんな問題があるのか調べてみましょう。

ON/OFF制御の実験

モーターを回転させて、目的の角度で止めることを考えてみましょう。

図2のように教育用レゴ マインドストームNXTのモーターひとつにアームブロックを取り付けただけの簡単な実験装置を作ります。このモーターをNXTの出力ポートAに接続します。

図4:モーターの回転動作を調べる実験装置

このモーターを開始位置からちょうど90度回転させた状態を維持するようにしたいのです。これをON/OFF制御で考えると、目標値の90度までは順回転させて、目標値90度を超えたら逆回転させます。すると目標値の90度より小さい角度になりますから、再び順回転させて90度に近づけます。これを繰り返すことで目標値の90度に近い位置で安定することになるはずです。ライントレースのとき、ライン上なのかライン外なのか、また90度より大きいか小さいかが対応しています。このときのモーターの動きは図5のようになりました。

図5:モーターの動き(ON/OFF制御)

モーターの回転角度の変化をグラフに表すと図6のようになります。

図6:モーターの回転角度の変化(ON/OFF制御)

グラフを見ると分かりますが、90度ちょうどで停止しません。これまでと同様、目標値の90度を中心に値が上下にぶれたまま推移していることがわかります。90度を超えると、ズレの多少によらず決まったスピードで逆回転し、90度を下回ると再び順回転しています。いつまでたっても、目標に到達して静止することができない状態が続いています。

偏差に比例して速度を変化させてみる

ON/OFF制御では2つの値で制御していました。では、もっと多くの値に分割したらどうでしょうか。例えば、目標値の90度に対して、差が30度以下のときには遅く、差が30度から60度のあいだは中速で、差が60度以上あるときには高速で回転させてみてはどうでしょう。

3つの値を使った制御です。段階が増えたのでさっきより滑らかになるかもしれません。そして、4つ、5つと区間を細かくして値を増やしていきます。そうすると、常に目標値の90度との差(目標値との差を偏差と呼びます)を計算して、その差の大きさに対応したスピードで回転させるようになります。偏差が大きければ速く、偏差が小さくなるにつれて遅く細やかにスピードを変えていくという方法です。式に直すと次のようになります。

モーターの回転速度 = 定数×(90度 - 現在のモーターの角度)

90度が目標値です。90度から現在のモーターの角度を引いた値を求めている部分が偏差です。モーターの回転速度をこの偏差が大きいほど速く、小さいほど遅くしたいのですから、偏差と回転速度は比例しています。そこで、偏差に定数をかけてモーターの回転速度を求めるようにしています。定数は実験をしてちょうどよい値を求めます。現在のモーターの角度が90度に近づけば近づくほど、モーターの回転スピードは小さくなり、理想的には90度でスピードが0になり止まるはずです。

この式をプログラムに反映して実行してみました。このときのモーターの動きは図7のようになりました。

図7:モーターの動き(P動作)

モーターの回転角度の変化をグラフに表すと図8のようになります。

図8:モーターの回転角度の変化(P動作)

ON/OFF制御に比べると、スムーズに90度に近づいていることがよくわかります。このような制御方法を、偏差量に比例して制御量を変えるため「比例制御」または「比例動作」と呼びます。そして、この制御動作のことを、比例(プロポーショナル:Proportional)の頭文字をとって「P動作」と呼びます。

しかし、ちょっとまってください。90度付近を拡大してみてみましょう。

図9:モーターの回転角度の変化(P動作)の拡大図

90度ぴったりではなく、小さなズレがあるようです。しかも、このズレは時間が経過しても0にはなりません。実世界では、摩擦やエネルギーロスがあるため、制御量(回転速度)が小さすぎて、モーターを動かすことができなくなってしまうからです。このようなことが原因となって、P制御には定常的な偏差(定常偏差)が残ることがあります。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30