スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ドリフト三昧_2

今日は引き続きジャイロのドリフト対策に挑む.
もう少し長いレンジでのデータ傾向(約10分間)を見たところ,ほぼサチッてくることが分かった.
これは明らかに温度がアヤシイということでADXRS300のTEMPピンから温度を拾ってみる.

ジャイロデータのドリフトと傾向が一致した.
センサ内部での加振エネルギーのためか,センサ自体の温度が10分で1.5℃程度上昇しそれに伴ってジャイロ出力のゼロ点も変動するようだ.
そこで温度と角速度のスケールを合わせて差を取り,センサ出力値を補正した場合の積分ドリフトを比較した.

かなり違う結果になった.
温度補正を入れるだけでドリフト量は大幅に軽減されることがわかった.
これはMEMS業界ではけっこう当たり前のようだ.
例えば こちらのセンサのマニュアルにはうまく補正すると40°/hour以下のオーダーまで可能になるとも書いてある.
同じアナデバのセンサでなにも考えずに積分すると500°/hぐらい行ってしまっていたので,一気に10倍の精度UPまで期待できる.
また, こちら のセンサは水晶を使い温度安定性が高いみたいだ.
Q-MEMSは例えばラジコン用の これに使われているみたい.

今回,温度変化は要注意ということがよく分かった.
スポンサーサイト

ドリフト三昧

今日はジャイロのドリフト補正について考える.
加速度センサで姿勢角を補正できる能力には限界が見えてきたためだ.
並進加速度と姿勢回転が合わさった動作が長時間続く場合はジャイロの積分に頼らざるを得ない.
しかし,素のMEMSジャイロの積分精度は惨憺たるものなのである.
なんとかドリフトの傾向と対策を掴まなければ.

静止状態に置いたジャイロの100sec間でのドリフトを何回か取ってみる.
姿勢を変えて5回測定したデータが下記.


このように速度で見ると似た傾向にはなっているが,積分値はやるたびにずいぶんばらついていて再現性に乏しいことがわかる.

次に姿勢のドリフト傾向に関数を当てはめてみる.
一般的なドリフトモデルでは
W_bias=exp(-1/a*t)+noise
のように指数関数となるらしい.

しかし,Ecxelでexp()関数をフィッティングしてみてもイマイチ重ならない.
速度のドリフト傾向を見ると指数関数というよりは何となく直線っぽく見える.そこで姿勢角に2次関数を当てはめてみたらなぜかいい感じで重なった.

このセンサの角速度ドリフトはほぼ直線的に進行し,姿勢ではその積分で2次関数で増大するみたいだ.
本に載っていた通りにならないが,たぶん温度ドリフトやほかのいろんなドリフトが一緒に混じっているせいだろう.

ドリフトに再現性がない以上,毎回使う前に原点出しをしなければならない.
ここではアラン分散が最も小さかった10sec程度で原点だし+ドリフト傾向の推定をやってみる.
10secで平均を取ってゼロ点にするのと,この間のデータを当てはめた二次関数でその後のドリフトを予測し,姿勢角から引いて補正する.
しかし,これがまったくダメ.最初の10秒だけなんか挙動が違うみたいで,まったく発散してしまったり,逆に補正値が小さ過ぎたり.
こんな間違った係数による補正は入れないほうがまだマシというものである!
ドリフトカーブは,なにか意志を持って変動しているような気さえする.

行き詰まったので,もう少し特許や論文なんかを漁ってアイデアを探してみたい.

加速度+ジャイロの続き

今日は昨日試した加速度とジャイロの重みパラメータを少しいじってみる.
昨日は一見うまくいったように見えたが,色々やるうちにやはりボロが出た.

表示用のCGのオブジェクトがなんだかカクカク動くので,これはノイズだろうと思って双方のセンサ信号にローパスをかけたがまったく収まらず.センサのノイズではない.
原因は切り替えの部分にあった.



並進加速度が大きくなってジャイロ姿勢角に重みが切り替わる際に姿勢角が不連続に変化してしまっている.
理想的には完全に静止したときに加速度センサ姿勢値でジャイロ姿勢角をリセットするのがよい.
しかし実際には加速度センサにもわずかなドリフトが存在するため,静定から一定範囲で動きながら切り替える必要がある.
この区間でジャイロと加速度の姿勢のズレが不連続の原因になる.
出力姿勢角にローパスをかけても良いが,応答が遅くなるのでできればやりたくない.
どうするか・・・

ジャイロ+加速度センサの統合

今日は加速度センサの姿勢角度情報と,ジャイロの姿勢角度情報をドッキングさせる処理を考える.
ジャイロは並進加速度は検知しないが,静止時にドリフト誤差がどんどん溜まっていく.
加速度センサは静定時には重力加速度から姿勢角を検出できるが,並進運動が加わると正しい姿勢が分からなくなる.
どうすれば2つのセンサの利点をうまく合体させられるか?
いろいろ手はあると思うが,まずは簡単に重み付き平均を取ってみる.
加速度センサの-1G以外の成分が大きいときはジャイロのデータの重みを増やす.一方,ほぼ静止していると見なせるときは重力方向をベースにした角度を重視する.
この処理によって,静止時にはジャイロドリフトが加速度センサでキャンセルされ,並進の加速度が大きくなるとジャイロ姿勢角のほうを正しい姿勢角として検出する.
センサを手でもってゆっくり回す→左右に振る としたときのある1軸の姿勢角データは以下の通り.

これだけでもセンサ単体よりはずいぶん良くなることがわかる.

実験の様子はこんな感じ.(MPEG)

合成の方法はまだ他にもいろいろな手が考えられる.
カルマンフィルタなんかも使えるはずだし.
もう少しいろいろなバージョンを試していきたい.

姿勢角の算出

今日は姿勢角の計算を実装する.
姿勢にはオイラー角を使うことにした.変数が3つで済むため計算が簡単.
オイラー角には特定角が90°回ると計算ができなくなるジンバルロックという厄介な問題がある.
しかし,Rideの姿勢センサとして使うなら90°も回らない(そんなに回ったら完全にコケている!)ため,とりあえず問題ないと考えている.

動作の様子はこんな感じ.(WMV)
ビデオではドリフトとセンサ入力値の飽和のため,姿勢が元に戻っていない...
補正が必要だ.
次は3軸加速度を絶対座標へ持っていくのを試す.

IMUの実装準備

今週末はイカサマIMU作製の準備を進める.
Fenrir(フェンリル?)さんのブログを参考に手元のジャイロセンサ(ADLRS300,司21)のドリフト誤差やアラン分散を取ってみる.
FenrirさんはホンモノのIMU(というかINS/GPS)を自作しているとてつもない方だ.

ADXRS300のアラン分散:

このグラフは右に行くほど平均時間が長くなり,上に行くほど分散,つまりばらつきが大きいことを表す.
ADXRS300は10sec以上で分散が増加に転じている.つまり10秒間の平均値と100秒間の平均値では100秒のほうが精度が悪い.ドリフトの原因になる低周波ノイズの影響と考えられる.

ちなみに角速度データを単純に積分した角度でのドリフト量はADXRS300が590°/hour,司21が254°/hourとなった.
一般的な中級MEMSジャイロのドリフト量は 360°/h=時計の分針の速度 ぐらいらしいからこんなものだろうか.(10秒で早くも1deg以上ズレる・・・)
ただし,ノイズの大小はジャイロの回路LPFや検出できる角度のレンジによっても大きく変わってくるので単純な比較はできない.
まずはあり合わせのもので6DOF構成にしてみようと思う.

 ハードウェアの最適化は後回しにして,角速度の積分と座標変換のソフトウェア部分を完成させる方針で進めている.
このあたりの専門書が全然見つからず,結局Amazonで洋書を買って読むハメになった.
私の場合,とにかくムツカシイことはさておきプログラムさえできればそれで良いという主義のため,キソをすっ飛ばしていきなりものを作るやり方でいままで来た.
「いいじゃん,いちおう動いてるんだから」という毎度の言い訳でごまかされた薄っぺらい知識,それがこういう問題をやると実に痛々しくハッキリと見えてくる.
専門書を読むにも線形代数のキソ,微分積分やベクトル解析のキソが分かってないためかなりツラい.幸運にも去年からCGをやっているのでオイラー角とか,3次元座標の取り扱いは少しは慣れたものがある.それを足がかりにゴリゴリと進めているような状況である.
そもそもキソを飛ばしていきなり応用をやろうって言うのが邪道なのかもしれない.
まぁ,しかしそこは趣味の領域だから,モチベーションが維持できなければ意味がないか.

ジャイロ+パーティクルフィルタ

今日は昨日に引き続きパーティクルフィルタの実装を始める.
基本的に予測→誤差の評価→予測値の更新という手順はカルマンフィルタと同じ.


まだ信憑性がかなりアヤシイが,なんとなくそれらしいデータは出るようになった.
計算時間は粒子数を増やすとかなりかかる感じで,これはマイコンでリアルタイムはちょっとムリっぽい.

パーティクルフィルタがカルマンフィルタに比べて有利なのは非線形性の強いとき,観測値に大きな外れ値があるときなどだそうだ.
ジャイロでは取り付けた物体の慣性があるので角速度はある程度滑らかに変動する.
そうすると計算量の少ないカルマンフィルタのほうが有利だろうか.
ビジョンやURGを使った物体追跡なんかはパーティクルのほうが有利だろう.(そういう論文や特許もたくさん出ているし.)

いろいろと楽しそうなアプリはあるのだが,やはりまずはIMUをやってみたい.
そしてゆくゆくはRideの姿勢検知用のセンサモジュールに使えればベストだ.
これ を買ってみようか・・・

ジャイロ+カルマンフィルタ

今日はジャイロ.
死蔵していたADXRS300と秋月dsPIC33F32JGP202で角速度データを取得しこれにフィルタをかけてみる.


教科書に載っていたトラッキング用のカルマンフィルタでジャイロ角速度をフィルタリングしてみる.
静止時のノイズを観測ノイズとして,エクセルで求めた分散値を入れる.
システムノイズは測り方がよく分からないのでテキトーな値を加速度項に入れてみる.
とにもかくにも行列を逐次計算すれば,なにやらそれっぽい波形が出てくる.
静止時:

手に持って動かしたとき:


ノイズはそれなりに濾されているものの,MEMSジャイロ特有の積分ドリフトはまったく除去されていない.
カルマンフィルタはノイズを平均ゼロの白色ノイズと仮定しているため,DC成分変動は追跡できないためだろうか?
いろいろな文献を見ると,カルマンフィルタはセンサ単体で使うよりも状態方程式の自由度を生かして複数のセンサを融合させると強力だと書いてある.
きっとジャイロ単体ではダメで,加速度センサや地磁気センサなどと組み合わせると,ドリフトが補正されてイケてるデータが取れるのだろう.

カルマンフィルタ以外にもパーティクルフィルタというのも最近流行っているらしい.
今後はこちらも試してみようと思う.

カルマンフィルタのテストなど

今週末にかけてはすこしメカから離れて信号処理の勉強をする.
ジャイロや他のセンサ類を統合する時に役立ちそうなカルマンフィルタの勉強を始める.
カルマンフィルタはまともに勉強すると激烈に難しいが,とにもかくにも線形代数をプログラミングできれば実装は可能.(おまじない作戦.)

最も簡単なモデルでエイやっと実行してみたのが下記.

何となくそれっぽい波形はでているようだ.
定番である移動平均はノイズが取れる代わりに原信号までナマッてしまうが,カルマンフィルタならデータ取得時点でのもっといい値(最尤値)を拾ってくれる(らしい)...
ただし,システムの状態空間モデルの係数が既知でないといけないので,それは同定するなりして事前に求めておかなければならない.ここがちょっと厄介だ.
たとえばジャイロだったらジャイロがくっついている本体の運動方程式とか,そういうものも必要になってくるのだろうか...それともARモデルかなんかで回帰曲線をフィッティングすればいいのだろうか?
この辺がイマイチ理解できていない.

いずれにしても,今後のソフトの腕を上げるためにもここはちょっと勉強しておこうと思う.

リンク強度のシミュレーション

今日はFEMソフトでリンクの強度をシムる.
シミュレーションは平面内での単純な曲げの問題として扱うが,
それによると,リンクを分割すると強度が1/10以下に下がるという結果に.



実測ではせいぜい1/2程度だったので開きが大きすぎる.
単純にリンクを2コに分けて足し合わせればよいと思っていたが,どうもなにか勘違いしていたようだ.考え方が根本的に違う.
平行リンクを水平に配置するのだから,開いた状態では曲げとねじりを両方考慮しなければならない.
また,断面の異なる2つ以上の梁が途中でつながっていると,全体の強度は各梁の線形和とはならない(?).
自分はメカが本業でありながらこういった問題でぱっとイメージが浮かばないのはかなり痛い.
どうも材料力学をもう一度1から勉強し直す必要がありそうだ.

今回は人が乗るので静的な強度はとても重要だ.
ある程度強度の見積もりができなければ設計は進められない.

パラレルリンクの検討_3


今日は外付けDVDドライブを入手してARTiGO-PC15
にOSを入れる.WindowsXPと各種ドライバのインストールは無事に終了した.
ストレージにSCLタイプの2.5inch-SSDが付いていてWindowsの起動が劇的に速いのに驚いた.
SSDのリードタイムはHDDより圧倒的に速い.耐衝撃性等を考えてもSSDのアドバンテージは大きい.
HDDはやがてすべてSSDに置き換わるのだろうか.

いったんこのPCをいじるのはここまでにしておいて,パラレルリンクの強度を簡単な実験で確かめてみる.
タミヤのリンクセットを使って写真のようにシリアルリンクと材料の高さ方向を半分にしたパラレルリンクで強度を比較する.

先端に同じ重さの重りをぶら下げて変位量を測る.
結果,パラレルリンクの変位量がシリアルの2倍程度となった.
この辺を参考にリンクを設計していきたい.

パラレルリンク検討_2


今日はパラレルリンクを脚に使った場合にどうなるかCADで試す.
リンク長やリンクの形状などは直列リンクと同等にして配置してみた.
干渉を避けるため胴体下側に2組のリンクを逃がす.
ひとまずはリンク同士の干渉から可動範囲が狭くなることはなさそうだ.
ただし,人が乗って足を入れる部分を逃がしたリンクが横切るので,ここは搭乗位置を少し上にずらす等の対策が必要になりそうだ.
また,上下方向の強度はリンクが分割されたことで断面係数が下がるためダウンしてしまう.
ここはもう少し肉を盛って強度UPする必要がある.
中間のジョイントはモーメントも受けるため,ベアリングに気を使いそうだ.クロスローラベアリングが使えればベストだろう.

パンタグラフ機構

今日は平行リンクの性質についていろいろ調べる.
4節(5節)平行リンク機構にはいろいろなおもしろい特性がある.

①動きが平行になる.ドラフターや電気スタンドなどでおなじみ.
②動きが拡大,縮小される 脚ロボットでもよく使われる性質
 ここのサイトで原理を確認できる
③モーメントを伝えない 出力リンクにかかる回転モーメントをリンク内で受けてくれて駆動軸に伝えない性質 自重軽減機構などへ応用できる
④パラレルメカニズムとして使った場合 非干渉,等慣性駆動が可能
 リンク重量などをうまく設計すると,入力がまったく独立していると見なせる2自由度機構が実現できる DDロボットなどに応用.

まだまだほかにもあるかもしれない.
どれも非常に有用な性質だ.

知ロボの画像整理

今日は知ロボの写真が来たので画像を整理する.








このクジラは全部で60部品(ネジ類のぞく)ほどでできている.
「カーニバル」に比べれば1/3程度だろうか.
これまでのもやねマシンの中では最もシンプルだ.
最初ラジコンサーボの4足で知ロボに出てからカレコレ5年が経つ.早いものだ.
私の知ロボマシンは毎年いろいろと形は変わっているが,魅せるマシンという路線では一貫している.
最初は「複雑さで技術力を見せつける」の精神からやたらとモータやセンサをたくさん付けていた.
可能な限り複雑なものを作っていろんなことができることを示すほうがカッコイイと思っていた.

しかし,複雑であること=魅力的とは限らないことに気付き最近ではシンプルなものに興味が移っている.
技術志向のマニアならば複雑なメカに興味が沸くだろうが,技術的な知識のない一般の人にとってはロボットの中身はよく分からない.
見せたいものを絞りシンプルにまとめることで逆に印象が強くなる場合もある.
表面的に見えるのはデザインがおもしろいとか,動きが大きいとか,速いとか,画面の色が変わるだとかそういった分かりやすいIDのみに絞ったほうがきっと普通の人には受け入れられやすいのだろう.

もちろん自分はいち技術者として,もっと複雑で高度な技術を習得して使いたい,という思いは常にある.
しかしそれを見せびらかすのではなく時には隠していまい,シンプルにしてから提示していく.
そういった方向性で今後は進めていきたい.
プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。