二つ目のお題は「ロボットの移動速度の測定」です。ロボットを秒速5cmで走らせて、「本当に移動速度が秒速5cmだ」と測定できたら成功とします。
このプログラム(speed_control 3.llsp3)ではモーターのスピードを読み取るブロックを使ってグラフを作成します。
グラフを拡大します。グラフの横軸が時間(単位は秒)、縦軸はモーターのスピード(単位は不明)です。
一見すると、うまくグラフができていて、お題をクリアしているように思えますが、おかしな点がいくつかあります。気が付くでしょうか?
まず、モーターのスピードが「0」から始まるべきですが、なぜか「-16」から始まっています。 あと、スピードの値がだいたい「9」を示しているのですが、その意味がわかりません。移動スピードだとすると、秒速5cm÷0.446なので、計算上は11.2くらいであるはずです。 もしかして「移動スピード」と「モーターのスピード」では、単位が違うのでしょうか? ちょっと使いにくいです。
スピードのブロックを使わずに移動速度を測定するプログラム(speed_control 4.llsp3)を作りました。ちょっと規模が大きくなってしまったので、測定の処理をマイブロックにしました。
プログラムを細かく説明すると終わらないので、大まかに説明します。速度を測るには、モーターの回転角度をこまめに検出しないといけません。このプログラムでは0.1秒に1回のペースで速度を求めることにしました。