ブログパーツUL5

ジャイロのドリフト対策

 RZ-1に搭載いているジャイロのGP-03とHG-R001は温度によるドリフト変動が大きく、時間が経つと、折角、調整したゼロポイントがずれてしまう。最初は、ジャイロを改造しようとしましたが、基板上の能動素子が不明のため回路解析ができず進んでいませんでした。

 そこで、根本的なジャイロのドリフト対策ではありませんが、パソコンに繋いでゼロポイント調整しなくてもいいようにモーションを少し改善することでうまく対応できるようにしました。これでパソコンがないところでもRZ-1のデモンストレーションができます。

 モーションプログラム(roboBASIC2.7.2)のゼロポイント設定の部分に、下記のように加速度センサーの値を読み取り自動的にゼロポイントの値を切替えるようにしてみました。最初はstandard_poseのサブルーチンに入れてみましたが、あまり効果がないので、初期設定のゼロポイント設定の部分に入れました。

'== motor zero setting ========================
A=AD(2) '=== acceleration sensor ==

IF A<aaa THEN '=== Low temperature ==
ZERO G6A,xxx,xxx,xxx,xxx,xxx,xxx
ZERO G6B,xxx,xxx,xxx,xxx,xxx,xxx
ZERO G6C,xxx,xxx,xxx,xxx,xxx,xxx
ZERO G6D,xxx,xxx,xxx,xxx,xxx,xxx
ELSEIF A>bbb THEN '=== High temperature ==
ZERO G6A,zzz,zzz,zzz,zzz,zzz,zzz
ZERO G6B,zzz,zzz,zzz,zzz,zzz,zzz
ZERO G6C,zzz,zzz,zzz,zzz,zzz,zzz
ZERO G6D,zzz,zzz,zzz,zzz,zzz,zzz
ELSE '=== Mid temperature ==
ZERO G6A,yyy,yyy,yyy,yyy,yyy,yyy
ZERO G6B,yyy,yyy,yyy,yyy,yyy,yyy
ZERO G6C,yyy,yyy,yyy,yyy,yyy,yyy
ZERO G6D,yyy,yyy,yyy,yyy,yyy,yyy
ENDIF
'== motor zero setting end ====================

 初期設定では電源投入直後で姿勢が決まっていないので、AD値も不安定です。従って、投入時に手で支えて傾きを決めると3つのゼロポイントを選択できるというものです。aaa,bbb,xxx,yyy,zzzの各値を設定します。

 従って、動作させ続けて温度が上ってRZ-1が傾きドリフトが大きくなったら、一旦電源を切って再度電源投入する時に傾けるとゼロポイントが切り替わり直るという仕掛けです。やってみると意外と便利なので、全てのモーションプログラムの初期設定部分を共通化して変更した。なお、3つの姿勢のゼロポイントは試行錯誤で決めることになるので、辛抱強く調整して決めることになります。

【2011/2/15追記】
 RZ-1のアナログポートに空きがあれば、A=AD(2)のところに3端子の温度センサーの出力を入れてやれば、自動的に温度補正ができることになります。または、ジャイロを1つに減らして温度補正を導入する方法もありかもしれません。但し、電源ON/OFFの再起動が必要です。
0

    PG-03の回路解析中

     PG-03の基板を外見から回路を解析してみた所で今はこの状態です。隠れているパターンが読みきれないので、そろそろジャイロを取り除効果と考えています。今までのところで分かったことは
    ・電源は3端子電源で3Vにしていること。
    ・IN端子とOUT端子でレベルシフトしている
    ・ジャイロのVref端子は1.3V前後
    ・ジャイロのOUT端子は1.3V前後
    ・赤LEDと緑LEDの点灯用に2回路393コンパレータ
    ・LMV358はオペアンプ

    最大の難題は5pinのミニモールドの正体です。

    この情報はあくまでも参考で動作を保証するものではありませんので、ご了承ください。
    0

      ジャイロモジュールの解析難航

       左の写真はジャイロモジュール基板の表面です。基板の回路を解析していますが、搭載部品の機能が分からないのと、ジャイロ部品の下のパターンが見えないので接続が分からない箇所があります。5Pinミニモールドはなんでしょうか。1ゲートのロジックか1ペアのトランジスタかわかりません。
       真ん中にあるのが圧電式ジャイロセンサーです。左上にあるモールドは3端子電源で、5Vから3Vに降圧電源です。両側には、電解コンデンサとセラミックコンデンサが各々1個づつ付いています。その下には、サーボ信号の入力を受けているトランジスタがあります。
       LEDとVRは既にわかっているのですが、右下のVRはモジュールに穴がない初めてわかったVRです。どうもオフセット調整のようです。

       左側の写真は上記基板の裏側です。

       左上のICは393というコンパレータでLEDの点灯用に、ジャイロ出力のチェックを行っています。010というチップ抵抗が何箇所かあり、ジャンパー線の変わりに使用しているようです。右側に出力があり、プルアップ抵抗を経由してピンに出ていました。真ん中のICはどんなICなのかわかっていませんん。
       この基板の回路が分かる方がいれば、お教えください。

      0

        新型のジャイロENC-03Rを入手

         ROBOZAKで提供されたジャイロモジュールやGHG-R001ジャイロモジュールは基本形はPG-03ジャイロモジュールのため、使用されているジャイロセンサーはENC-03Mのようです。RZ-1を動作させていると時間が経つと少しづつモーションがズレてくる現象があります。

         Interfaceの2008年4月号の「二足歩行ロボット 製作 二足歩行ロボット 製作」に掲載されていたグラフ(Interfaceから引用)からその原因はジャイロの温度特性にあることが分かりました。ENC-03Mがかなりの勾配を持っていますが、改良型のENC-03Rは補正されているようです。


         秋月電子において、そのENC-03R単体とENC-03R小型モジュールが新たに追加されて売られていましたので、早速、購入してしまいました。
        圧電振動ジャイロ ENC−03RC/D(2個入)
        圧電振動ジャイロモジュール
        ENC-03RC/Dの2種類があるのは、2個のジャイロを同じ小型基板に載せると共振してしまい測定誤差が生じるためだと思われます。


         これからどのように改造するか検討中です。
        (1)既存のジャイロモジュールのジャイロだけを交換する
        (2)ジャイロだけを別基板に組み、既存モジュールに接続する
        (3)新規モジュールの出力を既存モジュールに接続する
        (4)新規ジャイロ用に新しいモジュールを作製する
        リスクの小さい順に検討してみて、回路を見て判断することにします。いづれにしても既存モジュールPG-03の回路を解析する必要があります。
        0

          ジャイロ(PG-03)を本搭載(ネジ止め)

           PG-03の場合は、パッページの外からはオフセット調整とGAIN調整しかできませんが、基板上にはそれら別にSETUP調整というボリュームがあります。これはジャイロのニュートラルの信号幅を決めらしいとのことですが、このボリュームを調整するとジャイロによる零点のずれを補正できるので、ジャイロを取付けて零点ずれしないように調整すれば、モーションを変更しなくてもいいようです。注意:動作保証していないので、あくまで自己責任で行ってください。
          (写真の左下のある小さいVRが、SETUP調整用)

           スペースが無いので、PG-03を壊れたケースから取り出して、仮止めだった基板を自作のボディーカバーにしっかりとネジ止めすることにした。カバーには仮止めで調整用の穴とLED用の穴は開いているので、アクリル板のゴミを再利用して押え板を製作して取り付けました。

           このほか、Bluetoothモジュール+ADM3202などの基板も後ろ側に搭載しているので収納限界になってきました。これ以外に、無線受信機と音声合成のモジュールを胸の部分に収納できるかが問題です。

          0

            ジャイロの温度特性が問題

             Interfaceの2008年4月号の「二足歩行ロボット 製作 二足歩行ロボット 製作」に 掲載されていた2つジャイロセンサーの温度特性を見るとENC-03Mがかなりの勾配を持っていますが、改良型のENC-03Rは補正されているようで殆どありません。

             どうも純正品のジャイロが提供される前に購入したGWS社PG−03の温度特性が大きく感じており、計測はしていないので正確にはわかりませんが、ジャイロを交換すれば直りそうです。どうも実験したくなる性分で困ります。

             秋月電子でジャイロ(ENC-03R)を2つ搭載した圧電振動ジャイロキットを扱い始めましたので、現在のジャイロ基板にある物と交換して温度特性の改善実験ができそうです。交換であれば、周辺回路の解析や合せ込みは不要なので簡単に出来そうである。
             
            0

              80号を購入してジャイロ入手

               帰宅途中に寄り道して、本日発売のROBOZAK80号を関内にある有名書店で購入して、純正品のジャイロを入手しました。今後のROBOZAKでは無線の送受信機を提供するようですが、私は購入するつもりはないので、多分、これが最後の購入部品となると思います。ROBOZAK本文を読んでみると、ジャイロは肩に取付けて横方向の揺れを押さえるようにガイドされていました。

              【80号の部品一覧】
              A.ジャイロセンサー×1
              B.接続ケーブル×1
              C.両面テープ×1

               また、本文ではこのジャイロが使えるようになるのは83号でモーションソフトを入手しないとできないと説明されていました。しかし、すでに、ジャイロを1つセッティングしているので、入手したジャイロを右肩に載せて配線を接続するだけですから簡単です。しかし、問題が...アナログポートがなく、加速度センサーの左右出力と音センサーを諦めることにして、ポートから外しました。

               ボディーカバーを大きく作ってあるため、ジャイロを載せる肩も広々しているので、留めているネジを回避して取り付けることができる余裕でした。今日は、モーションのゼロ設定がずれたので、簡単に再調整しておきました。首が回るようにしていますので、回った時にぶつからないように考えて、離してあります。調整がうまくいって固定できれば、ボディカバーの中に入れる予定です。

              0

                ジャイロをボディカバー内に内蔵

                 モーションを作成中にRZ-1がこけて、ジャイロのカバーが壊れてしまい、カバーが外れました。どうせ元通りに戻らないので、この際、ボディカバーの内側に内蔵することにしました。設計が古いせいか意外とチップ部品が多いようです。そのうち、MEMSで1チップにでもなるのでしょう。

                 ボディカバーに内蔵するにしてもこのジャイロ(PG-03)は温度変動が大きいので、調整用VRの窓とその時の覗くLEDの窓を開ける必要があります。あまり格好よくないのですが、仕方なく穴を開けました。序に、ロール側とピッチ側の両方の穴を開けることにしました。これで頑丈なボディカバー内に入れたので、壊れることはないでしょう。

                 出っ張りがなくなり、喜ぶRZ-1です(?)。只今、ハンドの追加でモーションの見直しをしています。難題は高速連続歩行で重くなった分、本体が左右に振れるので倒れやすくなりました。ジャイロをピッチ側だけでなくロール側にも入れないと駄目なようです。ROBOZAKでジャイロが提供されるのを待つことにしました。
                0

                  ジャイロを使って小走り連続走行(動走行)

                   走行の早いロボットを参考にするとどうも動走行でないと速くならないようです。しかし、ジャイロは必須となり、ジャイロを搭載していると小走り連続走行が可能になります。

                   その走行は以前作成したモーションが左右のバランスをとりながら走行する静走行なのでスピード感はないのですが、今回作成したモーションは左右のバランスはとらずつま先を上げてかかとを下ろして勢いで進むような動走行なので、小刻みにスピード感のある走行になりました。ジャイロを動作させていますので、畳の凸凹や縁などは問題なく走行できます。ただ、段差があるとタイミングにより少し方向が変わります。

                   サンプルモーションは50歩のループにしてあります。衝撃で倒れないように走りはじめと走り終わりではSPEEDを弱めています。まだ改良の余地は多いにありますが、走行はSPEED 20でもHIGHSPEEDでも走行可能となりました。

                  '================================================
                  fast_walk_1:

                  FOR i=0 TO 50

                  IF i=0 OR i=50 THEN
                  HIGHSPEED SETOFF
                  SPEED 5
                  ELSE
                  ' SPEED 20
                  HIGHSPEED SETON
                  ENDIF

                  MOVE G6A, 101, 80, 135, 102, 101, 96
                  MOVE G6D, 101, 76, 145, 93, 101, 100
                  MOVE G6B, 100, 30, 80, 100, 100, 100
                  MOVE G6C, 100, 30, 80, 100, 100, 100
                  WAIT
                  MOVE G6A, 101, 77, 135, 106, 101, 96
                  MOVE G6D, 101, 77, 135, 106, 101, 100
                  MOVE G6B, 100, 30, 80, 100, 100, 100
                  MOVE G6C, 100, 30, 80, 100, 100, 100
                  WAIT
                  MOVE G6A, 101, 76, 145, 93, 101, 96
                  MOVE G6D, 101, 80, 135, 102, 101, 100
                  MOVE G6B, 100, 30, 80, 100, 100, 100
                  MOVE G6C, 100, 30, 80, 100, 100, 100
                  WAIT
                  MOVE G6A, 101, 77, 135, 106, 101, 96
                  MOVE G6D, 101, 77, 135, 106, 101, 100
                  MOVE G6B, 100, 30, 80, 100, 100, 100
                  MOVE G6C, 100, 30, 80, 100, 100, 100
                  WAIT

                  NEXT i

                  RETURN
                  '================================================
                  0

                    ジャイロ動作で早走りが安定化

                     今までジャイロ無し(プログラムでセッティングしていなかった)で安定させる調整をしてきました。早走りも成功するようになってきましたが、それでも安定感がなく早走りの成功率30%ぐらいなので、ジャイロの力を借りることにしました。
                     すでに、ジャイロはRZ-1には搭載してあり、プログラムにジャイロの設定を書き込めばいいのですが、注意点があります。

                    (1)ジャイロを設定しますとジャイロのフィードバックをかけるサーボのゼロ点調整は再調整になります。そこで、今までのプログラムにはジャイロ無しでのゼロ点調整設定値を挿入しておきます。これで元に戻せることになります。
                    (2)ジャイロ有りで設定したゼロ点調整も別プログラムに、プログラムに
                    ジャイロ設定とゼロ点調整設定値を挿入します。
                    (3)ジャイロ(PG-03)の設定は、Power&Offsetの両方のLEDが点灯するように上のボリュームを調整し、Gainのボリュームを調整しますがやりすぎると痙攣してしまうので微妙に調整します。その関係で、プログラムでもジャイロの感度を下げています。ここら辺は個体差がありますが、弱めにチューニングします。
                    (4)モーションを作成する場合には、ジャイロを切って作成する必要があります。これが意外と面倒です。

                    これで、早走りの安定度が各段に上がり、畳み上でもほぼ100%成功します。

                    プログラムの例(PG-03はアナログポートInput→AD2、Output→AD6)
                    '== GYRO setting ================================
                    GYROSET G6A,0,3,3,3,0,0
                    GYROSET G6D,0,3,3,3,0,0

                    GYRODIR G6A,0,1,1,1,0,0
                    GYRODIR G6D,0,1,1,1,0,0

                    GYROSENSE G6A,0,150,100,150,0,0
                    GYROSENSE G6D,0,150,100,150,0,0

                    '== motor zero setting ========================
                    ZERO G6A, 99, 110, 101, 110, 101
                    ZERO G6B,101, 100, 100
                    ZERO G6C, 97, 100, 97
                    ZERO G6D, 99, 112, 101, 105, 100

                    気持ちよく早走りするRZ-1です。



                    0


                      カレンダ

                         1234
                      567891011
                      12131415161718
                      19202122232425
                      262728293031 
                      << August 2018 >>