Name: こうへい
Mail: triangie@da2.so-net.ne.jp
Date: 2000/01/29(Sat) 22:42
Host: 210.174.9.108
Title:qa_[144] アングルセンサーのズレ矯正
--------------------------------------------------------
Ryuさんの「Standard Remote Control Car」のリモコンのところに書いてある『アング
ルセンサーの角度感知のズレをタッチセンサーで矯正する』ことについて質問がありま
す。
1、なぜずれるのか。
2、どうやってそのズレをなおすのか。
ぼくはRIS暦1ヶ月半くらいの中2生です。まだRISしかもってません。(^ ^;)これから
いろんなテクを知りたいです。
Name: mac
Mail:
URL: http://www.line.to/mac/MindStorms
Date: 2000/01/31(Mon) 11:54
Host: 210.161.82.78
Title:qa_[149] Re: アングルセンサーのズレ矯正
--------------------------------------------------------
> Ryuさんの「Standard Remote Control Car」のリモコンのところに書いてある『アングルセンサーの角度感知のズレをタッチセンサーで矯正する』ことについて質問があります。
> 1、なぜずれるのか。
くるとんさんが、すでに大部分説明されましたので、
この部分の補足です。
メカの動きをセンスする、ごく普通の角度センサーは、
インクリメンタルロータリーエンコーダーというのもです。
これは、中に2個の「タッチセンサー」のようなスイッチが入っていて、
回転するにつれて、00 01 11 10 00 01 11 10 ....
と変わります。逆回転させると、00 10 11 01 00 10 11 01 ....
です。わかりますね。
変化の仕方で回転方向を察知するのです。
「今」が正確にわかっても「過去全部」を正確に記録してないと、
はじめからどれだけ回ったかを示すことができません。
# これが悲劇の始まり (^^;
MindStormsの角度センサーも実は同じ原理です。
でも、ポートは一つだけしか使いたくないんで、
2つの値を入力する工夫をしないとだめなわけです。
2つといっても「独立に二つ」ですから、状態は4つです。
仕方がないので、4種類の電圧にしてアナログ的に入力してます。
0 1 2 3 0 1 2 3 ...
0 3 2 1 0 3 2 1 ...
これは、はっきりいってかなり無謀です。
工業用に設計された、上記インクリメンタルエンコーダでさえ、
デジタル式の0,1入力なのに、たまにノイズでずれることがあり、
対策が要るのです。
それをアナログでやるのですから、しばしばノイズで状態を読み間違え、
それが累積していきます。
でもね。工業用でも誤差対策は要るんです。
誤差が出るのはむしろ「教育的」な面もないわけじゃありませんね (^^;
ちなみに、航空、宇宙、軍事等、そういう誤差を許容できない場合は、
状態を積算するのではなく、物差しを読むように、メモリの数だけ、
状態が存在するタイプのエンコーダーを使います。
これはアブソリュートエンコーダーといいます。
b>Name: こうへい
Mail: triangie@da2.so-net.ne.jp
Date: 2000/01/31(Mon) 22:08
Host: 210.174.9.229
Title:qa_[151] Re^2: アングルセンサーのズレ矯正
--------------------------------------------------------
macさん、くるとんさん、説明ありがとうございました。工業用のセンサーの仕組みま
で分かっちゃいました(^^)。
もしナイスな作品ができたら発表してみようと思います。これからもよろしくお願いし
ます。
Name: Ryu
Mail: ryu@mail.hkisl.net
Date: 2000/02/02(Wed) 01:15
Host: 152.158.214.65
Title:qa_[153] Re^3: アングルセンサーのズレ矯正
--------------------------------------------------------
おー なんか自分の作品がネタにされているのって
うれしいです。
macさんのすばらしい解説と、くるとんさんのすばらしい応援コメントで
もうなにも付け足すことはないですが、がんばってください〜>こうへいくん
Name: mac
Mail:
URL: http://www.line.to/mac/MindStorms
Date: 2000/02/02(Wed) 11:05
Host: 210.161.82.78
Title:qa_[154] Re^4: アングルセンサーのズレ矯正
--------------------------------------------------------
これは質問の答えの続きではなく、角度センサーの「改良」についての、単なる考察で
す (^^;
インクリメンタルエンコーダーが、普通の2進数のように、
00 01 10 11とは変化せず、00 01 11 10 ...と変化するのは、
同時に1 bit以上変化しないようにしているからで、
これをグレイコードといいます。
同時に変化すると、たとえば01 10の境で振動したとき、
両方がまったく、同時に変化せず、タイミングずれで11や00を読む危険があるからです
。
この問題は、2bit以上になっても生じるので、
前に説明した、アブソリュートエンコーダーも、グレイコードを使います。
さて、MindStormsの角度センサーは4種類の電圧で、
4つの状態を伝達しようとしました。
この前の説明では、状態の番号でシーケンスを示しましたが、
電圧の大きさ順序で書けば、0 1 3 2 0 1 3 2 ...ですから、
上記グレイコードをそのままDA変換したものになっています。
でも、グレイコードの特徴はぜんぜん生かせません。
1から3への変化では、当然2を通過しますし、
2から0への変化では1を通過するからです。
これについては、あぶくさんがタイミングをもとに、
誤差を回避する方法を考察されたのですが、
実はほかに、本質的改善があるんです。
あぶくさんの改良とは違いハードウエアとファームウエアをともに、
いじらないといけませんから、実現はかなり困難です。
通常は状態1になっていて正方向に回ったら、
1 2 1 2 1 2 ...と変化し、
逆方向に回ったら、1 0 1 0 1 0 ...と、
変化するようにしたらよかったのです。
なぜやらなかったのかは、作るのが大変だからだと思います。
でも、できないわけじゃなく多分誤差もずっと減ります。
# 誰かやってもらえませんか (^^;