DATE : 2007/04/09 (Mon)
これまで LMS (Lego Mindstorms Simulator) 上で動作していたものを実機上で動作させてみました。
LMS 上では Java を使ってプログラムを組んでいたのですが、実機向けに NQC に移植しました。
( ^ω^)さすがにマインドストーム専用だけあって、NQC は組みやすいです。
やはり、LMS と実機とではかなり動作が違います。例えば、LMS がマインドストームをシミュレートする速度は実機の速度と同じではありませんし、それが一定に保たれる保証はありません。
(;^ω^)もっと高性能なマシン上でシミュレートすれば話は別かもしれませんが。
なので、経過時間に依存する処理は、LMS と実機とではその経過時間の閾値が異なってきます。
また、光センサーの取得する明るさも LMS と実機とでは異なります。実機では、床画像のピクセル値の明るさが光センサーの取得する明るさとなります。実機の場合、完全に白い紙や黒い部分、光源は存在しないので、光センサーの取得する値は実際に床へかざして確かめる必要があります。
さらに、床が黒い部分から白い部分に光センサーが移った場合、取得する明るさが一瞬のうちに暗い値から明るい値へと切り替わるわけではありません。連続的に、暗い値→少し明るい値→明るい値へと変化します。変化する速度は瞬間的なものですが、光センサーから明るさを取得するタイミングによっては中途半端な値が出てくることもあります。
今回、白い紙の上で黒い線をライントレースした後、線上にある灰色の領域に触れると90°回転するという動作を実機上で行いました。すると、ライントレースの最中に回転が始まってしまうという事態が頻発しました。これは、ちょうど光センサーの変わり目の値を読んでしまったことで起きた現象でした。
( ^ω^)結局は、黒い線を灰色に、回転するための領域を黒とすることで、ライントレース中に灰色を検出しないようにしました。
(;^ω^)これはなかなか、実機でないと気付かない現象ですね。