ジャイロを動かそうの最近のブログ記事

 二つのジャイロ出力で二つのサーボで制御してモーション・トラッキング・システムを作成します。

課題7
 二つのジャイロと二つのサーボを利用してMTRS=モーション・トラッキング・システムを作成しましょう。モーション・トラッキング・システムは、頭に二つのジャイロを取り付けて首の縦横の回転を検出し、接続したサーボを頭の動きと同じ方向に動かすシステムです。頭を動かす動作をサーボを使って再現します。頭以外に装着することも可能です。

mbed回路図
 サーボはp21とp22に接続します。
   サーボ1・・・p21
   サーボ2・・・p22

29_AS000524.GIF
 これまでにジャイロ出力を一つ処理するプログラムを作成しました。同じアルゴリズムでジャイロ2の出力を処理するプログラムを用意します。

課題6
 ジャイロ・モジュールに搭載している二つのジャイロの動きを”*”で表示するプログラムを作成しましょう。この課題ではまだサーボ2は接続しません。

mbedプログラミング
・gy2_が先頭にある変数を準備し、ジャイロ2の処理に使います。
 float gy2_center;
 float gy2_sgm=0;
 float gy2_wk0=0,gy2_wk1=0;
 float gy2_avg=0,gy2_sum;
 int gy2_lc=9,gy2_lc_old=0;

 ジャイロ出力から角度を求めることができましたか? ここではサーボを接続して、ジャイロの角度に合わせてサーボを動かします。サーボはmbedのPWM出力を活用して駆動します。

課題5
 ジャイロ出力に合わせて、接続したサーボを動かしましょう。

mbed回路図
 サーボはmbedのp21に接続し、PWMで駆動します。

21_AS000523.GIF
 

 課題3 予備のようにジャイロ出力値を積分すれば角度になりますが、次のような問題点があります。

問題点
・静止していても角度が勝手に増える、または減ってしまう。
  =>温度変化に敏感で、静止時電圧が変化=ドリフトするための現象です。
・0度から手前に回転し、0度に戻しても0度を表示しない。
  =>これもドリフトが原因です。回転中に静止時電圧が変化し続けています。
これらの問題点を少しでも解消できるようなプログラムを考えましょう。

課題3
 問題点を対策したジャイロプログラムを作成しましょう。

mbedプログラミング
■■対策1
 小数点以下3桁目を四捨五入する関数round3()を用意し、微少なジャイロ出力をノイズとしてカットします。
double round3(double x){
  double y;
  y=double(int((x+0.005)*100))/100;
  return(y);
}


■■対策2
 静止時電圧は起動時に大きく変化することが多いです。そこで、静止時電圧:gy1_centerを起動時に0.001秒間隔で10回読み取り、平均値とします。
 gy1_center=0;
  for(i=0;i<10;i++){
    gy1_center=gy1_center+round3(gy1_adc.read()*3.3);
    wait(0.01);
  }
  gy1_center=round3(gy1_center/10);


■■対策3
 ジャイロ出力を0.01秒間隔で読み取り、平均値を積分し、ノイズ対策とします。したがって、読み取り間隔は0.1秒間隔となります。
  for(i=0;i<10;i++){
      gy1_sum=gy1_sum+round3(gy1_adc.read()*3.3);
      wait(0.01);
    }
    gy1_avg=round3(gy1_sum/10);


■■次のURLでPublishしています。
  http://mbed.org/users/takeuchi/programs/2bk0819_Gyro_test03/lxrxi5
 二つのジャイロをうまくmbedに接続することができましたか? 取り込んだ値を角度に変換しましょう。
課題3プレ
 ジャイロは角度の変化を検知して角速度として出力します。出力された角速度を積分すると角度に変換することができます。ジャイロの角速度から角度を計算するmbedプログラムを作成しましょう。次の課題3の準備課題になります。

■■積分による角度計算
 圧電振動ジャイロは感知した角速度を電圧に変換して出力します。静止電圧を中心として正回転=右回転であれば静止電圧より大きく=(+)、逆回転であれば小さく=(-)出力します。この電圧を一定時間ごとに定期的に読み込むことをサンプリングといいます。次の図はt0秒ごとにサンプリングし、角速度wk0、wk1を電圧として得ています。
 
37_AS000526.GIF
 ジャイロをmbedに接続することに成功しましたか? 接続した圧電振動ジャイロ・モジュール
AE-GYRO-SMDには、もう一つジャイロを搭載しています。こちらも使えるようにしましょう。

課題2
 ジャイロ1に加えて、ジャイロ2の出力をmbedに取り込み、LCDに表示するプログラムを制作しましょう。実際の電圧に変換して表示します。
 mbedに接続してみたいアイテムの一つにジャイロ・モジュールがあります。これまでは部品としてのジャイロは市販品はあっても高価でしたが、秋月電子より基板実装済みの圧電振動ジャイロ・モジュールAE-GYRO-SMDが安価に発売されたので挑戦しましょう。

課題1
 ジャイロ1の出力をmbedにA-D変換して取り込み、LCDに表示させるプログラムを制作しましょう。

動作原理
 ジャイロは回転を検知して電圧に変換するセンサの仲間です。圧電セラミックに電圧を加えると振動します。振動している素子に回転力が加わるとコリオリの力が発生し、素子に微妙なゆがみを生じます。このゆがみを電圧として取り出すのが圧電振動ジャイロです。





カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.