2015年6月6日土曜日

Multiwiiにジンバルを搭載してみました。

巷ではマルチコプターが大変なことになってます。
そのおかげで、やたら規制が多くなって来ているようです。
ここ田舎でも、公園での飛行禁止が検討されていると噂で聞こえてきます。
ということで、今日はジンバルをマルチコプターに取り付けてみました。


Multiwiiのバージョンは2.3です。2.3からはMultiWiiConfのGUIでパラメータが設定できるようになりました。当方GUIはMultiWiiWinGUIを使っていたので気づきませんでした。
また、S-BUSで接続しているせいか、もともと組み込まれていないのかわかりませんが送信機から
ジンバルを制御することができません。どうせなら送信機からも制御できるよう、Multiwiiのプログラムを書き換えてました。

 Cam Stabilisationを有効にするため、“Config.h”を書き換えます。
ジンバルを2軸で制御する場合は、“SERVO_TILT”を有効にします。
シャッターもコントロールするなら“CAMTRIG”を有効にします。

  /************    Cam Stabilisation   ************/
    //#define SERVO_MIX_TILT
    #define SERVO_TILT      <-先頭の“//”を削除する。

    /* camera trigger function : activated via Rc Options in the GUI.........
    // trigger interval can be changed via (*GUI*) or via AUX channel
    // #define CAMTRIG      <-シャッターも使うなら先頭の“//”を削除する。
    #define CAM_TIME_HIGH 1000   // the duration of HIGH state servo expressed in ms



ジンバルのピッチを送信機から操作できるようにする為、“Output.cpp”を書き換えます。
私の場合、T14SGの左の肩のトリムレバーを11CHに割り当てたのでているので“rcData[11]”
としています。

 /**************   Cam stabilize Servos   ******************/

  #if defined(SERVO_TILT)
    servo[0] = get_middle(0) + rcData[11] - 1500;    <-追記します。
    servo[1] = get_middle(1);
    if (rcOptions[BOXCAMSTAB]) {
      servo[0] += ((int32_t)conf.servoConf[0].rate * att.angle[PITCH]) /50L;
      servo[1] += ((int32_t)conf.servoConf[1].rate * att.angle[ROLL])  /50L;
    }
  #endif



MultiWiiConfのセッティング画面です。
CAMSTABとCAMTRIGは有効にしないと動作しませんので、チェックしておきます。
(1)のSELECTSETTINGをクリックすると(2)のSERVOが現れ、SERVOをクリックすると次の画面に遷移します。


MultiWiiConfのGIMBALセッティング画面です。
(3)GIMBALをクリックすると各値が設定できます。
TILT_PROPとROLL_PROPの値は傾きに応じたサーボの角度を設定します。
マイナスを入れるとリバース動作となります。
この例ではTRIGGERが表示されてますが、“Config.h”でCAMTRIGを有効にしないと表示されません。


これで取りあえずジンバルが利用可能となりました。今度はカメラを搭載してみましょう。