2009年10月31日土曜日

ETロボコン

東海地区大会を見に行ってきた。RCXでの参加チームは少なかったが、東海地区からチャンピオンシップに進めれるのは、1チームと狭き門だった。
NXTは上位3チームがチャンピオンシップに進めれるが、去年の1位、2位のチームが順調に進出した。
走行部門では守りの走りだったが、モデル部門では完璧に決めてきた。
他の大会を見てないが結果からだけ判断すると、東海地区のレベルは高すぎると思う。

RCXの操舵について
操舵をPID制御で実現するためには、演算周期と操舵周期からあまり現実的ではないと思う。
モータのトルクを0~255まで入力できるが、1msec周期でモータトルクを積算して、255を越えた時は、モータを駆動する。255を越えなければモータを駆動しない。これを繰り返しているため、モータトルクを高速で微妙に変更しても、指令は追従しない。
操舵を切り替えた時は、積算値が255を越える様にすると操舵の切り替えが少しだが早くなる

2009年7月26日日曜日

RCXのモータ

RCXのモータは、あくまでおもちゃのモータなので個体ばらつきは非常に大きい。
しかも、使っているうちにモータは回らなくなる、大会中に回らなくなることは避けたい。
どのモータを使っても同じ走行が出来る様なソフトにすればよいのだが、マイコンは非力だから走行だけに専念させたいので、使うモータに合わせてソフトを調整するか、ソフトに合うモータを探す。
ということは、モータを選べば早く走れる可能性がある

2009年7月24日金曜日

RCXのバージョン

RCX(マイコンの入った黄色い大きなブロック)にVer 1.0と書かれていると思うが、知っている限りでは3種類存在している。
1.Ver 1.0 で充電コネクタがついている
 教育用セットを購入するとこれがついてくると思う
2.Ver 1.0 で充電コネクタがついていない
 MindStormをお店で、一般のキットを買うとこれになると思う
3.Ver 2.0 で充電コネクタがついていない
 MindStormをお店で、一般のキットを買うとこれになると思う

2.と3.は、お店で買うとどちらかになるが、販売された当初に購入したMindStormには Ver 1.0 がついてきたが、販売終了間際に購入したMindStormには、Ver 2.0 がついてきた。
MindStormは、RCX版のことです。(お店にはもう無いと思います)

同じソフトで2つを比べるとVer 2.0 では走行モータの指令値を下げなければ走ることが出来ない。Ver 1.0 を使っていて、走行モータへの指令値を最大にしても走れるソフトが出来ているのであれば、Ver 2.0 を使えば更なるスピードアップが出来る。想像だが、モータの駆動回路の内部抵抗が下がった思う。

チャンピオンシップ大会では、この Ver 2.0 を使っているチームが数チームいた。このことに気づいていたかは不明だが、モデルには書かれていなかったと思う。極秘なのか?

2009年2月9日月曜日

ETロボコン

バッテリ電圧を取得するには、get_battery_mv() が用意されている。これは、現在のバッテリー電圧をmVで取得できる。
int get_battery_mv()
{
long b = ds_scale(BATTERY) * 0xABD4L;
return (int)(b / 0x618L);
}
OSでこのような計算がされている、8bitマイコンで32bit演算しているので処理負荷は高くなると思う。ds_scale(BATTERY) だけでバッテリ電圧値を取得すれば良く、LSB=28.1974(mV)として値を扱えばよい。
しかし、この値はモータの駆動開始時、駆動中、停止中でバッテリー電圧が変動する。
走行前と走行中で変化する、走行中も走行モータの指令に255をセットしてなければ、モータの駆動と非駆動ができる、ステアモータの指令も同じことがいえる。
走行調整用のバッテリー電圧は変動していない電圧が必要になる、フィルタかけて用いると使いやすい

2009年2月7日土曜日

ETロボコン

チャンピオンシップ大会2007では、いかに早く走るかを追求したチームが多かった。2008年はショートカットのポイントが変更されたこともあり、難所を攻略してポイントをとりにいくチームが多かった。
パスファインダーを早く走らせるためには、前輪の操舵を止めて走れば早く走れる。しかし、それではライントレースが出来ないが、操舵量を出来るだけ抑えてライントレースと速度のバランスをいいところに調整できればそれなりに早くなる。

他にもいろいろ検討すれば安定して走行できる
・バッテリ残量による影響
・モータの特性
・操舵抑制ロジック
などなど

2009年2月6日金曜日

ETロボコン

パスファインダーで使っていると操舵モータがときどき動かなくなる。バグではなくモータのブラシとコミュニケータの部分がスパークによって黒ずんでくることによって、非伝導の部分が出来て動かなくなる場合もある
モータは模型用のモータとはレイアウトが違っていることがわかると思う
ギアも内蔵されていて、約15:1に減速されている。(ギアの数は数えていない)

モータモータ

動かなくなったモータを分解してみた

2009年2月5日木曜日

ETロボコン

RCXのマイコン(H8/3292)のマニュアルがあった
H8/3297グループ
残念ながら英語版しかない

Programming Manualを参照すると、
割り算は14ステート ビットシフトは2ステート(シフトの回数は指定できない、1回のみ)

ETロボコン

ETロボコンで使っているRCXは、Hitachi(今はRenesas)の8bitマイコンが使われている。
処理能力の低いマイコンでは、演算の仕方を少し考えなければならない

4分の1にしたいときに、割り算をした場合は、処理時間を多く必要とする
ans = x / 4;

しかし、2bitシフトを使うと処理時間は早くなる
ans = x >> 2;

マイコンのマニュアルで、アセンブラの1命令の必要クロック数を参考にすると、処理時間の差を見ることが出来る。1クロックあたりの時間は水晶とマイコンの分周設定で決まる(最近のマイコンでは逓倍もできる)

2009年2月4日水曜日

ETロボコン

BRICKOSの通常の光センサーの入力は、下記のようになると思う
hikari = LIGHT(SENSOR_1);

これは、このようになり
hikari = (147 - ds_scale(SENSOR_1)/7);

さらに、こうなる
hikari = (147 - ((unsigned int)(AD_C)>>6)/7);

このマイコンのA/D変換は、10bitで行われるため、光センサー値は 0~1023の値に変換される
わざわざ割り算までして LSB を落とすのはもったいないので、
ds_scale(SENSOR_1)
を使うと良い
6ビットシフトは、16ビットの上位10ビットにA/D変換の結果が取り込まれるので6ビットシフトをしている
しかし、これでは光センサー値の大小の関係が反対になってしまうので、
hikari = (1024 - ds_scale(SENSOR_1));
とすると使いやすくなると思う

これにより、白、グレー、黒の差が大きくなる

2009年2月3日火曜日

ETロボコン

ETロボコン2008 チャンピオンシップ大会を優勝した ADoniS の動画がある

OUTコース


INコース

ETロボコン

ETロボコン2008が終了した、大会最後にNXTとジャイロセンサーで倒立した筐体で、ラインとレースのデモがあり来年からこのような筐体もレギュレーションに追加するような案内があった

http://lejos-osek.sourceforge.net/jp/index.htm こちらのページにその時の写真なのか掲載されていた

株式会社ラーニングシステムからジャイロセンサーの販売がされていたが、在庫切れになったところをみると各チームがETロボコン2009に向けて活動を開始しているのか

楽天市場でも販売しているショップがあった。今日手に入るはここだけか?

【NXTをもっと楽しく!】LEGO MS1044 GYROSCOPIC SENSOR FOR MINDSTORMS NXT (ジャイロセンサー)

RCXというマイコンが搭載されたコントローラを使っているが、これには私が知っているだけで3つのバージョンがある。

教育用セットのVer1.0の充電できるタイプ、ショップで売られていた充電の出来ないタイプのVer1.0とVer2.0がある。教育用セットとVer2.0を使っていたが、Ver1.0とVer2.0には、モータの駆動に使っている素子が違っているのか、同じソフトでもパスファインダーの速度に違いが出た。Ver2.0の方が明らかに早い、これに気がついたチームがいたのか、Ver2.0を使っているチームが数チームいた。(残念ながらVer2.0を手に入れたくてももう売っていない)