Scoutプログラミング入門

 RDS(9735 Robotics Discovery Set)の大きな特徴でもあるScoutはRCX(9709 RCX Programmable Brick)とは異なり本体の液晶ディスプレイを使って2つのボタンだけでプログラムを組むことができます.ここでは,そのプログラミングの簡単な入門と,Scoutに関するノウハウをまとめてみました.
1999/09/23記

 PowerModeがRIS1.5からコントロールできるだろう,となっていた記述は誤りだったことが確認できましたのでを削除しました.確認していただいたまるさんに感謝します.
1999/10/18記

 Scout SDKのリリースによって明らかになった事項,特にRCXからScoutをコントロールするためのメッセージの解説とVLL(Visible Light Link)の記述を追加しました.
1999/11/21記

9735 Robotics Discovery Setのレビューはこちら

9748 Droid Developer Kitのレビューはこちら

・Scoutのディスプレイ

 上の写真はScoutのLCDディスプレイ付近を拡大したものです.プログラミングは黒いSelectボタンと,灰色のChangeボタンの2つのボタンで行います.On-Offボタンは(当然)電源のOn-Off,Runボタンはプログラムを実行したり止めたりできます.ディスプレイの回りには黄色のセンサー(入力)端子,黒のモーター(出力)端子とその状態を表すLCDがあります.入力端子の1に繋がれたタッチセンサーがONになったときにはその横にあるLCDが光ります(2の時も同様).また,AB2つの出力端子の間にある三角LEDはモーターの回転方向をリアルタイムで表示します.ここでは,上向きの三角が点灯すると「前方向」,下向きの三角が点灯すると「後ろ方向」にモーターが回っているとしましょう.もちろん,実際にどちらに回るのかはモーターと出力端子との繋ぎ方によって変わります. さらに,写っていませんが,1番の入力端子の上にさらに2つのLEDがあり,ライトセンサーと赤外線ポートの状態を表示しています.う〜ん,親切設計ですね.
 肝心のディスプレイにはMotion,Touch,Light,Time,Scout,FXとバッテリ,実行中の8つの表示部があり,それぞれ以下のような事項を設定します.

Motion 基本的な動き方
Touch タッチセンサーの変化に対する反応
Light ライトセンサーの変化に対する反応
Time ある動作をしている時間の長さ(クロックだと思ってください)
Scout 通常モード(本体でプログラミング)とPowerMode(外部からプログラムをダウンロード)の切換
FX 特殊効果で,色々ある
バッテリ 電池アイコンが表示されると電池交換要(設定ではない)
実行中 プログラム実行中には4つの矢印が順に点灯する.Time設定が短いと点灯間隔も短い.表示のみ.

Selectボタンを押すたびに各表示部が順に点滅し,そこの設定が出来るようになります.その状態でChangeボタンを押すたびに設定が順に変化し,選択した動作が点滅します.全ての動作が点滅している状態は,何も選んでいないことを表します.

・Scoutのプログラミング

 上の写真はマニュアルにあるScout InfoCardを拡大したものです.では,具体的に各種動作について解説していきます.

Scout
NomalMode (Scoutアイコンのみ) 普通に本体でプログラムできます.通常はこちらにしておきましょう.
PowerMode (稲妻アイコンとScoutアイコン) PowerModeになります.他の表示は消え,パソコンからプログラムをダウンロードできるようになります(実際にそうするにはScout Booster Set(2000年発売)が必要らしい)が,本体からプログラムは出来ません.

Motion
 AB2つのモーターの基本的な動きを決めます.センサーに何も入力が無くて,FXも設定されていなければ,ここでの設定が優先されます.
Forward AB2つのモーターを前方向に回転します.
AB前 です.
ZigZag ジグザグ走行します.要するに,モーターAをしばらく(この時間はTimeの設定に依存します)前に回して,それからAを止めてBをしばらく前に回す,という動作を繰り返します.
A前B停止 -> A停止B前 を繰り返すわけです.
Circle 時計回りアイコン AB前 -> A前B停止 を繰り返します.
その場で回転するわけではなくて,大きく回ります.
Circle 反時計回りアイコン AB前 -> A停止B前 を繰り返します.
要するに上の逆です.
Loop A A前 -> A後 -> A停止 を繰り返します.この間Bは停止したままです.
Loop B B前 -> B後 -> B停止 を繰り返します.この間Aは停止したままです.
Loop AB Loop AとLoop Bの動作をちょっとずらして行います.
A前B停止 -> AB前 -> A後B前 -> AB後 -> A停止B後 -> AB停止 を繰り返します.
指定せず 何も動きません.TouchやLightでWaitForを選ぶ時にはMotionを指定しないと,何も動かないので気を付けましょう.

Touch
 1と2の2つの入力端子に繋がれたタッチセンサーに対する反応を設定します.
Reverse タッチセンサーがONになる毎にMotionの動作を逆方向にします.例えば,MotionがZigZagの時は
A前B停止 -> A停止B前 からタッチセンサーが押されると,その瞬間から
A後B停止 -> A停止B後 になり(実行中の状態も反転する),もう一度押すと元に戻ります.
LoopABだとちょっとわかりにくいですね...
Avoid 現在のMotionに関係なく障害物を避ける動作をします.センサー1がONになったときは
AB後 -> A前B後 -> Motion設定動作
センサー2がONになったときは
AB後 -> A後B前 -> Motion設定動作
となるのですが,...5回ONになる毎に
A前B後 -> A後B前 を3回繰り返します.要するにいやいやをするわけですね.
WaitFor どちらかのセンサーがONになる毎にMotion設定動作の実行,停止を繰り返します.初期状態は停止です.センサーに区別はありません.
Brake センサー1がONの間モーターAを停止し,センサー2がONの間モーターBを停止します.止まっていない方のモーターはMotion設定動作を続けます.
これを使うときにはセンサーとモーターの組み合わせに気を付けないと,障害物にぶつかって行くことになります.
指定せず タッチセンサーには反応しません.ただ,センサーをONにする(押す)と,その間Scoutの対応するLCDが点灯し,音も鳴るので効果として使うことは可能です.

Light
 Scout本体の左前方に付いているライトセンサーに対する反応を設定します.ライトセンサーのON-OFFは光量で決まるのではなくて,初期状態からの光量の変化で決まります.PowerONしたとき周りが明るければ,暗くなればON.周りが暗ければ,明るくなればONです.30(RCXで言うところのだと思います)変化があるとONになるそうです.ただし,Seekは例外で絶対光量を計るようです.
Seek 太陽アイコン (Seek Light) 現在のMotion設定動作の途中(といっても一段落付いた後です)で以下のSeek動作をします.
A前B後 -> AB停止 -> A後B前 -> AB停止 -> Motion設定動作
初めの回転の時に明るい(絶対光量で計っているようです)向きを見つけると,後の回転でそこに向いて止まり,Motion設定動作に移ります.
Seek 月アイコン (Seek Dark) 現在のMotion設定動作の途中(といっても一段落付いた後です)で以下のSeek動作をします.
A前B後 -> AB停止 -> A後B前 -> AB停止 -> Motion設定動作
初めの回転の時に暗い(絶対光量で計っているようです)向きを見つけると,後の回転でそこに向いて止まり,Motion設定動作に移ります.
Avoid 現在のMotionに関係なく光の変化を避ける動作をします.ライトセンサーがONになる毎に
AB後 -> A後B前 -> Motion設定動作
となるのですが,...5回ONになる毎に
A前B後 -> A後B前 を3回繰り返します.要するにいやいやをするわけですね.
WaitFor ライトセンサーがONになる毎にMotion設定動作の実行,停止を繰り返します.初期状態は停止です.
Brake ライトセンサーがONの間2つのモーターABを共に停止します.
指定せず ライトセンサーには反応しません.ただ,センサーがONになると,Scoutの対応するLCDが点灯し,音も鳴るので効果として使うことは可能です.

FX
 Motion,Touch,Lightで決めた動作以外の特殊効果を設定します.一言でどうとは言えないので,解説を読んでください.
虫アイコン(Bug Mode) 現在のMotion設定動作の途中(といっても一段落付いた後です)で以下のBug動作をします.
AB前 -> AB後 -> AB前 -> AB後 -> AB前 -> AB後 -> AB前 -> A後B前 -> A前B後 -> A後B前 -> A前B後 -> A後B前 -> A前B後 -> A後B前
この間,Scoutはピロピロ〜と音を鳴らします.
スピーカーアイコン(Alarm Sounds) AB2つのモーターの回転方向と停止状態によってそれぞれ8つの異なる音が鳴り続けます.両方のモーターが停止しているときには何も鳴りません.後から変化した方が有効になります.
?アイコン(Random Movements) 現在のMotion設定動作の途中(といっても一段落付いた後です)で,全くランダムに2つのモーターを動かすランダム動作をしばらくします.
原子力アイコン(Geiger Counter) ライトセンサーに入る光量に従ってビープ音の間隔が変化します.強くなると間隔が短くなります.
指定せず 特殊効果無し.

Time
 Motion設定動作や,Avoid,Seek,Bug,Randomの各種動作を続ける時間の長さを決定します.クロック(心臓の鼓動?)の速さを決めていると言った方がわかりやすいかもしれません.○の数が1つ増えると2倍ずつ長くなります.

・Scoutとリモコン

 ScoutはMindStorms用のリモコン(9738 Remote Control)で操作することができます(MicroScoutはできません).モーター関係のボタンとStopやスピーカー(ビープ)ボタンの動作はRCXの時と同じなのですが,MessageボタンとProgramボタンの動作は以下のようになります.参考にしてください.

Message (ScoutがRUN中のみ有効)
1 現在のMotion設定動作に関わらず,いきなりSeek Dark動作をします.終わると,元の動作に戻ります.
2 現在のMotion設定動作に関わらず,いきなりSeek Light動作をします.終わると,元の動作に戻ります.
3 現在のMotion設定動作に関わらず,いきなりBug動作をします.終わると,元の動作に戻ります.

Message from RCX (ScoutがRUN中のみ有効)
 MessageはRCXからも送ることができます.その時は1,2,3以外に4から14までのMessageに対する反応が決まっており以下のようになっています.全ての動作は0.5秒で終了し,その後それまでの動作に戻ってしまいますので,RCX側で続けてMessageを送る必要があります.この項はLEGO社のScoutSDKの資料を参考にしました(13と14を除く).
4 AB前 にします.
5 AB後 にします.
6 A前 B後 にします.
7 A後 B前 にします.
8 A前 B停止 にします.
9 A後 B停止 にします.
10 A停止 B前にします.
11 A停止 B後 にします.
12 AB(Cも)停止 にします.
13 C(VLLで繋がっているMicroScoutのモーター)左 にします.
14 C(VLLで繋がっているMicroScoutのモーター)右 にします.

Program
 以下の設定にしてRunします.
P1 Motion -> ZigZag
Touch -> Avoid
Light -> 設定無し
Time -> 1
FX -> Bug
P2 Motion -> Forward
Touch -> Avoid
Light -> Seek Light
Time -> 2
FX -> Bug
P3 Motion -> LoopAB
Touch -> 設定無し
Light -> WaitFor
Time -> 2
FX -> Alarm
P4 Motion -> LoopAB
Touch -> 設定無し
Light -> 設定無し
Time -> 1
FX -> Random
P5 Scout -> PowerMode

・VLL(Visible Light Link)

 ライトセンサーとVLL(Visible Light Link)の出力はScoutの上部にあり,ここには1+1/3ピンが丁度はまるようになっています.ライトセンサーは向かって右側で,VLLは向かって左側です.VLLとは光のパターンで通信する仕掛けで,Fiber Optics Cable(9732 Extreme Creatures8480 Space Shuttle8456 Fiber Optic Multi Setに入っています)を使って上の写真のように繋ぐことでScoutからMicroScoutをコントロール(といってもモーター1つだけですが)できます.試しに,上のように繋いでMicroScoutをPモードにすれば,リモコンでCモーターを動かすとVLL端子がピカピカ光ってScoutからMicroScoutへ指令が送られ,モーターが回転します.
 リモコン以外にも Bug動作やRandom動作の際にもVLLが働きますので,とりあえずはこれを使ってMicroScoutを3つ目のモーターとして使えますが,RCXからScoutに送るMessageからもコントロールできます(リモコンの節参照)ので,結構これだけでも応用範囲は広いかもしれません.

Access counted since 1999/09/23


This page was created by FishBone