Amalgam Blog

ついにやってきてしまいました。
そう!!今日は、メキシコ世界大会 への出発日なのです。

RoboCup2012_logo


今回、ロボカップは首都、メキシコシティでの開催なのですが、同じメキシコ国内のロスカボスには、首相も来ているとか!!なんか、セキュリティチェックが厳しくなってそうで怖い。(遠いけど国内だし... )
~今日からのブログの更新予定~
まず、成田空港で一回投稿して、そのあとは、ダラスに無料のLAN環境があったら、そこで更新。
もし、なかったらあらかじめ予約投稿しておいた記事がでます。
メキシコ到着後の、投稿の日時はメキシコ時間になりますのでご注意ください。

~動画について~
むこうのネット環境の状況が分からないのですが、おそらく画質を大幅に落としてのアップロードという事になりそうです。
それすら出来ない可能性もあります

ということで、世界大会、精一杯頑張ってきますので、応援よろしくお願いします!!
(時差ぼけ心配だな...)

メキシコ前最後の自習が昨日ありました。

何をやっていたかというと、ライントレースを何回もやらせてバグを探してました。

その傍らで僕がロボットの予備機を改良しているとライントレースが出来ないという報告が…
焦る焦る

原因は入っているプログラムがちがっていました。

ダウンロードし直して…さぁ大丈夫

…できませーん

あれ?

再度焦り、 焦る。

原因は慣性センサーでした。
どうもこのセンサー、癖があって
運が悪いと全く値を返さないんですよ
ずっと0です。

センサーをNXTから抜いてまた刺すと直ります。

やっとまともに動くようになると、今度はライントレース中に坂のプログラムに入ってしまう現象が起きました。

結局は不等号や加速度センサーの軸を間違っていたのが主な原因でした。

事件は起きる物ですね
練習も、本番も 

〜疑問が解けた〜

学校の理科で慣性の法則について習いました。

当ブログのキーワードである慣性センサーの慣性。
どんな関係だったかは解りました。

慣性センサーの中には加速度センサーと角加速度センサーが入っていて、その値を積分する事で角度等が解ります。

加速度、角加速度はいずれも慣性を利用して測っています。
だから慣性センサーなんでしょう

ついに5日を切ってしまいました。
もちろん世界大会へのです。

行っている間もちゃんとしたネット環境さえあればブログも更新するつもりですし、画質を落としてでも動画をアップしたいなと思っています。

明日に最後の自習があるので、そこでロボットをひたすら動かして気になるところを微調整…なんて考えています。
今のところ大きな問題はないので少し安心していますが、事件は起きる物なので臨機応変な対策をしたいです。

少し早いですが、今まで世界大会行きを応援してくださった方々。
本競技、スーパーチーム、プレゼンのすべてでトロフィーを持って返れるよう頑張ります!!

今日は、赤色のゾーン。通称、レッドゾーンについてです。

1.6.赤色のゾーン
1.6.1 黒いラインは、レッドゾーン(2階)の入り口か傾斜路の下で終わりにして、そこからは、ロボットが何らかの捜索手段を用いて被災者を見つけなければならないようにしてもいい。
1.6.2 レッドゾーンの入り口には、横25cm、幅2.5cmの反射する銀のテープが貼られる。
1.6.3 避難場所はレッドゾーンの、(入り口の角を除く3つのうちの )1つの角に設置される。
避難場所は、黒色で30cm×30cmの正方形を半分にした直角三角形である。
1.6.4 セカンダリの避難場所は、高さが6cmである。(それ以外の条件は1.6.3と同じ)
1.6.5 レッドゾーンは、入り口のみで、出口は存在しない。
被災者を避難場所に運び終えた時点でゴールとする。

昨年度ルールから変更点はありませんでした。

下線を引いたところは、大会運営側に 書いてあるのでしょうか?
見つけなければならないようにしてもいい。 
 果たして、未だにレッドゾーンまで線が引いてある大会など存在するのでしょうか?(ロボカップジュニア レスキューAで。)

深い深いなぞですね!!


すいません。どうやら、世界大会までにルールの解説??が終わりそうにありません。
まぁ、このルールは2013年度のノード・ブロックでも使いますので....許してください。。。 

それでは。

いきなり専門用語です。

プリプロセッサとは…僕も説明しろと言われると困るのですが、簡単に言うと…簡単に言えません。
適当に言うと、プログラムの本文をコンパイルする前に先にコンパイルされて、プログラム全体に影響する特殊能力みたいなものを持っています。

Amalgamでは#include, #define, #ifdefを使っており、次の効果があります。
 
#include
指定したテキストファイルの内容をそのまんまそこにコピペします。
これでセンサーの設定や絶対に変更を加えない部分をまとめる事が出来ます。
僕等の場合、距離センサー(通称DIST)の設定に使っています。
元が何百行もあってしかも意味不明な文字の羅列なのでちょうどいいです。

#define
確実に一番多く使っています。
どんな事が出来るかというと、「定数」を作る事が出来ます。
例えば「
#define A 10」と打てば、Aと言う入れ物に10という数字が入り、プログラム内での変更は出来ません。
センサーの閾値など、数値を固定したいときに便利です。
また、便利な事に数値だけでなくテキストも 入れる事が出来、例えば「
#define SET_I2C_S1 SetSensorLowspeed(IN_1)」と打ち込み、その後SET_I2C_S1と命令すればSetSensorLowspeed(IN_1)と命令したのと同じになります。凄く便利です。これのおかげでプログラムが解りやすくなります。
この「
#define」は応用性が非常に高く、他にも使い方がたくさんあります。

因にこれ、全関数・タスク内で有効になるのでその点でも便利です。 

#ifdef
一種のスイッチのような物で、ON/OFFを切り替える事で、プログラム本文の指定した場所をコンパイルしな事が可能です。
様々な状況を想定し、それに対応したプログラムを作った時の使い分けに便利です。

他にも#ifndef, #endif, #if, #elif, #undef, ##, #line, #error, #pragmaがあります。
はっきり言って用途が解りませんが調べれば簡単に解ると思います。

で、Amalgamではこのプリプロセッサだけで50行使っていますが、人によっては200行あったりプログラムの半分がこれだったりと、いろいろです。
もちろん全く使ってない人もいます。

ではでは 

このページのトップヘ