カテゴリー「プログラミング」の記事

マイクロマウスの迷路探索

マイクロマウスは、迷路を自分で考えて、ゴールまでたどりつく自律型ロボットです。初期の段階では、常に左壁に沿って動くという左手法というアルゴリズムが採用されていました。しかし、ゴールの位置が端から中心に変更され、単純な左手法では解けないようになりました。次に求心法という中央を優先的に探索するアルゴリズムが考えだされました。これにより、マウスはどんな複雑な迷路でもゴールに辿り着けるようになりました。マイクロマウス競技は、迷路探索の他に5回のトライアルを通して、いかに早くゴールに着くかを競う目的があります。そのため、距離が短い経路ではなく、マウスの最速経路を算出する必要があります。一般的にカーブよりも直線の方が速く走れるため、迷路の道順に重み付けを行い、直線優先の探索を行います。トップクラスでは、普通のマウスがもっとも嫌うジグザグな経路を斜めに走ることができます。マウスの横幅を縮めることで、斜めの直線経路が最速になるのです。歴史ある大会のため、非常に高度なレベルですが、10年以上に確立された枯れた技術でもあります。今年長らく変化がなかったマイクロマウスの世界も大きな改革が行われます。迷路のサイズが半分になるのです。ロボットの更なる小型化、モーター制御技術の高度化が見込まれます。迷路の探索アルゴリズムも抜本的に見直されるようなルール改正があるとよいと思います。

にほんブログ村 科学ブログ ロボットへ アルゴリズムの真髄

高速マイクロマウスの作り方―勝てるロボコン (勝てるロボコン) Book 高速マイクロマウスの作り方―勝てるロボコン (勝てるロボコン)

著者:浅野 健一
販売元:東京電機大学出版局
Amazon.co.jpで詳細を確認する

| | コメント (0) | トラックバック (0)

アイコンによるプログラミング

計測制御ソフトのLABVIEWやデータマイニングソフトのクレメンタインなどのアプリは、アイコンによってプログラミングするインターフェイスを持っています。データを抽出したり、フィルタをかけたり、出力結果をグラフに表示させたりするような複雑な処理を画面上でアイコンを配置し、入力と出力の線をつなぐことで、簡単に実現できます。C言語やJAVAなどのプログラミング言語の知識のない人や実験や研究で様々な処理を短時間で試したい人に向いています。レゴのロボットキット、マインドストームは、同様のインターフェイスを持っています。そのため、小学生でもロボットの制御プログラムを簡単に開発することができます。処理が長くなってくると、アイコンを画面にうまく配置できず、可読性が低くなるという欠点もあります。しかし、コンピュータは、年々高速化しており、プログラミングを簡略化する流れは間違いなく進むでしょう。10年後、プログラミングは、WORDとEXCELと同じレベルの一般化したスキルになると思います。

LEGO 8527 レゴ マインドストーム NXT LEGO 8527 レゴ マインドストーム NXT
販売元:ハピネット・オンライン Yahoo!店
ハピネット・オンライン Yahoo!店で詳細を確認する

図解LabVIEW実習 ゼロからわかるバーチャル計測器 図解LabVIEW実習 ゼロからわかるバーチャル計測器
販売元:TSUTAYA online
TSUTAYA onlineで詳細を確認する

| | コメント (1) | トラックバック (0)

プログラミング言語

組み込み系のプログラミング言語もCPUの進歩により、だんだん高級言語になってきました。Z80などの初期のCPUでは、アセンブラというほとんど暗号のような言語を使っていました。レジスタや割り込み、IO出力などCPUの仕組みを知るには、とても勉強になるのですが、ちょっとした処理を行う上でコーディングの工夫が必要でした。例えば、割り算の処理を行うためにビットシフトを複数回繰り返すなどです。次にH8やSH2などCPUが高速化されるとC言語が利用されました。C言語は複雑なアルゴリズムやデータ処理を表現できる上に、ポインタのようにメモリへきめ細やかにアクセスでき、組み込みプログラミングに適していました。さらに世代が進むと組み込みの世界も、大規模で処理が複雑になり、再利用や他システムとの連携が必要になりました。そこで、組み込みOSとJAVAなどのオブジェクト指向言語と登場となります。より人間に近い思考で設計でき、複雑な処理を短期間で実装出来るようになりました。しかし、ブラックボックスの部分が多いため、不具合を特定するのが、難しくなったように思います。高級プログラミング言語の功と罪です。

組み込みC/C++プログラミング入門 組み込みC/C++プログラミング入門
販売元:セブンアンドワイ
セブンアンドワイで詳細を確認する

| | コメント (0) | トラックバック (0)

リアルタイムOS

ロボットにもパソコンと同じ様にオペレーションシステムが必要です。WindowsやLinuxなどが思い浮かぶと思います。これらのOSとの大きな違いは、リアルタイム性があります。複数の処理が重なった場合にうまく資源を割り振り、優先順位をつけ、必要な時間までに処理を終わらせることです。ロボットは環境の変化に合わせて、即座に動作を実行する必要があり、リアルタイム性が不可欠です。いつまでに処理を終わらせられるか保証する必要があります。リアルタイム機能をもったロボット専用OSの標準化が進められるでしょう。

| | コメント (0) | トラックバック (0)