2015年04月26日

パルスボールの検知について_ver2

どうもです.

先日のパルスボール検知についての記事の

投稿後,直接でないにしても,いろいろ間接的にコメントをもらったのでその件について試してみました.

以下には,コメントをわかりやすくまとめてそれに対する実験を載せます.
一つ目:普通にもっと読めるでしょ.

なるほど....実験が悪いのかな....

確かに読み込んだ後,そのまま遠くへ持っていくと読み続けます.しかし,そのあと読まない位置にづらしてからもとに戻すと,同じ位置でも読まなくなる現象が起きました.この場合,受光部近傍で手を振ることで,もう一度読み直すよくわからんことで改善するようです.試合中はできないですね...

外乱光とか実験条件も多分にあると思うので精密な実験はできませんでした.

二つ目:IRM2121はON直後長距離まで読めるよ.
これは,Gcraud の人がついったで言ってました.
そこで,任意に周期を弄れてかつ簡単なNE555でVCCにパルスを与えて距離を測ってみました.

とても読めたのですが,コメントをくださった方の言うとおり,素子の裏側でも読めたりと,壁をちゃんと作るかなんかしないと使い物にならない状況でした.しかしながら角度によってパルスの間隔は変わるので,距離によれば,問題はなさそうです.



以上二つ試してみました.
前半の実験では,ボールの位置がずれてしまうと検知が不可能になってしまいます.
一方後半の実験では,繰り返し電源をOFFにするため,回路は少しだけ面倒になりますが,長距離まで読むということは可能になりました.

今後は,後半の実験で組んだ回路をもとに壁の作成や,読める距離の調整等を行っていきたいと思います.


posted by romflag at 08:41| Comment(0) | RCJ パルスボール | このブログの読者になる | 更新情報をチェックする

2015年04月20日

パルスボールを検知するためのセンサについて

どうもです.


昨今のジュニアサッカーオープンBでは,パルスボールの赤外線を読むセンサとしてIRM2121が多く出回っているようです.


しかしながら,実際試してみると検知距離が短い.

少しロボットから離れただけで読まなくて辛いーと考えている人も少なくはないんじゃないでしょうか.


ではなぜ,IRM2121を使う人が後をというか....なんというかなのか.


ぶっちゃけ知らないです.ていうかみんな嘘ついてそうですよね.


そこでIRM2121の代わりになるセンサをこれから探していきたいと思います.(近距離においてはIRM2121はとてもいい)


試しにというかバカの一つ覚えで.同じ見た目のものを試してみました.

実験は,リモコン受光モジュールにローパスフィルタでなまらせたものを,オシロスコープで確認の流れで行いました.


・IRM2121 : 近距離しか見えない.壁がなくても何とかなる.距離により割と値が変わる.


・RPM7138-R: 遠くまで見えるが電圧値の変動に乏しい.また壁必須で,周りをしっかりと囲わないと全く意味がないよう.


2個しか試していないので今後追加していきます.


ちなみに受光モジュールは距離に応じたパルスが出るので,デジタルで読んだほうが精度があったりします.(体感)

以下に,デジタルで読むコードを乗せておきます.(mbedですが)

処理的にはC言語使える人なら余裕だと思うので,

実験して報告よろしく!!!(そんな人ならこのコード普通に思いつくくね?てか煩雑じゃね)



書き直すの面倒なのでライブラリだけですが...IRM2121 mbedとかで調べれば出ます.

名前がIRM2121となっていますが,たいていのものは使えるはずです.

/*IRM2121.h*/

#ifndef MBED_IRM_H
#define MBED_IRM_H

#include "mbed.h"

#define NAKATA 833 //周期833us
#define NOT_F 0

/** IRM2121 class, based on an DigitalIn pin, and a timer
* use RoboCup Junior Soccer to find PULSE BALL.


* Example:
* @code
* // Set Digital and read sensor.
* #include "mbed.h"
* #include "IRM2121.h"
* IRM2121 IR(p21);
*
* int main() {
* unsigned int length;

* while(1) {
*
* length = IR.Read();
* }
* }
* @endcode
*/
class IRM2121 {
public:
/** Create a IRM2121 object connected to the specified pin
**/
IRM2121(PinName IRM_PIN);

unsigned int Read (void);
/** Read the result
*
* @param none
*/

private:

DigitalIn _pin;
Timer _timer;

unsigned int _Time;

};

#endif



/*IRM2121.cpp*/

#include "IRM2121.h"
#include "mbed.h"

IRM2121::IRM2121(PinName IRM_PIN)
: _pin(IRM_PIN), _timer()
{

}

unsigned int IRM2121::Read(void)
// 0 means not valid.
{


_timer.reset();
_timer.start();

while(_pin){
if(_timer.read_us() > NAKATA){
_timer.stop();
return NOT_F;
}
}

_timer.reset();

while(!_pin){
if(_timer.read_us() > NAKATA){
_timer.stop();
return NOT_F;
}
}
_Time = _timer.read_us();
while(_pin){
if((_timer.read_us() -_Time) > NAKATA){
_timer.stop();
return NOT_F;
}
}

_Time = _timer.read_us() - _Time;
_timer.stop();
return _Time;
}

posted by romflag at 00:34| Comment(0) | RCJ パルスボール | このブログの読者になる | 更新情報をチェックする

2015年04月10日

ブログ名変えました(またか)

名前が普通すぎてつまらないなと思ったので....それっぽく...まぁ対して変わってないんですが.


学校が始まって1週間たちました.4年生になり,専門の科目がすごくたくさんになりました.

専門が増え教科書を見て思うのは,ほとんどの専門科目で数学が絡んでくることです.

今まで数学を雑にこなしてきてしまったことを痛く思っています.制御に関して,統計に関して,電気回路,情報.すべての科目に微分積分を必要とします.

しかしながら,専門は楽しい科目ばかりです.実験に,レポート...大変ですが,すべてをロボカップにつなげるべく力をつけていきたいものです.

続きを読む
posted by romflag at 22:10| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。