Itamika logo Itamika
ロボコン制御初級

ロボコン制御初級

制御の基礎

制御とは

思った通りに動かすこと

目標

オムニの制御を完全に理解する

流れ

1 オムニを動かす動画 「どうなっとんのこれ?」  ↓ 2 オムニの基礎 「モーター動かさなきゃ」  ↓ 3 モーターの基礎 「モーターってどうやって動かすの?」  ↓ 4 モータードライバ (MD) 基礎 「MDってどうやって制御するの?」  ↓ 5 マイコン基礎 「マイコンってどうやってプログラム書くの?」  ↓ 6 実践! 「これでいける?」

オムニ動画

不思議な動作をしている どんな仕組みなのか一つずつ紐解いていく

オムニの基礎

オムニはオムニホイールというタイヤを使用している

omni-wheel.avif Suzaku Labより

回転方向と垂直方向にフリー回転するバレルで構成されたタイヤである これを3輪か4輪で構成することで、全方向移動、その場回転が可能となる 下の図のグレーの部分がこのバレルである

3omni-exp.avifomni4.png
Omni 3Omni 4

どのような仕組みで制御するのだろうか 「物理」で考えてしまうと重力や摩擦力などの「力」を扱わなければならず、複雑になる よって、単純化して考えたい ここで、このホイールの特徴を考えてみる

このオムニホイールは横向きは摩擦力をないものとして考えられる つまり、とても細いタイヤ、二次元に抑えられたタイヤと考えられるのである

omni-picture.avifomni-image.avif
Omni Car2D-Wheel Car

これにより、普通ではありえない、それぞれのタイヤを垂直に配置するということを可能としている つまり、それぞれのホイールは「回転方向にのみ力が発生する」と捉えることが可能である これは、「ホイールが回転して進む方向へのベクトル」として表現できる

Omni Rotation

オレンジ矢印がベクトル

つまり、それぞれのホイールを何回転させれば、目的の動きになるかだけ考えればよい このような考え方を逆運動学と呼ぶ

3輪の場合で説明する まず、単純に前後左右4方向への移動を考える

前に進みたい場合 この図のように下の二つを互いに反対回転させる

3omni-top.avif3omni-top-arrow.avif
前に進みたい場合ベクトル分解

右に進みたい場合 この図のように下二つ同じ方向に回し、上一つを反対回転で回す

3omni-right.avif3omni-right-arrow.avif
右に進みたい場合ベクトル分解

下と左も同様 斜めに進むことを考えると少し難しくなってくる

逆運動学モデルという数式を立てることができる

TODO

これにより、ホイールの出力をどのくらいにすれば目的の方向に動くかが、自由に決められる これで、オムニの仕組みについては理解できた でも、モーターについて知らなくては何もできない

モーターの基礎

モーターには主に、

  • ブラシ付きDCモーター
  • ブラシレスDCモーター (BLDC)
  • コアレスDCモーター
  • ACモーター
  • ステッピングモーター
  • サーボモーター

などがあるが、基本、DCモーターとサーボモーターしか使わない

初めにブラシ付きDCモーターについて説明する 2本の線を切り替えることで回転方向を入れ替え、電圧により、速度を制御することができる

制御回路が簡単というメリットがあるが、ほかのモーターに比べると性能は落ちる 下のGIFのように電磁石を切り替えることで回転している

dc-motor.avif
[1] MABUCHI RZ735[2] DCモーター
[1] MABUCHI MOTORより
[2] RENESASより

次にブラシレスDCモーターの説明をする 下の図のように3層交流(線が3本)であるため、それぞれの線への電圧を切り替えることで正逆転、速度の制御を可能となる

寿命は長く、高速回転が可能だが、制御が難しいというデメリットがある

Tmotor.jpg
[1] T-Motor MN2806[2] BLDCモーター
[1] T-Motorより
[2] RENESASより

次はコアレスモーターの説明だが、これはDCモーターから中心のコア (鉄心) を消したものである

軽く、慣性モーメントが小さい、ノイズが小さいというメリットがある デメリットは、値段が高いこと、トルク (力) が弱いことがある

RE25.jpg
maxon 118751
maxonより

最後にサーボモーターについて説明する サーボモーターは中にDCモーターが入っているため、モーター自体の仕組みは上のどれかのDCモーターと同じである

違いは可変抵抗(ポテンショメーター)か、エンコーダーが入っていることである これにより、角度を指定するとその角度まで自動で制御され、回転するという便利なモーターである

欠点は値段が高いこと、バックラッシュ(ガタつき)が消せないことがある

sg90.jpg
SG-90
秋月電子通商より

これで、モーターについてはわかった でも、モーターを動かす回路について知らなければ、動かせない

モータードライバ (MD) 基礎

モータードライバとはモーターを制御するための回路である 尚、サーボモーターには内臓されている ここでは基本的なブラシ付きDCモータードライバについて説明する 市販品は以下のようなものがあるが、基本的な内部回路はどれも変わらない

md.jpg
Pololu VNH3SP30
SWITCH SCIENCEより

モータードライバ回路の基本はMOSFETである モータードライバを理解する上ではこれを中心に理解を深めることが第一歩だと思う

fet.jpg
BUK116-50L
秋月電子通商より

こいつは一体何の役割をしているのか これはモーターを回すスイッチの役割をしている このスイッチをHブリッジと呼ばれる形に配置する 下の図の「M」はモーターである

h-bridge-switch.avifh-bridge-fet.avif
Hブリッジ (スイッチ版)Hブリッジ (MOSFET版)

これがオンになったりオフになったりでモーターを回すという仕組みである つまり、このスイッチを制御することでモーターを制御する

md_s_r.pngmd_s_b.png
Hブリッジ 正転Hブリッジ 逆転

このスイッチを入れるにはどうすればよいのか 電圧をかけることでスイッチをオンすることができる

この電圧の大きさを制御するために必要なのはPWMという信号である これはデジタルで電圧を制御するための方法である

Duty比と呼ばれる、ONにする時間とOFFにする時間の差によって電圧を制御する デジタル信号の「ON・OFF」の速度を上げることで、滑らかな電圧を実現することができる 基本的に周波数は高ければ高いほどいいが、回路により制限がある

pwm_waveform_image.jpg
[1] Duty比
周波数
[1] indexProより

これでモーターを制御する方法が分かったがPWM信号はどうやって出力するのだろうか

マイコン基礎

ロボコンではマイコンと呼ばれるコンピュータを使用することでロボットを制御する 具体的には

arduino.jpglpc1768.jpgf303k8.jpgPIC16F87.jpg
[1] Arduino Uno[1] Mbed LPC1768[2] Nucleo F303K8[2] PIC 16F87
[1] SWITCH SCIENCEより
[2] 秋月電子通商より

などがある

これらは「C,C++」などのプログラミング言語を使用することで、動作を設定できる C++は神の言語であるからにして、人間が修めるべき最も優れたプログラミング言語である というのは私個人の意見である が、制御にはC++の学習は必須である

C言語を学んでいない人は、苦しんで覚えるC言語

https://9cguide.appspot.com/

を一通りやることをおすすめする

そのあと、江添亮のC++入門

https://ezoeryou.github.io/cpp-intro/

をやることで、c++er初心者くらいにはなれるだろう

ここまでできれば、後はググりつつ、ArduinoやMbedのプログラムをドキュメントを参考にしつつ、 書くだけである

Arduino日本語ドキュメント

http://www.musashinodenpa.com/arduino/ref/

mbed日本語ドキュメント

https://os.mbed.com/users/okini3939/notebook/ref_jp/

:::note warn mbedはOS2のドキュメントであるため、それ以上を利用する場合は、英語のドキュメントを参照 :::

実践

これまでの情報を参考に、

  • モーターを動かすライブラリ
  • オムニの目標ホイール速度を計算するライブラリ

を作成してみよう ここまでできれば、脱ロボコン制御初心者かな?

あとがき

最後の方はググれば出てくるため、省略した 正直、プログラムを書かない限り、何もやったことにならないので、 常にプログラムを書いてみるという意識を持つことをおすすめする

次はロボコン制御中級について書く