タスクを並行処理してロボットを制御する

3つ以上の値で走行を切り替える前回の実験を通じて、モーターの制御方法には「P動作、I動作、D動作」があることがわかりました。今度は、2輪倒立振子の走行に適用してみましょう。「ON/OFF制御」では、いつまでたっても目標値に近づくことができず、ふらふらして安定性が悪いですし、滑らかな走りにしようとする

軽部 禎文

2010年8月23日 20:00

3つ以上の値で走行を切り替える

前回の実験を通じて、モーターの制御方法には「P動作、I動作、D動作」があることがわかりました。今度は、2輪倒立振子の走行に適用してみましょう。

「ON/OFF制御」では、いつまでたっても目標値に近づくことができず、ふらふらして安定性が悪いですし、滑らかな走りにしようとするとカーブを曲がりきれなくなってしまうという問題がありました。これに対して、「PID(動作)」の考え方を取り入れると、ふらふらしにくくなると共に、走行速度を上げることもできそうです。

光センサーでコースの状態を計測する

まずは、どのような値を目標値にすれば良いかを考える必要があります。コースの状態を光センサーで計測してみましょう。次の図1は、光センサーを白から黒へ、黒から白へと動かして、光センサーが取得する値を計測した結果のグラフとその計測方法のイメージ図です。

測定値を安定させるため、地面からの距離を10mmにして計測しました。このグラフを見ると、白地に黒い線が引いてあるコースには、白の値と黒の値だけではなく、その間の値も存在することがわかります。ON/OFF制御では、これを強制的に白か黒に割り振っていたわけです。

図1:コース状態の計測結果

図2:コース状態の計測方法

ロボットにP動作を組み込んでみよう

ラインから大きくはずれたらモーター回転パラメータをその分だけ大きく戻し、ラインから小さくはずれたら、その分だけ小さく戻す様にしましょう。これはP動作を組み込んでいることを意味します。目標値はラインのエッジ部分の明るさの値です。

図3:光センサーの値とモーターパラメータの関係(P動作)

プログラムは、こちらからダウンロードできます。

ダウンロードが完了したら、zipファイルを解凍して、フォルダ内にあるRunnerThinkIT_v2_Pフォルダを、前回作成したRunnerというフォルダの配下にコピーしてください。

※サンプルプログラムに設定されている、目標となる明るさは、ロボットが走る環境によって異なりますので、各自調整してください。

ロボットの動き

ON/OFF制御のプログラムからの変更点は、現在のコースの状態をLineMonitorUnitの役割として数値で取得できるようにしたところです。振る舞いにつけていたメソッド名は「オンラインか?」(ライン上か否か)という名前でしたが、このメソッドの役割が変わったことに合わせて「ラインの値を示す」という名前に変えた方が良さそうです。

次に、Tracerの「ライントレースする」という振る舞いの中身をP動作のアルゴリズムに変更しました。

これらの修正をしても、クラス図や、ステートマシン図には、それほど影響がありません。これらの図では駆動系を「使う」ところまでしか設計できておらず、駆動系がモーターをどのように使って制御するのかについては記述していなかったからです。逆に、この点を設計書に表現するということは、前回の実験において得られたことを設計書に反映する必要があることを意味しています。

2つの走り方の違いをもう一度見ておきましょう。P動作を取り入れるだけで走りはかなり変わりました。

ON/OFF 制御の走り方

P動作の走り方

P動作を2輪倒立振子ロボットのライントレース方法に活用してみました。本連載のサンプルプログラムは、前に進むスピードを遅めに設定してありますので、駆動系のパラメータを変更することでもう少しスピードを上げられると思います。P動作の定数も実験して調整してみてください。また、I動作やD動作を組み合わせてより滑らかな制御を目指してみてください。

人気記事トップ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