🤖

かわロボコニストのための制御入門

2024/12/08に公開

1. 制御の基礎

まずは、制御システムを考えるための基本的なシステムの考え方から説明します。

それぞれを独立して考えることで、難しそうに思える制御が少し簡単に見えてくると思います。それでは一つのブロックずつ、考え方などを説明していきます。

①計測ブロック

制御対象の状態を計測するためのブロックとなります。この計測ブロックを設計するにあたって、以下のような点を考える必要があります。

  1. どのように計測するか(どのセンサを使うか、どこにセンサをつけるか)
  2. 利用予定のマイコンでそのセンサが利用できるか
  3. どの程度の精度がで計測されるか

例えば、かわロボアームの回転角度を制御対象とする場合、以下のようなセンサ設定のパターンが考えられます。

  1. ポテンションメーターをアームの最終段に取り付ける
  2. 光学式エンコーダを減速機内に取り付ける+フォトインタラプタをアームの最終段に取り付ける

それぞれ利点欠点が存在するので、状況に応じて、適切に選択する必要があります。

②制御ブロック

計測ブロックで計測された値を計算し、制御対象に出力するためのブロックとなります。この制御ブロックを設計するにあたって、以下のような点を考える必要があります。

  1. どのようなハードウェア(マイコン)を利用するか
  2. どのようなアルゴリズムを利用するか

例として、以下にKrakenの制御ブロックのブロック図を記載します。

注意が必要な点としては、最初からこの制御ブロックを設計していたわけではなく、実装を進めながら必要なアルゴリズムを追加していったという点です。当初の制御ブロックは以下のようになっていました。

まずは、最もシンプルかつベースとなる制御ブロックを実装してから、その後に必要な機能を追加していくことをおすすめします。

③出力ブロック

計算結果を用いて、制御対象に対して出力を行うブロックです。この出力ブロックを設計するにあたって、以下のような点を考える必要があります。

  1. どのような(モータ)ドライバーを利用するか
  2. 利用予定のマイコンとどのように接続するか

Krakenでは以下のような構成となっていました。

また、シールド機であるDragon Lady S.では以下のような構成となっていました。

2. Krakenを例にした制御設計

前章までで、まずは、全体の捉え方とざっくり説明しました。この章ではKrakenを例に、実際の詳細な設計方法を記載していきます。

設計工程①: やりたいことを決める

なんだかんだ、ここが一番大事です。最後まで興味を持って開発を続けられるかの分岐点になります。個人的にはやりたいことは2種類に分けるべきと考えています。1つが技術的にやりたいこと、もう1つがかわロボのマシンとしてやりたいことです。技術的にやりたいこととは、例えば、このマイコンを使ってみたいとか、この制御アルゴリズムを使ってみたいといった、制御をする上での技術的なモチベーションとなってくれます。かわロボマシンとしてやりたいこととは、例えば、このアームをスティックの動きに反映して上下させたいとか、足回りの挙動に合わせてアームの挙動を変えたいとか、その制御を含む戦術でどのようにかわロボで勝利するかという点についてを深く考えるきっかけをくれます。
Krakenにおいては以下のようになっていました。

  • 技術的にやりたいこと
    1. M5 Stack AtomS3を使いたい
    2. FreeRTOSで開発したい
  • かわロボマシンとしてやりたいこと
    1. 足回りの挙動に合わせて、アームに適切な動作をさせる
    2. とにかく上下方向のアーム操作を極限まで減らす

書きかけですが、立命館での学生さん向けに公開しています。
更新はまた後ほど。

Discussion