2012-05-06 11 views
1

私が読んでいる赤外線シャープ距離センサ:読み取りと安定赤外線距離センサ出力値

http://www.robofun.ro/senzori/infrarosu/senzor_sharp_%20GP2D120XJ00F

私は壁、かなりシンプルなマップに沿ってロボットを指示し、書くためにサーボを指揮していますコード。

私が抱えている問題は、センサの読みがオフで、リニアにはならないということです。他の人がこれらのセンサをうまく使用していることを知っています。

私の質問は、どのようにサーボに送信された振動を排除することができますか?私はロボットが壁から一定の距離にまだ立っている状態で1〜3度の振動を得ています。あなたは私のコードを持っている以下

#include <Servo.h> 

Servo myservo; 
int val; 
int val1; 

int IRpin = A7; 
// analog pin for reading the IR sensor 
void setup() { 
myservo.attach(3); 

Serial.begin(9600); // start the serial port 
} 
void loop() { 
float volts = analogRead(IRpin); 

delay(100); 
val1 = map(volts, 230,500, 0 ,100); 
val = map(val1, 0, 100, 100, 80); 
myservo.write(val); 
Serial.println(val); 
} 

それ以外のバリエーションがはるかに悪いだろう、ので、二重のマッピングが必要であることに注意してください。

これに答えると私を助けるために時間がかかります誰のおかげで...

LE:私はすでにヒステリシス考えられてきましたが、私は不必要な測定値と計算との時間を失うことはありません何かをしたいです。

+0

私はArduino Playgroundでこれを見つけました。それは私にこれまでに得た最高の結果をもたらしました。より多くのArduinoユーザーはこれについて知っておくべきです。 http://arduino.cc/playground/Main/Smooth – Eugen

+0

シャープな赤外線センサーが線形応答を持たないと指摘しておきましょう。 –

答えて

3

これは古典的な制御の問題です。私はPIDコントローラを調べることをお勧めします。

EDIT:申し訳ありませんが、誤解があります。私はあなたが望む方向を持っていて、IR距離センサーを使ってあなたの現在の方向を読み取っていると思った。私は上記のことを背景として残しておきますが、これには該当しません。

NEW ANSWER:

センサーの変動は完全に正常です。あなたはそれらを考慮する必要があります。この場合、私は単純な移動平均フィルタを使用します。 (1回の壁からの距離は、最後のXセンサーの平均値です)。 xを大きくしすぎると遅延が発生し、小さすぎると同じノイズの多い出力が得られます。

あなたのLEノートに応じて: ノイズの多い入力を処理するときにヒステリシスを回避することはできません。実際にパフォーマンスの問題はありますか?計算に時間を費やしたくないのですか?事前に最適化しないでください。

EDIT 2:上記は、入力信号(現在の距離)を平滑化します。これをあなたの出力信号(サーボ設定点)に変換して、あなたの望む距離を達成していますか?(壁から一定の距離を保ちたいと仮定して)これはPIDコントローラが役立つかもしれません。

+0

これは競技会のためのものであり、ロボットは一度にいくつかの(非常に多くの)センサーを読み取り、データを処理しなければならないため、パフォーマンスに問題があります。私は5回の読みを試してから平均化します。あなたの答えはおかげで多くの:D – Eugen

+1

@エーゲン私は非常に多くのセンサーのパフォーマンスの問題を引き起こすために十分な入力ピンを持つマイクロコントローラを見つけることは疑いがあります。私はあなたのサーボ出力信号を滑らかにしたいと思ったので、私は私の答えを少し拡大しました。 – Tyson

+0

フィルタリングは私の専門分野ではありませんが、(PID制御のDに似ていますが)控えめな表現ですが、実際の値と平均値だけでなく過去の値の違いを調べる、動きのために、サンプル範囲にわたって大幅に変化する可能性があります。そうすることで、実際の変更をキャッチして、遅れを取り除こうとします。しかし、重み付け変数を正しく選択しないと、オーバーシュートして野生の振動を得ることもあります。しかし、あなたが5つのセンサーの読み値のような小さな量を動かすならば、ただタイソンの答えに行ってください! – ViennaMike