空を飛ぼうが、陸上を走ろうが、水上を走ろうが、ドローンになにかリモートでやってもらいたいことが出てきます。
水上ドローンの場合、よく見かけるのが撒き餌のバラマキ。
制御機器で餌箱を開けるわけですね。
サーボモーターとは
具体的にはサーボモーターを使うことでなんとかするわけです。
サーボモーターはステッピングモーターとは違います。サーボモーターは送ったパルス幅に応じて、回転角度を変化させられるモーターです。
下の絵はここから拝借しました。
図のとおり、パルスの幅が指令であり、それが何回送られるということは関係ありません。つまり周波数は結構いい加減でいいことは知っておいてください。
ステッピングモーターのようにぐるぐる回ることが想定されていません。せいぜい270度くらいまででいっぱいです。
しかもサーボモーターは長年、主にラジコンで使われてきたせいもあり仕様がだいたいどれも同じです。違いはどれくらいのパワーが出せるか、です。
フライトコントローラへの接続
安い小電力のサーボモーターならば、下図のようにフライトコントローラーに直結できます。
AUXOUTの1,2,3,4あたりを使います。
5,6はGoProカメラのシャッターのところで考察したとおり、主にリレーをつなぐことが想定されいるのでPWM制御のサーボモーターの接続は避けましょう。(変更できなくはないです)
AUXOUT1はパラメーターSERVO09, AUXOUT2はSERVO10, AUXOUT3はSERVO11, AUXOUT4はSERVO12に相当します。
AUXOUT1を使う場合、
SERVO09_FUNCTION=28
とします。次にサーボを扱うことをArdupilotの世界ではグリッパー(つかむ)といい、次のパラメーターの設定が必要です。
GRIP_ENABLE=1 GRIP_TYPE=1 GRIP_GRAB=グリッパーの掴んでいるとするPWM値 1000から2000 GRIP_RELEASE=グリッパーが離しているとするPWM値 GRIP_NEUTRAL=グリっぱーの中立位置。わからないときはGRIP_GRABと同じから始める
送信機からの操作
操作したいスイッチに以下のパラメーターで割当てます。
RCx_OPTION=19
自動制御時の指定の仕方
DO_GRIPPERコマンドで行います。0がグリッパーを閉じた状態で、1が開く状態です。