電動スタビライザーBeholder EC1が届きました

電子工作に関連したフォーラムです
アバター
tankimono
記事: 419
登録日時: 2015年4月06日(月) 18:30
お住まい: 神戸市北区山田町上谷上

電動スタビライザーBeholder EC1が届きました

投稿記事by tankimono » 2017年5月12日(金) 17:30

以前に購入した電動スタビライザーBeholder DS1が不良品だったため返品交換にあたり新しいモデルに変更手配しました。
画像梱包をあけて早速カメラをマウントしてみました。
全くチューニングしていませんが新しく、高価なだけにDS1と比べて安定性が格段にいいようです。
今後DS1と異なる部分を比較していきたいと思います。
長所
  1. カメラのマウントクイックシューが一般に入手可能な Manfrotto 501クイックリリース互換で呼び購入が簡単である。
  2. カメラのバランス調整時に使用するうロックレバーが其々2箇所が1っ箇所になり閉め忘れ防止になる。
  3. 制御ボード管理のUSBポートがDS1は稼動部するカメラマウント部のマイクロUSBジャックで接触不良をよく起こしていたがEC1は稼動しない手元のホルダー部のMINI USBジャックでリモコンコネクタと異なる形状で誤接続防止になる。
  4. DS1ではGUI制御のマイクロUSBポート経由で制御ボードの電源は供給する事が出来た為、ジンバルの電源が入っていなくてもパラメータやIMUの操作が可能であったがEC1ではジンバルの電源を投入しないと、PCから仮想COMポートに接続できない為、モニターやパラメータ操作時にはジンバルの電源投入が必要です。
  5. プロファイル切替が手元のホルダーに設けられたスイッチで行えディスプレーで現在現在プロファイルが表示され誤操作防止になる。
  6. 電池の消費量がディスプレーに表示される為交換時期が事前に把握できる。
  7. 登載可能重量も1.7Kgから2.0Kgと増え駆動能力がアップした性かDS1より安定性が増したように思われる。
  8. エンコーダーを搭載しているのでIMUのみに依存するDS1に比べて反応が早くYOWの耐性が強よくなったようです。
最後に編集したユーザー 2 [ tankimono ], 累計 2018 回

アバター
tankimono
記事: 419
登録日時: 2015年4月06日(月) 18:30
お住まい: 神戸市北区山田町上谷上

Beholder EC1の微振動の原因調査

投稿記事by tankimono » 2017年5月16日(火) 21:06

NEX-7にSELP18105G 登載時に生じる微振動を調査してみました。
画像左の画像はSimpleBGC GUIアプリのシステムモニタリングで振動を観察した画像です。
赤のラインのGYRO Xで振動を観測しているのがわかります。以前にBeholder DS1で観測したときにタイムスケール1メモリが約850mSecから観測するとスケール当り4サイクルで約5Hzであると判断できます。しかし高調派成分を観測しているのかモニタ周波数成分50Hzを観測表示しています。
そこでLow-passフィルタのフィードバックシグナルLPFのカットオフ周波数を60を40Hzに変更したところ連続的な波形は治まりました。
しかしながら、暫らくすると楽すると何かのトリガで時々振動が入っていました。

そこでGUIのPIDのオートチューニングを行ったところ震動に関しては非常に安定しました。
これをたたき台にジンバルをチューニングして行こうと思っています。

SimpleBGC GUIを使ってBeholder EC1のPIDパラメータによる挙動の調査をGUIのモニタリングを使って始めてみました。


英語の苦手な私としては中々SimpleBGC GUIアプリのマニュアルの理解に苦労しています。
現在。日本語に機械語翻訳したものが無茶苦茶なので少しずつ私が理解出来る様に修正を進めています。
以下に修正中の日本語PDFファイルを添付します。何方か誤訳など私に代わって修正翻訳いただけませんか?
添付ファイル
SimpleBGC_32bit_manual_2_6x_eng2017_11_Hide.pdf
日本語翻訳中のSimpleBGC GUIアプリのマニュアル
(2.6 MiB) ダウンロード数: 1947 回
最後に編集したユーザー 4 [ tankimono ], 累計 2018 回

アバター
tankimono
記事: 419
登録日時: 2015年4月06日(月) 18:30
お住まい: 神戸市北区山田町上谷上

SimpleBGCのノッチフィルタで震動の除去を行う

投稿記事by tankimono » 2017年10月01日(日) 10:17

搭載するカメラを新調しました。
久しぶりに、今まで搭載していたSonyのNEX-7から新調したSonyのα7R2に乗せ変えたところ今迄も少し発振気味な挙動を見せる事がありましたがウォーミングアップすると収まっていました。
しかし今回はカメラ重量が少し増え寸法も少し大きくなった事から重心からの距離も大きくなりイナーシャーが大きくなる為、固有の機械震動の周波数が変わり振動も大きくなった様で微振動が収まりません。

そもそも、この微震動は音響の世界では、お馴染みのハウリングと同じで、ジンバルを駆動する動力でフレームの硬性によるたわみ(スプリング効果)と電気的なPIDフィードバック制御ループ内の位相遅延から正帰還が生じて、固有の共振周波数でフィードバック・ループ内のゲインが発振の条件の1以上と、成ってしまい振動・発振が起こっているのです。

そこで、SimpleBGCのファームウェアに備わっているノッチフィルターに固有震動周波数を設定する事で、このループゲインを1以下にして震動の減衰・抑制を行う為に、SimpleBGCのGUIツールで観測とパラメータ設定が体系的に見事に行えましたので、その方法をここに記載します。

ノッチフィルタによる固有震動の抑制方法
  1. 震動の固有周波数を観測・測定する
    • この観測はSimpleBGCのGUIでモニター・タブページでビジブルに行えます。
    • モニター・タブページでゲインスライダーで縦軸のゲインを上げると各軸の震動の振幅が増幅されて顕著に震動の有無が確認可能です。
    • 垂直に震動している波形が確認できると、この固有震動の周波数を確認します。
    • これを行うにはReceive extendede infoのチェックボックスにチェックを入れることで各軸の震動周波数がFREQ_軸のテキストボックスに表示される様になり、目的のFREQ_軸項目に表示される周波数(Hz)を確認します。
  2. ノッチフィルタに固有震動域のフィルタのパラメータを設定して固有震動を抑制する。
    • StabilizationタブページのNotch filters項目の各軸のFrequency,Hz(ノッチフィルタの中心周波数) Width,Hz(フルターの帯域幅) Gain,dB(減衰ゲイン)等の数値のアップダウン・エディット・ボックスにパラメータを設定する。
    • Frequency,Hz(ノッチフィルタの中心周波数)には先ほどモニター・タブページで確認した振動周波数を設定します。
    •  Width,Hz(フルターの帯域幅)の数値のアップダウン・エディット・ボックスにはモニター・タブページで確認した時の数値のバラついていた範囲の最大と最小の周波数帯域幅を入力します。
    • Gain,dB(減衰ゲイン)にはSimpleBGC GUIアプリのマニュアルV2.6xのP44によると振動が大きい場合には最大で100dB、振動が軽微な共振のみを補正する場合には20dB未満に設定するよう記載されています。
    • この設定したパラメータを有効にするには設定項目のチェックボックスにチェックをいれた後にプロファイルをジンバルのSimpleBGC制御ボードに書き込みます。
  3. この設定したノッチフィルタの効果をモニター・タブページに切り換えて振動が収まった事を確認します。
  4. 以上のように行った結果、闇雲にカット&トライする事無く体系的且つ効率的に、この検証ビデオの様に電動ジンバルの震動抑制がSimpleBGC制御ボードのファームにインクリメントされているデジタル・ノッチフィルタ機能で簡単に行えました。

    • 共振周波数は以下の条件などで変動するのでその条件での共振する発振周波数に於いてノッチフィルタのパラメータを設定して効率的且つ副作用の起きないパラメータを設定する必要があります。
      副作用とは、実際に振動している周波数以外にノッチフィルタやローパスフィルターでフィルタをかけてしまったり、必要以上の減衰ゲイン(フィードバックループゲインが1以下に成れば振動は継続しないので、それ以上に設定ゲインを上げる必要はない)を上げてしまうと、実際に外的な要因での変異や制御変異を掴めず敏感な動作が行えずに緩慢な制御に成ってしまいます。
    • 共振・発振周波数はジンバルに搭載するカメラやレンズの重量と回転イナーシャ(同じ重さでもゴルフのウッドとアイアンやメトロノームの振り子のウェート位置などと同じ様に、重心からの寸法等)で変わります。
    • ジンバルの傾きやカメラの向き等でジンバルのフレームに加わる重力加速度による力でたわみが変化しする為、共振周波数が変動します。
    • ジンバルのSimpleBGCのPID制御のパラメータを変更する事で変わります。
    • 厳密にはジンバルの電源(リチュームイオン電池)の電圧(電池の容量残値)で電池内部抵抗が変動するのでモータトルクが変動する為、共振周波数が変動するかもしれませんが、この程度はノッチフィルタのWidth,hz(フルターの帯域幅)を大きめに設定する事で吸収できるでしょう。
    以上の様にGUIで簡単にノッチフィルタのパラメータを設定する事で厄介なジンバルの保持力と相反する共振問題が簡単に解決できそうです。

アバター
tankimono
記事: 419
登録日時: 2015年4月06日(月) 18:30
お住まい: 神戸市北区山田町上谷上

電動スタビライザーBeholder EC1をスクリプトで制御する。

投稿記事by tankimono » 2017年10月21日(土) 18:26

今回は、SimpleBGCに備わっている、ユーザースクリプトを作成してみる事にしました。
私の使用している、電動ジンバルのBeholder EC1は、SimpleBGC制御ボードで制御されていますがSimpleBGCではSimpleBGCのGUIユーザーマニュアルにも記載されていますが、ユーザースクリプトがサポートされています。
 このスクリプトを利用すると、電動ジンバルを使用する上で調整や、撮影時に自分独自の便利な機能を実装できそうです。
この辺りの情報があまり、公開されていないようなので少し調査してみる事にしました。
スクリプトの制御言語のマニュアルはSimpleBGCのGUIのスクリプトページタブの、右下にある、Language Refarenceをクリックする事でbasecamelectronicsのサイトからダウンロードが可能ですがオリジナルのマニュアルは私の苦手な英語で記載されています。
そこで、以前にSimpleBGCのGUIユーザーマニュアルを日本語に翻訳して大まかには理解出来たように、今回はスクリプト言語リファレンスマニュアルの翻訳から行い、大まかにはスクリプトの体系が理解できました。
そこで、巻末に記載されているExampleから応用して使用できそうなスクリプトを一部書き換えてテストして見ました。

コード: 全て選択

########################################################
# 上方に10チルトし左右に90パン後に原点に戻るスクリプト
########################################################
# YAWの原点をリセットする:現在の方位角で録画を開始する
R
# 動きのスムーズな開始と停止のための低加速設定
CONFIG ACC_LIMIT_Y(5)
CONFIG ACC_LIMIT_R(5)
CONFIG ACC_LIMIT_P(5)
# カメラを10度上向けて水平にします
A RA(0) PA(-10) YA(0)
# 録画を開始する
T 16(1)
# フリーズを3秒間置く。
D TIMEOUT(3)
# 5度/秒の速度でパンニングする。 反時計回り
S YS(-5)
# 90度回転するまで待ってください。
W YA(-90)
# パンニングを停止します(ここでは非加速が開始されます)。
S YS(0)
# 減速が終了するまで待つ
W YS(0)
# フリーズを3秒間置く。
D TIMEOUT(3)

# 5度/秒の速度でパンニングする。 時計回り
S YS(5)
# 180度回転するまで待ってください。
W YA(90)
# パンニングを停止します(ここでは非加速が開始されます)。
S YS(0)
# 減速が終了するまで待つ
W YS(0)
# フリーズを3秒間置く。
D TIMEOUT(3)
# 5度/秒の速度でパンニングする。 反時計回り
S YS(-5)
# -90度回転するまで待ってください。
W YA(0)
# パンニングを停止します(ここでは非加速が開始されます)。
S YS(0)
# 減速が終了するまで待つ
W YS(0)
# フリーズを3秒間置く。
D TIMEOUT(3)
# 録画を停止する
T 16(0)
# カメラを水平にします
A RA(0) PA(0) YA(0)
### End of program ###

このスクリプトでは、自動的にカメラのシャッターや記録開始の出力をSimpleBGCの物理ポートがマッピングされたピンIDを選択してON、OFFが可能ですが、私のBeholder EC1では、この様な物理ポートの空き状況もわかりませんし、外部へアクセスできるようなコネクターも設けられていないので、シャッターや録画開始のSimpleBGCの物理ポートへの制御は諦めました。
しかし、カメラ側でカメラのリモコンやアプリで自動シャッターなどがおこなえれば、自動パンやチルト動作時にタイム・ラプス撮影などが行えそうです。
以下のビデオは、実際に上記のスクリプトを実験的にSimpleBGC GUIでBeholder EC1に実装して動作テストを行った検証ビデオです。

スクリプト言語リファレンスの概略
  1. 一般的なルール
    1. 各行には1つのコマンドしか含めることができません
    2. コマンドはスペースで区切られた任意の数の名前付きパラメータを持つことができます。 パラメータの順序は重要ではありません。 すべてのパラメータはオプションです。
    3. すべての値は小数部をドットで区切って10進表記で指定する必要があります。 分数部分は省略できます。
    4. #文字で始まるコメントを追加することができます
  2. コマンド記法:
    ANGLE RA(10) PA(10) ...
    いくつかのコマンドは、1文字の省略形を持つことがあります。

  3. リアルタイムで制御されるパラメータ*
    任意のコマンドのパラメータの値は、RC信号ソースのいずれかにリンクすることによって、プログラムの実行中に動的に更新することができます。 信号源名とパラメータの値の希望範囲を指定するだけで、RC信号がキャプチャされ、コマンドの開始時にこの範囲にマッピングされます。 コマンド実行中に値が更新されないことに注意してください。 使用可能なRC信号源名は、付録3にリストされています。
    記法:
    (<source_name>[<min_value>,<max_value>])
    例:
    ANGLE RA(ADC1[-50,50]) PA(RC_VIRT_CH_1[0,90])
    * ファームウェアver.2.60b3以降

  4. コマンドリファレンス
    1. A, ANGLE —指定された速度での絶対角度への回転コマンドはプログラムを停止し、角度が所定の値に達するまで待機します。 回転は最短経路で行われます。
      ±180度以上の相対角度でカメラを回転させたい場合は、代わりにINCコマンドを使用します。 各軸の速度を設定できます。 速度が設定されていない場合は、設定またはコマンド "CONFIG"で定義されている現在の値が使用されます。
      Parameters:
      RA(10.0) - ROLL軸による目標角度(度)
      PA(10.0) - PITCH軸による目標角度
      YA(10.0) - YAW軸による目標角度
      RS(10.0) — ロール軸、度/秒で速度。 範囲0..2000
      PS(10.0) - ピッチ軸による速度
      YS(10.0) - YAW軸による速度
      TIMEOUT(60.0) – 待機タイムアウト。 指定しない場合、デフォルトで60秒です。 (ファームウェアver.2.59 +でサポート)
      Example:
      A RA(0) PA(0) YA(0)# すべての軸でホームポジションに移動する
      A YA(70) YS(1) # YAWを速度1度/秒で70度に回転させます。

    2. I, INC - 所定の速度での相対角度による回転コマンドはプログラムを停止し、角度が所定の値だけ回転するまで待機します。 角度は2ターンを超えてはならない。
      Parameters:
      RA(10.0) — ROLL軸による目標角度(度)。 範囲-720~720
      PA(10.0) - PITCH軸による目標角度
      YA(10.0) - YAW軸による目標角度
      RS(10.0) — ロール軸、度/秒で速度。 範囲0..2000
      PS(10.0) - ピッチ軸による速度
      YS(10.0) - YAW軸による速度
      TIMEOUT(60.0) – 待機タイムアウト。 指定しない場合、デフォルトで60秒です。 (ファームウェアver.2.59 +でサポート)
      Example:
      I YA(270) # YAWによって現在位置から270度回転する

    3. S, SPEED - 他のコマンドSPEED、ANGLE、INCまたはプログラムの終わりに達するまで、与えられた速度で回転します。
      カメラが動き出し、プログラムの実行が遅れることなく継続されます。
      Parameters:
      RS(10.0) — ロール軸、度/秒で速度。 範囲-2000..2000。
      PS(10.0) - PITCH軸による速度
      YS(10.0) - YAW軸による速度
      Example:
      S YS(5.5)
      S RS(0) PS(0) YS(0)
      # YAWによるパンニング(速度5.5度/秒)
      # 完全停止

    4. R, RESET —現在の位置にYAW angle = 0を設定します。
      パラメータ:
      no

    5. T, TRIGGER — 出力ピンの状態をトリガする
      Parameters:
      1(0) — pin ID * and its state: 0 - LOW, 1 — HIGH.
      TIMEOUT(0.01) – プログラムの実行は、指定された時間(秒単位)で遅延します。**タイムアウトの最後に、指定されたピンは自動的に以前の状態に戻ります。
      * ピンIDと物理ポートの間のマッピングは、付録1にあります。ピンには他の機能がないようにしてください(たとえば、RC設定タブでは入力として使用しないでください)。
      **精度は±1ミリ秒です。 タイムアウトを指定すると、たとえば、HDR画像を撮影するときに手動でシャッタースピードを設定すると便利です。
      Example:
      T 1(1) 2(1)
      T 1(1) TIMEOUT(0.020)
      # スイッチはID = 1,2をHIGH状態に出力する
      # 出力ID = 1をHIGH状態に切り替え、
      LOW after 20ms

    6. SERVO — 指定されたピンにPWM信号パルス幅を設定する
      このコマンドは、特別なピンへのPWM信号のアウトプットを支えるサーボ連結参照を制御するのに使用されます。GUI(RC--PWM Output--PWM Rate、Hz)でPWMレートを変えることができます。
      Parameters:
      1(1500) — サーボID *およびパルス持続時間、マイクロ秒。 通常のサーボ値は、900〜2100の範囲
      内にあります。 特殊値-1はピンを解放し、ハイインピーダンス入力にします。
      TIME(3)** — 目標位置までの移動時間(秒)
      TIMEOUT(1) — ターゲットに達すると、プログラムの実行は指定された時間(秒単位)遅れます。
      * サーボIDと物理ポートの間のマッピングは付録1にあります。ピンには他の機能がないようにしてください(たとえば、RC設定タブでは入力として使用しないでください)。
      **ファームウェアver。 2.5倍以上
      Example:
      SERVO 1(1500) 2(1500) # 2つのサーボを中間の位置に移動する
      SERVO 1(1000) TIME(3) # 3秒で1500から1000にゆっくりと移動する
      SERVO 1(2000) TIMEOUT(1) # 新しい値を設定して1秒待つ
      SERVO 1(-1) 2(-1) # 2つの出力を解放(ハイ・インピーダンス)にする

    7. D, DELAY - プログラム実行の遅延
      Parameters:
      TIMEOUT(10) — 遅延(秒)。 精度±1ミリ秒。
      Example:
      D TIMEOUT(0.300) # 300ミリ秒の遅延

    8. W, WAIT – 指定された角度または速度を待つ
      プログラムの実行は、指定されたすべての条件が満たされるか、または所定のタイムアウトが満了するまで遅延されます。
      Parameters:
      RA(10.0) — ROLL軸による角度(度)
      PA(10.0) — ピッチ軸による角度
      YA(10.0) — YAW軸による角度
      RS(0) - ROLL軸の速度(度/秒)。
      PS(0) - ピッチ軸による速度
      YS(0) - YAW軸による速度
      TIMEOUT(10) – 待ち時間の最大値(秒)。 デフォルトは60秒です。
      Example:
      W YA(30)
      W RA(0) PA(0) YA(0)
      W YS(0) TIMEOUT(1)
      # YAW角= 30度を待つ
      # すべての軸に対して角度= 0を待つ
      # YAW軸で動作を停止するのを待つが、1秒を超えない

    9. CONFIG — プログラムの実行に使用されるいくつかのパラメータを設定する
      Parameters:
      • ACC_LIMIT_R(100), ACC_LIMIT_P(100), ACC_LIMIT_Y(100) — ROLL、PITCH、YAW軸の加速度制限、度/sec²
      • SPEED_R(10), SPEED_P(10), SPEED_Y(10) — ROLL、PITCH、YAW軸のスピード、度/秒。範囲は0..2000です。 初期値は "RC SPEED"パラメータから取得されます
      • INIT_SYSTEM_ON_FINISH(1) (ver. 2.60b3+) – 1(デフォルト)に設定すると、スクリプトが終了するとシステムが再初期化されます(すべてのパラメータとモードがデフォルトに戻ります)。
        0に設定すると、システムは現在の状態になります。
      • JERK_SLOPE_R(50), JERK_SLOPE_P(50), JERK_SLOPE_Y(50) (ver. 2.66+) —
        ROLL、PITCH、YAW軸のジャークリミッタ、ms単位の立ち上がり/立ち下がり時間変更されたパラメータは永続メモリに保存されず、プログラムが終了すると元の値にリセットされます。
      Example:
      С ACC_LIMIT_R(100)SPEED_Y(5)#ロール軸の加速度制限を100度/sec²に設定し、YAW軸の速度を5度/秒に設定します。

    10. MENU_CMD — メニューコマンドを実行する(バージョン2.60b3 +)
      Parameters:
      CMD_ID(10) – 実行するコマンドID。 コマンドの完全なリストは付録にリストされています
      2. そこにコマンドがない場合は、シリアルAPIのマニュアルに記載されています。 スクリプトパーサーはコマンドが完了するのを待たない!
      TIMEOUT(1) – プログラムの実行は、指定された時間(秒)だけ遅延します。

    11. SET_ADJ_VAR — 可変変数(ver。2.61+)の値を設定する
      Parameters:
      NAME(GYRO_TRUST) – 変数の名前。 すべての名前は、SBGC32ユーザーマニュアル「調整可能な変数」セクションに記載されています。
      VALUE(100) – 設定する新しい値。1つのコマンドでNAME-VALUEを5組まで指定できます。
  5. ピンIDと物理ポートのマッピング








    ボード上のラベル付け   トリガ・ピンID  サーボID
    RC_ROLL   1   -
    RC_PITCH   2   3
    RC_YAW   5   -
    EXT_FC_ROLL   3   1
    EXT_FC_PITCH   4   2
    AUX1   16   4
    AUX2   17   -
    AXU3   18   - 
    BUZZER  32   -

  6. メニューコマンド

    コード: 全て選択

    MENU_CMD_NO = 0
    MENU_CMD_PROFILE1 = 1
    MENU_CMD_PROFILE2 = 2
    MENU_CMD_PROFILE3 = 3
    MENU_CMD_SWAP_PITCH_ROLL = 4
    MENU_CMD_SWAP_YAW_ROLL = 5
    MENU_CMD_CALIB_ACC = 6
    MENU_CMD_RESET = 7
    MENU_CMD_SET_ANGLE = 8
    MENU_CMD_CALIB_GYRO = 9
    MENU_CMD_MOTOR_TOGGLE = 10
    MENU_CMD_MOTOR_ON = 11
    MENU_CMD_MOTOR_OFF = 12
    MENU_CMD_FRAME_UPSIDE_DOWN = 13
    MENU_CMD_PROFILE4 = 14
    MENU_CMD_PROFILE5 = 15
    MENU_CMD_AUTO_PID = 16
    MENU_CMD_LOOK_DOWN = 17
    MENU_CMD_HOME_POSITION = 18
    MENU_CMD_RC_BIND = 19
    MENU_CMD_CALIB_GYRO_TEMP = 20
    MENU_CMD_CALIB_ACC_TEMP = 21
    MENU_CMD_BUTTON_PRESS = 22
    MENU_CMD_RUN_SCRIPT1 = 23
    MENU_CMD_RUN_SCRIPT2 = 24
    MENU_CMD_RUN_SCRIPT3 = 25
    MENU_CMD_RUN_SCRIPT4 = 26
    MENU_CMD_RUN_SCRIPT5 = 27
    MENU_CMD_CALIB_MAG = 33
    MENU_CMD_LEVEL_ROLL_PITCH = 34
    MENU_CMD_CENTER_YAW = 35
    MENU_CMD_UNTWIST_CABLES = 36
    MENU_CMD_SET_ANGLE_NO_SAVE = 37
    MENU_HOME_POSITION_SHORTEST = 38
    MENU_CENTER_YAW_SHORTEST = 39

  7. RC信号ソース名(付録3)
    PWMフォーマットのハードウェア入力:

    コード: 全て選択

    RC_ROLL_PWM
    RC_PITCH_PWM
    RC_YAW_PWM
    FC_ROLL_PWM
    FC_PITCH_PWM

    RC入力を有効にする必要があります(RC設定で任意の軸またはCMDチャンネルの制御に割り当てられている)。

    アナログ入力(ジョイスティック接続):

    コード: 全て選択

    ADC1
    ADC2
    ADC3


    Sum-PPMまたはシリアルプロトコル(Spektrum、s-bus):

    コード: 全て選択

    RC_VIRT_CH_1
    RC_VIRT_CH_2
    ..
    RC_VIRT_CH_31

    必要なシリアルプロトコルは、RC設定で選択する必要があります;
    チャンネル20..31は特別な意味を持っています。それらはモータの角度のsin、cosにリンクされています。

    シリアルAPI仮想チャネル(SBGCシリアルAPIプロトコルで接続された外部デバイスまたはモバイルアプリケーショ
    ンによって設定可能):

    コード: 全て選択

    API_VIRT_CH_1
    API_VIRT_CH_2
    ..
    API_VIRT_CH_31
最後に編集したユーザー 7 [ tankimono ], 累計 2018 回

アバター
tankimono
記事: 419
登録日時: 2015年4月06日(月) 18:30
お住まい: 神戸市北区山田町上谷上

SimpleBGCのユーザースクリプトでタイムラップス撮影用のユーザースクリプト

投稿記事by tankimono » 2017年10月22日(日) 12:41

今回、SimpleBGCのユーザースクリプトでタイムラップス撮影用のユーザースクリプトをスクリプト言語リファレンスマニュアルのExampleを参考に作成してみました。

このスクリプトでは最初にジンバルのキャリブレーションを自動的に実行してジャイロスコープのドリフトを最小限に抑えて実行いたします。
作製したスクリプト

コード: 全て選択

#ジャイロスコープのドリフトを最小限に抑えたタイムラプス撮影
#############################################################
# 1. ジャイロスコープのキャリブレーションをリフレッシュする
# モーターをOFFにして3秒間待って、振動を止めます。
MENU_CMD CMD_ID(12) TIMEOUT(3)
# ジャイロスコープのキャリブレーション
MENU_CMD CMD_ID(9) TIMEOUT(4)
# モーターをONにする
MENU_CMD CMD_ID(11)
# 2. フレームが静止していることをシステムに知らせ、ジャイロスコープのドリフトを補償する;
# この操作を実行するには、'Above YAW'ポジションにフレームIMUがが実装されているか、またはエンコーダタイプのジンバルが必要です。
SET_ADJ_VAR NAME(FRAME_HEADING_ANGLE) VALUE(0)
# ドリフトをより良く補償するために、 'ジャイロトラスト'パラメータを十分に低く設定します
SET_ADJ_VAR NAME(GYRO_TRUST) VALUE(60)
# 3. カメラを希望の初期位置に移動する
ANGLE PA(0) RA(0)
# 5秒間一時停止する
DELAY TIMEOUT(5)
# 4. タイムラプス撮影を開始する
# 0.3度/秒の速度で右にパンします。 90度、0.05度/秒の速度で上に15度傾けます。
# ターゲットに達する前にコマンドの中断を防ぐのに十分な大きさのタイムアウトを設定します。
INC YS(0.3) YA(90) PS(0.05) PA(-15) TIMEOUT(500)
# カメラを0.6度/秒の速度で下向きに相対角度30度
INC PS(0.6) PA(30) TIMEOUT(500)
# 0.3度/秒の速度で左にパンします。 相対角度90度、0.1度/秒の速度で上に相対角度30度傾けます。
INC YS(0.3) YA(-90) PS(0.1) PA(-30) TIMEOUT(500)
# 5秒間一時停止する
DELAY TIMEOUT(5)
# カメラを原点に戻す
ANGLE PA(0) RA(0) YA(0)
# ジンバルをプロファイル3(フォローモード)にして終了する。
MENU_CMD CMD_ID(3) TIMEOUT(3)


作製したスクリプトの実行状態ビデオ

このスクリプトのパラメータを変更して御自分の用途に合うスクリプトを作成されてみては如何ですか?

アバター
tankimono
記事: 419
登録日時: 2015年4月06日(月) 18:30
お住まい: 神戸市北区山田町上谷上

電動スタビライザーのBeholder EC1でタイムラプス撮影が可能か?

投稿記事by tankimono » 2017年10月24日(火) 08:09

前述のSimpleBGCのユーザースクリプトでタイムラップス撮影用で撮影テストを行っています。
今の所下に掲載のビデオのようにジャギーが発生し実使用には?

実際テストを行うには撮影時間が馬鹿にならないので色々、ジンバルの駆動定数を調整していますが、現在の所、納得のいく結果にはなっていません。
私のカメラのタイムラプス撮影アプリで撮影していますがシャッター間隔の最低インターバルが3秒?
タイムラプス動画を作成すると30FPSという事も有って最初の内はパン速度を毎秒0.3度に設定してテストした所、ひとコマ辺り0.9度、動画では一秒当たり27度の角速度になってしまい、速すぎます?
そこで角速度を1/3の毎秒0.1度に設定してみましたが、何かぎこちない動きのようです。
角速度を毎秒0.1度に落としてタイムラプス撮影した動画を確認してみると、大分スムーズな動きにはなってきていますが、この様にジャギー的な動きになってしまいます。
これは、どうもジンバルの問題では無いかと疑い始めています。
実際、角速度を、この半分の毎秒0.05度で駆動すると計算上は動画では毎秒1.5度と成るはずです。
これをタイムラプス動画を20%の速度のビデオで確認したところ、10フレーム毎に画像が動いているようです。
これを逆算するとスチルの2枚に一回、動いている計算になります。

この設定では、逆に言うとスチル撮影時には6秒に一回の割でジンバルが動いている計算になってしまいます。
この時のスクリプトではパン方向には毎秒0.05度と、ピッチ方向には毎秒0.01度駆動するプログラムで動作しています。
このスクリプトから動きの大きいパン方向の毎秒0.05度が直接に影響していると考えるのが妥当と思われます。
これらから考えると、先ほどの6秒間では0.3度動く計算になり、ジンバルの駆動の分解能は0.3度程度ではないかと考えています。

使用したスクリプト

コード: 全て選択

#ジャイロスコープのドリフトを最小限に抑えたタイムラプス撮影
#############################################################
# 1. ジャイロスコープのキャリブレーションをリフレッシュする
# モーターをOFFにして3秒間待って、振動を止めます。
MENU_CMD CMD_ID(12) TIMEOUT(3)
# ジャイロスコープのキャリブレーション
MENU_CMD CMD_ID(9) TIMEOUT(4)
# モーターをONにする
MENU_CMD CMD_ID(11)
# 2. フレームが静止していることをシステムに知らせ、ジャイロスコープのドリフトを補償する;
# この操作を実行するには、'Above YAW'ポジションにフレームIMUがが実装されているか、またはエンコーダタイプのジンバルが必要です。
SET_ADJ_VAR NAME(FRAME_HEADING_ANGLE) VALUE(0)
# ドリフトをより良く補償するために、 'ジャイロトラスト'パラメータを十分に低く設定します
SET_ADJ_VAR NAME(GYRO_TRUST) VALUE(60)
# 3. カメラを希望の初期位置に移動する
ANGLE PA(0) RA(0)
# 5秒間一時停止する
DELAY TIMEOUT(5)
# 4. タイムラプス撮影を開始する
# 0.05度/秒の速度で右にパンします。 45度、0.01度/秒の速度で上に9度傾けます。900秒
# ターゲットに達する前にコマンドの中断を防ぐのに十分な大きさのタイムアウトを設定します。
INC YS(0.05) YA(45) PS(0.01) PA(-9) TIMEOUT(1000)
# カメラを0.05度/秒の速度で下向きに相対角度18度 360秒
INC PS(0.05) PA(18) TIMEOUT(500)
# 0.05度/秒の速度で左にパンします。 相対角度45度、0.02度/秒の速度で上に相対角度18度傾けます。900秒 合計2160秒(36分間)
INC YS(0.05) YA(-45) PS(0.02) PA(-18) TIMEOUT(1000)
# 5秒間一時停止する
DELAY TIMEOUT(5)
# カメラを原点に戻す
ANGLE PA(0) RA(0) YA(0)
# ジンバルをプロファイル3(フォローモード)にして終了する。
MENU_CMD CMD_ID(3) TIMEOUT(3)


これは、ジンバルに使われてダイレクト駆動しているブラシレス・モータすなわちステッピング・モーターの磁極数が22極フルステップで駆動すると分解能は約16度、ハーフ・ステップ駆動の場合でも約8度の制御分解能となるためPWMによるマイクロステップ駆動で動作していると思われます。
この場合PWMの分解能が8bitの場合は16度割る256は0.06度の分解能と成り今回のジャギーの5倍精度と言う事となり、理論上は動画の5倍の滑らかさで駆動できる事となります。
そうなると、今回の問題はジンバルの位置を把握する加速度センサーIMUセンサーの分解能16ビット、地磁気センサーの分解能12ビットから考えるとBeholder EC1のボトルネックはエンコーダーの分解能が一番疑わしいように思えます。
或いは、スクリプトの角速度変数の分解能が0.3度程度、10ビットの1/1024程度なのかもしれません。

もう少し、スクリプトの精度を上げて長時間駆動でテストを行い結論を出したいと思います。
このあたりの情報をお持ちの方から情報をいただければ有り難いです。

この画像は、ジンバルのスクリプトとは関係ありませんが気分転換に撮影しました。


電子工作へ戻る

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]