/*! * vue-resource v1.4.0 * https://github.com/pagekit/vue-resource * Released under the MIT License. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueResource=e()}(this,function(){"use strict";var t=2;function e(e){this.state=t,this.value=void 0,this.deferred=[];var n=this;try{e(function(t){n.resolve(t)},function(t){n.reject(t)})}catch(t){n.reject(t)}}e.reject=function(t){return new e(function(e,n){n(t)})},e.resolve=function(t){return new e(function(e,n){e(t)})},e.all=function(t){return new e(function(n,o){var r=0,i=[];function s(e){return function(o){i[e]=o,(r+=1)===t.length&&n(i)}}0===t.length&&n(i);for(var u=0;u=200&&a<300,this.status=a||0,this.statusText=c||"",this.headers=new q(u),this.body=t,d(t)?this.bodyText=t:(i=t,"undefined"!=typeof Blob&&i instanceof Blob&&(this.bodyBlob=t,(0===(r=t).type.indexOf("text")||-1!==r.type.indexOf("json"))&&(this.bodyText=(n=t,new o(function(t){var e=new FileReader;e.readAsText(n),e.onload=function(){t(e.result)}})))))};L.prototype.blob=function(){return v(this.bodyBlob)},L.prototype.text=function(){return v(this.bodyText)},L.prototype.json=function(){return v(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(L.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var B=function(t){var e;this.body=null,this.params={},w(this,t,{method:(e=t.method||"GET",e?e.toUpperCase():"")}),this.headers instanceof q||(this.headers=new q(this.headers))};B.prototype.getUrl=function(){return $(this)},B.prototype.getBody=function(){return this.body},B.prototype.respondWith=function(t,e){return new L(t,w(e||{},{url:this.getUrl()}))};var M={"Content-Type":"application/json;charset=utf-8"};function N(t){var e=this||{},n=function(t){var e=[I],n=[];function r(r){for(;e.length;){var i=e.pop();if(l(i)){var s=void 0,u=void 0;if(m(s=i.call(t,r,function(t){return u=t})||u))return new o(function(e,o){n.forEach(function(e){s=v(s,function(n){return e.call(t,n)||n},o)}),v(s,e,o)},t);l(s)&&n.unshift(s)}else c="Invalid interceptor of type "+typeof i+", must be a function","undefined"!=typeof console&&a&&console.warn("[VueResource warn]: "+c)}var c}return m(t)||(t=null),r.use=function(t){e.push(t)},r}(e.$vm);return function(t){u.call(arguments,1).forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])})}(t||{},e.$options,N.options),N.interceptors.forEach(function(t){d(t)&&(t=N.interceptor[t]),l(t)&&n.use(t)}),n(new B(t)).then(function(t){return t.ok?t:o.reject(t)},function(t){var e;return t instanceof Error&&(e=t,"undefined"!=typeof console&&console.error(e)),o.reject(t)})}function D(t,e,n,o){var r=this||{},i={};return g(n=w({},D.actions,n),function(n,s){n=T({url:t,params:w({},e)},o,n),i[s]=function(){return(r.$http||N)(function(t,e){var n,o=w({},t),r={};switch(e.length){case 2:r=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(o.method)?n=e[0]:r=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return o.body=n,o.params=w({},o.params,r),o}(n,arguments))}}),i}function J(t){var e,n,r;J.installed||(n=(e=t).config,r=e.nextTick,i=r,a=n.debug||!n.silent,t.url=$,t.http=N,t.resource=D,t.Promise=o,Object.defineProperties(t.prototype,{$url:{get:function(){return b(t.url,this,this.$options.url)}},$http:{get:function(){return b(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}return N.options={},N.headers={put:M,post:M,patch:M,delete:M,common:{Accept:"application/json, text/plain, */*"},custom:{}},N.interceptor={before:function(t){l(t.before)&&t.before.call(this,t)},method:function(t){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST")},jsonp:function(t){"JSONP"==t.method&&(t.client=A)},json:function(t){var e=t.headers.get("Content-Type")||"";return m(t.body)&&0===e.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),function(t){return t.bodyText?v(t.text(),function(e){var n,o;if(0===(t.headers.get("Content-Type")||"").indexOf("application/json")||(o=(n=e).match(/^\s*(\[|\{)/))&&{"[":/]\s*$/,"{":/}\s*$/}[o[1]].test(n))try{t.body=JSON.parse(e)}catch(e){t.body=null}else t.body=e;return t}):t}},form:function(t){var e;e=t.body,"undefined"!=typeof FormData&&e instanceof FormData?t.headers.delete("Content-Type"):m(t.body)&&t.emulateJSON&&(t.body=$.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded"))},header:function(t){g(w({},N.headers.common,t.crossOrigin?{}:N.headers.custom,N.headers[p(t.method)]),function(e,n){t.headers.has(n)||t.headers.set(n,e)})},cors:function(t){if(c){var e=$.parse(location.href),n=$.parse(t.getUrl());n.protocol===e.protocol&&n.host===e.host||(t.crossOrigin=!0,t.emulateHTTP=!1,R||(t.client=U))}}},N.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){N[t]=function(e,n){return this(w(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){N[t]=function(e,n,o){return this(w(o||{},{url:e,method:t,body:n}))}}),D.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(J),J}); /*Click Away*/ !function(e,t){"use strict";function n(e,t,n){i(e);var u=n.context,a=t.value;if("function"==typeof a){var c=!1;setTimeout(function(){c=!0},0),e[o]=function(t){var n=t.path||(t.composedPath?t.composedPath():void 0);if(c&&(n?n.indexOf(e)<0:!e.contains(t.target)))return a.call(u,t)},document.documentElement.addEventListener("click",e[o],!1)}}function i(e){document.documentElement.removeEventListener("click",e[o],!1),delete e[o]}t="default"in t?t.default:t;/^2\./.test(t.version)||t.util.warn("VueClickaway 2.2.2 only supports Vue 2.x, and does not support Vue "+t.version);var o="_vue_clickaway_handler",u={bind:n,update:function(e,t){t.value!==t.oldValue&&n(e,t)},unbind:i},a={directives:{onClickaway:u}};e.version="2.2.2",e.directive=u,e.mixin=a}(this.VueClickaway={},Vue); ジンバルセッティング・ソフト編【YUN-1 SIMPLE BGC GIMBAL】 | MadaMada

ジンバルセッティング・ソフト編【YUN-1 SIMPLE BGC GIMBAL】

とりあえず、調子良く動いてます。


いいでしょ(笑)

こんな風に動かすには、時に激しく時に優しく、ってなんのこっちゃ。
ハード、つまりジンバル本体のセッティングに続いては、ソフトの方。
コントローラーとその中身のセッティング編。

Yun1_gimbal2

基本は「マニュアル読め。」なんですけどね(笑)
 
セットアップの手順はすごく簡単。

  1. YUN-1 Assistantをインストール。
  2. USBでPCとコントローラーを繋ぐ。
  3. 自動的にドライバーのインストールがはじまり、YUN-1 Assistantが立ち上がる。
  4. YUN-1の推奨値をインプット
  5. ウィンウィングリグリして楽しむ

て、さらりと書いたけど…ボクはYUN-1 ASSISTANTに繋ぐところでつまずいた。USB connect testingでスタックして先に進まず…
結局、本家のSimple BGC GUIを使うことにして、コントローラーのファームも上書きしたった。
YUN-1 AssistantとSimple BGC GUIはI/Fこそ違えど、中身は同じAlexMos。
どちらのソフトを使ってもOKです。

YUN-1のマニュアルは、意外にもセッティングに関してはしっかり書いてあるので、キャリブレーションやPID制御ってなんぞや?って頭真っ白状態でも、とにかくマニュアル読めばわかります。
 
とりあえず注意点
  • 起動時やセッティングWrite時は
    ジンバルがじわじわと水平で停止するまでは動かしちゃダメ。動かすとジンバルが荒ぶります(笑)
  • ジンバルがキ○ガイじみたメチャクチャな動きをはじめたら
    速やかに息の根(電源)断ちましょう(笑) I2Cエラーかバランスがおかしいことが原因death。
  • 設定時のI2Cエラーからの復旧は
    コントローラー電源、USBを抜いて、ソフトも落とす。その後、コントローラー電源→USB接続→ソフト立ち上げ→PORT選択の順で再度トライすると直るかと。
  • それでも直らない時は
    IMUの固定が甘くないか(クッション性のある両面使うと良いかも)
    IMUのハンダが甘くないか?何処かショートしてないか?ワイヤーにストレス掛ってないか?その辺チェック
  • ACCキャリブレーションは
    USB電源のみで行うが吉。バッテリーを繋ぐとモーターが無駄に動きやがるので、キャリブレーション後にバッテリーを繋ぐと吉。
 

実際のセッティングは下のYUN-1推奨値スタートで問題ない。というか、それがベストだったりするわけで。

Gui
POWER値はLipoのセル数や積載重量で柔軟に。
3Sなら推奨値の51、4Sは45ぐらいからスタートするのが良さげ。

動かしてみて、特定の位置でノイズやハンチング、ウォブルががが…って場合はPIDを弄っても多分消えない。

Yun1_gimbalx

おそらく、ジンバルバランスが取れていないのが原因。
こいつら感度が良すぎて、ちょっとしたアンバランスでもビクンビクンしやがります。
パッシブ(非通電)ではバランスがとれているように見えてても、実は磁石やワイヤーの抵抗の影響でバランスしてたりする。そんな微妙なバランスのズレでも敏感に反応しやがります。

アンバランスなポイントでモーターに負荷が掛かり、振動だノイズだなんだってカタチで表面化するわけだ。
セッティング値が大きくYUN-1推奨値から外れてしまう場合も何かしらバランスがおかしい可能性が高い。
いずれも解決するには、ハードのバランス調整が必要。

結局、ソフトのセッティングといいながらも、アクティブ時にもハードのバランスがとれてることが肝心だってこと(笑)
いや、ほんと、バランスが出ていないのにPIDを弄ってもなにも解決しません。逆に、バランスがバッチリならあっさりとセッティングでます。

如何に手間をかけずバランスとるかが、1週間かけて得たノウハウだったりするんですが、その先は有料サービス(笑)(書くのが面倒くさいのでまたの機会に)
それにしても前エントリからバランス、バランスしつこいな(笑)

ちなみにボクは現状こんな設定。
GoPro HERO3 BlackEditionをFrameマウントで。

Yun1_gimbal_a
積載重量は133g(YUN-1付属GoProマウント用プレート含む)
メインの使用バッテリーは3S

Yun1_controller_setting

PとPOWERは低ければ低い程良いです。機体をゆっくり動かす前提であれば、もう少し下げる余地はあり。
PITCH(TILT)はプロポのロータリースイッチに割当、エンドポイントを0-90でセット。0でRC INPUT約1500(TILT角0°) 90でRC INPUT約2000(TILT角90°)
LPF/SPDは『0〜10:速〜遅』です。0にセットしてるけど、それでももう少し早く動いて欲しいところではあり。(冒頭の動画はSPD3)

なんだか、書いてる本人もわけわかんない散文になってしまったので、この辺でお開きということで…

16 Comments

  • あんきも

    2013-04-09 at 10:27 AM

    やってますね~
    私のDIYジンバルは2205とステータ厚が薄い非力なモータ選んでしまったのでパワー結構掛けてます。
    ROLL:100 PITCH:80
    LPF/SPDで速度変更できるんだ!
    ジャイロのローパスフィルタ機能だとばかり思い込んでいました(^^ゞ
    たぶん(絶対)日本中のYUN-1ユーザーが注目してると思いますよw
    そうそう!
    不定期で開催のオフミが4/20,21日であります。(キャンプです)
    ちょっと距離がありますが興味ありましたら連絡下さい。
    前回の様子
    http://blogs.yahoo.co.jp/hidenori02/36941201.html

    返信
  • hightimes247

    2013-04-09 at 1:21 PM

    >あんきもさん
    この場合のLPFは、"RCからの信号をカットする周波数(タイミング)"という意味なのでしょうかね。
    Inc.ModeとLPF/SPDの関係はこんなです。(少し長いですが…)
    Inc.Modeチェックなし
    スティック位置→TILT角のコントロール
    LPF/SPD値→小さい方がスピード速い
    エンドポイント→TILT角の制限に使用
    Inc.Modeチェックあり
    スティック位置→TILTスピードのコントロール
    LPF/SPD値→大きい方がスピード最大値が速い
    エンドポイント→TILTスピードの制限に使用
    Inc.ModeでSPD10にしてスイッチを最大まで回すとかなり速いです。グリグリして遊んでるとジンバルが荒ぶることが何度かありました(笑)
    使ってみるとわかりますが、Inc.Modeはスピード・停止位置の両方をコントロールしなければいけないので、飛ばしながら使うのは現実的ではないですね。モニタリングしてるカメラオペレーターが別に必要。
    Inc.Modeはフルマニュアル操作、非Inc.Modeはオートマ操作ってイメージ。
    ファームのアップデートで非Inc.Modeでのスピード設定値をもう少し速くしてくれればよいのですけど、Alexにメール飛ばしておこうかな。
    オフミ、凄く濃ゆい感じで楽しそうですね!キャンプも好きなのでお誘いありがたいのですが、既に予定が入ってまして….また機会がありましたらお声かけして頂けると嬉しいです。

    返信
  • yu582

    2013-04-14 at 1:14 PM

    こんにちは!
    ボチボチまだやってますが、いつもキーン・・・という音がしていますが、調整不足なのでしょうか??
    チルトとパンのブルブルがでなくなったら気になってきました。キーンって鳴ってますか?
    あと・・・電源入れた時にいろんな動きをするのは、バランスが悪いんでしょうか??
    しばらくするとゆっくり水平になるんです・・・
    結構複雑ですね!!でも面白さも感じてます。

    返信
  • hightimes247

    2013-04-14 at 2:18 PM

    >yu582さん
    キーンという音はどうやっても出ますね(スイッチングノイズ?)。バランスがよくなれば小さくなってる気はしますが、消えることはないんじゃないでしょうか。
    電源投入時に一度振れたり、徐々に水平になるのは仕様上だとおもいます。水平になるまで動かさなければ問題ないです。

    返信
  • yu582

    2013-04-14 at 5:15 PM

    やはりキーンなってますか…
    安心しました~
    福岡も風強くてためらってます…
    初フライト楽しみですね!

    返信
  • Yo

    2013-05-09 at 7:36 PM

    私もUSB connect testingでスタックしてしまって先にすすめずにいるのですが、ファームの書き換え方を教えていただけないでしょうか?

    返信
  • hightimes247

    2013-05-09 at 11:27 PM

    >Yoさん
    エントリのなかほどにSimple BGC GUIへのリンクを貼っていますので、そちらをご参考にしてみてください。
    ファームを書き込む前に、Simple BGC GUI1.3では認識されるかどうか確かめてみて、ダメであればファーム上書きをば。

    返信
  • mossa

    2013-05-25 at 5:21 PM

    はじめまして。
    ここのブログを見てYUN-1に飛びついちゃいました。
    ですが、チルト軸はちゃんと動作しているのにロール軸が
    ちゃんと動作しません。バランスはこちらのブログ通りに
    取りまして、どこでも止まるようにはなっています。
    具体的には支柱を傾けるとカメラ台が大きく傾けた方向に
    回ります。(普通は逆に動かなければならないはず…)
    何かアドバイスをいただけたら嬉しいです。

    返信
  • hightimes247

    2013-05-25 at 5:39 PM

    >mossaさん
    どうもです。
    Rollの"INVERT"のチェックを現状と逆にしてみてください。
    チェックが付いてるなら外し、チェックがないならチェックする。
    ファームバージョン2.0では"BASIC"タブ内の"Motor Configuration"内にあります。
    ではでは、ご健闘を。

    返信
  • mossa

    2013-05-25 at 8:46 PM

    早々にお返事ありがとうございます。
    アドバイス通りやってみましたが、変わりませんでした。
    ピッチ側もテストで変えてみましたが動作が反転しませんでした。
    もしかして、壊れてますかね(笑)

    返信
  • sakezo

    2013-05-30 at 10:43 PM

    はじめまして。
    私は全くのラジコン未経験です。しかし映像の仕事をしております。
    最近MOVI10という製品が発表され、このようなものが存在することを知りました。すごく興味があります。
    ネットで調べてもYUN-1に関してあまり情報がなくリンクされている取説のページにも基本的なこと、知りたいことが記されておりませんでした。購入に躊躇しております。
     まことにお恥ずかしい質問ですが、お願いします。
    YUN-1はどのような電圧で駆動していますか?ラジコン用のバッテリーなど必要でしょうか。おすすめのものなどございましたら教えてください。
    主に手持ち撮影のスタビライザ的な使用を考えております。
    よろしくお願いします!

    返信
  • hightimes247

    2013-05-30 at 11:12 PM

    >sakezoさん
    どうもです。
    YUN-1(搭載されているSimpleBGCボード)は7.4V〜16.8Vで動きます。電源は電圧が対応していれば何でも良いかと。
    このシステムの肝はそのコントローラーボードですので、SimpleBGC,AlexMosでも検索してみて下さい。
    >主に手持ち撮影のスタビライザ的な使用
    YUN-1は大きさやモーターのトルク的にも実質GoPro専用ですが、大丈夫でしょうか?
    コンデジでも機種はかなり制限されると思います。幅が納まる=使えるではありませんので…
    YUN-1よりも大きな、ミラーレスサイズまで積めるジンバルも市場に様々ありますのでそちらもチェックしてみてはいかがでしょう。

    返信
  • SAKEZO

    2013-05-30 at 11:58 PM

    早速のご返答ありがとうございます。
    いろいろアドバイスもいただきありがとうございます。
    何かの扉が開いた気がします!

    返信
  • sakezo

    2013-06-08 at 6:40 PM

    hightimes247様。
    先日はアドバイスありがとうございました。
    速攻でポチって現在苦戦中です。
    組み立てて起動までこぎつけ、グリグリを楽しんでいます。凄いですね!感動です!
    で、PCにつないでリンクされているYUN ASSISTをインストールして調整?してみたいのですが、どうもソフトがうまく立ち上がりません。もう少し頑張ってみます!

    返信
  • hightimes247

    2013-06-08 at 11:42 PM

    >sakezoさん
    おぉ早速ですね。
    ボクはYUN ASSISTは諦めてSIMPLE BGC GUIで動かしてますよ〜。
    そちらを使うのもありです。(アップデートも先ですし)

    返信

コメントを残す