/*! * 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); 続・車載ジャイロカム | MadaMada

続・車載ジャイロカム

去年ちょっとした思いつきでスタートした、車載ジャイロカム。
さっぱり音沙汰ないけど、一応カタチにはなって…ますよ。

Gyrocam

て、カタチにはなっても、しっかりジャイロってくれなきゃ意味がない。
肝心のそこんとこがトライ&エラーの繰り返し。

 
昨日のツーリングでも挑戦&調整してみたけど納得いくできではなくて。
曲がり始めこそイイ感じに追従してくれるけど、その後、横Gのせいなのか全然別の原因か、水平を通り越していったり、斜に構えたり。ん〜ダメ。
そんなこんなで、匙は投げられた!ではなくて、ちょっとトライアルをアップ。

ネット情報によると、角速度だ、積分だ、ジャイロ・ツェペリだ、黄金比だ、って計算プログラムで横Gを導きだして…て、チンプンカンプンだけど、それが肝だってことみたい。ま、それを知ってもどうする事もできないけども(笑)
ボクにできることはジャイロの効きを調整する事ぐらいです、はい。

ロッシのYZR-M1に搭載されてたジャイロカムは、コース上の位置データもバンク角算出に使ってるって話もあるみたいなので、サスやなんかのロガーデータも活用してたりするかもね。
プログラムが完成するまで大変だった。みたいな内容も何処かで見たので、色んなデータ使って複雑な解析して計算してるのかもしれない。だからこそあそこまでステディに撮れるのかな。

でも、そこまで色々なデータがなきゃ全然ダメかというと、そんなことも無いと思ってて、バンク角を表示するおもしろいアイテム(デジタルバンクメーターDBM-530)も世の中には売ってたりするので、ジャイロでカメラっぽいコトは煮詰めていけばそれなりにはカタチになると思うのですよ。
もちろん「友情・努力・勝利」 「知識・技術・お金」は少し必要だけれど。

■急募

・バイク用ジャイロのプログラムをArduinoでサクッとこなせるスーパーハカー

というのは、半分冗談で。塩梅良くなりそうな雰囲気もあるので、懲りずにまたトライしてみますよ。

■関連エントリ
・ジャイロ

20 Comments

  • 74JK

    2012-05-09 at 7:54 AM

    ワインディングもトミンもなかなかですね。正しい動きを知らない人は気づかないかも。ワインディング、新鮮だな。スピードメーター、大丈夫ですか?(笑)

    返信
  • hightimes247

    2012-05-09 at 8:07 AM

    >74JKさん
    >正しい動きを知らない人は気づかないかも
    なるほど!バイク乗りやバイク動画を見慣れていない人だと、
    そうかもしれないですね。
    もっとスムーズになれば違和感はわかるかな。
    スピードメーターはスピードヒーラーの狂いで少し速めに出てますので、ぎりぎりセーフということで…

    返信
  • アンチャン

    2012-05-09 at 9:06 AM

    ジャイロよりも、動画ないに映ったラップタイマーに目が行った私はいけない子です。
    つけたはいいものの、正常動作を一度もせずに返品になりました・・・

    返信
  • hightimes247

    2012-05-09 at 9:34 AM

    >アンチャンさん
    ボクは今でこそ安定してますが、最初はセンサー位置が前輪の影響受けてメチャクチャでした。
    ナンバー付きの人は、センサーは仕込まずにサーキット走行の時だけカウルの底面にテープで貼り付けてる方も多いですね。
    ん、返品てことは不良品でしたか。

    返信
  • hightimes247

    2012-05-09 at 1:03 PM

    >みつさん
    動画にはいいとこ取りなので、アベレージにするともっととっ散らかってます(笑)
    ストレート部分で斜めになってしまうのを抑えたい。あと、欲を言うと浮遊感が欲しいです。
    売りものになるようなデキじゃ有りませんよ(汗)
    納得いくとこまで調整できたら、部材とか紹介しようかな。

    返信
  • まるめ

    2012-05-09 at 9:22 PM

    サーキットの方はかなり調子好い感じですね!(^_^)
    部材のご紹介、楽しみでーす( ´ ▽ ` )ノ

    返信
  • hightimes247

    2012-05-09 at 10:25 PM

    >まるめさん
    サーキットの方、あれ以上ペースを上げるとダメなんですよねぇ。もう少し頑張ってみます。
    部材、なんて偉そうに書きましたが、ググれば見つかる物の寄せ集めです(笑)

    返信
  • kyoki

    2012-05-10 at 8:12 AM

    動画拝見しました。
    驚きです。DIYでこんなことまでできるとは!
    そして、何気に峠やサーキットの走りが勉強になります。
    続報楽しみにしてます。

    返信
  • ケン爺

    2012-05-10 at 8:37 PM

    いつも楽しく拝見しています!
    素晴らしいセンスとDIY力に感心していますが、このジャイロカメラは特に感嘆しました!私には十分完成の域にあると感じましたが、さらに調整が進めば販売できるのでは?などと皮算用してしまいました。笑。
    それでは、完成ムービーを楽しみに待っております。

    返信
  • hightimes247

    2012-05-11 at 12:30 AM

    >kyokiさん
    Destroy It Yourself略してDIY!
    ということで、壊さないようにとりあえず、何でもやってみましょう。って精神です。
    走りの方は、カメラの動きを気にして、というかカメラの動きを安定させようと意図的にバイクを動かしているふしがありますので、あまり参考にはなさらない方が…(笑)

    返信
  • hightimes247

    2012-05-11 at 12:34 AM

    >ケン爺さん
    はじめまして!お褒めのお言葉コメントありがとうございます!
    Destroy It Yourself略してDIY!
    ということで、時には壊しつつあーでもこーでもって作ってるときが楽しいんですよね。
    なので、販売とか、製作代行とかないですよ(笑)
    …いや、値段によっては(冗談)
    DIY!ということで。

    返信
  • 774RR

    2012-05-15 at 10:34 AM

    サインハウスが同じ様な構造のGYRO-CAMを夏を発売目標に開発してるらしいですよ
    負けない様に頑張ってくださいw

    返信
  • hightimes247

    2012-05-15 at 1:15 PM

    >774RRさん
    なんですと!サインハウスが!
    これに商機あるの…か?
    >負けない様に頑張ってくださいw
    ムリムリw
    こちらのブログで情報を見つけました。
    la nuova vespa?:ハイテクオカモチ
    どんな挙動かサンプル動画見てみたいなぁ、
    東京モーターサイクルショー行ったんだけどな、見落としてたよ。

    返信
  • A-suke

    2012-05-23 at 12:26 AM

    お久しぶり。
    相変わらず面白いモンこさえてるね。
    かなりイイ出来じゃない!
    またSS欲しくなっちゃったじゃないか!
    もうしばらく来るのやめよう(笑)

    返信
  • hightimes247

    2012-05-23 at 11:45 PM

    面白いでしょ〜
    これ、バイク以外にも色々と使えて楽しいよ。
    SSのまえにカブ買いなよカブ。

    返信
  • FCG

    2012-05-27 at 11:29 AM

    先輩!ご無沙汰してましたがGoPro部の部活嬉しく拝見!
    妙に完成度高くないですか??
    ジャイロ系は当方RCヘリでもいろいろパーツが出ているのでそのうち自分もやりたいです。

    返信
  • hightimes247

    2012-05-27 at 5:12 PM

    >FCGさん
    地道に部活動してますよ〜。てへ。
    ロール/チルトでJYROPOLE®もいけまっせ!
    ボクもマルチコプターずっと欲しくて、フレームだコントローラーだのは見繕ってあるんですが、なかなか思い切れずに留まっているうちに、知識だけがどんどん増えて行くというw
    ジャイロカムは調整がかなりシビアなんですが、ヘリはさらに調整部分が多いので飛ばすにも相当シビアなんだろうなぁ。
    ペラをバランス取りの為に削ったりとか、そう言う試行錯誤もそれはそれで楽しそうですけど…とか想像してたらまた欲しくなってきた(笑)
    XAircraft X650のコントローラーはジンバル制御を吐いてくれますよね?すぐジンバルのご準備を!(笑)

    返信
  • FCG

    2012-05-27 at 11:41 PM

    よくご存知でwww>X650
    でもジンバル制御サーボコントロールの前にまずは安定飛行が課題です。結構シビアですw

    返信

コメントを残す