leJOS
leJOSは、マインドストームで作ったロボットをJavaで制御するためのライブラリ。Cで制御できるlegOSのJava版だ。
マインドストームにはブロックを組み合わせるようにプログラムを作成できるツールが入っているがプログラマには結構使いにくい(特にループや変数の扱いが・・・)。
leJOSにはロボット制御に必要なさまざまなクラスライブラリが用意されている(センサーやモータークラスなど)。普通のJavaプログラムのようにロボットをプログラミングできるので使いやすい。
マインドストーム・プログラミング入門―LEGOでメカトロニクス/ロボティクスを学習する (COMPUTER TECHNOLOGY)
- 作者: ブライアンバグナル,Brian Bagnall,長瀬嘉秀,二上貴夫,テクノロジックアート
- 出版社/メーカー: CQ出版
- 発売日: 2004/07
- メディア: 単行本
- 購入: 1人 クリック: 35回
- この商品を含むブログ (10件) を見る
leJOSの基本から応用まで広くカバーされている。この本ではR. Brooksのサブサンプション・アーキテクチャまで解説されておりロボティクスの基礎を学ぶ上でよいと思った。
プログラムはこんな感じに書ける。
import josx.platform.rcx.*; // leJOSのライブラリ public class Tippy { public static void main(String[] args) { Motor.A.forward(); // モーターAを正転 Motor.C.forward(); // モーターCを正転 while (true) { if (Sensor.S2.readBooleanValue() == true) { // センサー2が反応したら backUpAndTurn(); } } } public static void backUpAndTurn() { Motor.A.backward(); // モーターAを逆転 Motor.C.backward(); // モーターCを逆転 try { Thread.sleep(600); // 600msそのまま } catch (InterruptedException e) {} Motor.A.forward(); try { Thread.sleep(300); } catch (InterruptedException e) {} Motor.C.forward(); } }
これをロボットに転送して実行できる。
転送は赤外線(TVのリモコンと同じ)で行うので周囲が明るいとなかなかうまくいかない。その場合は、
- 周囲を暗くする。
- コントロールパネルで赤外線タワーの出力をLONGにする。
- 同じくタイムアウト時間を長くする。
とよさそう。