ロボジョイちゃれんじ教室

SPIKEプライム ロボコンヒント集

第1回「ロボットの移動速度は毎秒何cmか?」

  • Page:
  • 1
  • 2
  • 3
  • 4

◆モーターのスピードを読む

二つ目のお題は「ロボットの移動速度の測定」です。ロボットを秒速5cmで走らせて、「本当に移動速度が秒速5cmだ」と測定できたら成功とします。
このプログラム(speed_control 3.llsp3)ではモーターのスピードを読み取るブロックを使ってグラフを作成します。

プログラムを実行するとロボットが秒速5cmで前進します。走り終わるとグラフが表示されます。
(プログラムに問題があり、ロボットが25cmより長く走ってしまいます。これはあとで直したいと思います。)

グラフを拡大します。グラフの横軸が時間(単位は秒)、縦軸はモーターのスピード(単位は不明)です。
一見すると、うまくグラフができていて、お題をクリアしているように思えますが、おかしな点がいくつかあります。気が付くでしょうか?
まず、モーターのスピードが「0」から始まるべきですが、なぜか「-16」から始まっています。 あと、スピードの値がだいたい「9」を示しているのですが、その意味がわかりません。移動スピードだとすると、秒速5cm÷0.446なので、計算上は11.2くらいであるはずです。 もしかして「移動スピード」と「モーターのスピード」では、単位が違うのでしょうか? ちょっと使いにくいです。

スピードのブロックを使わずに移動速度を測定するプログラム(speed_control 4.llsp3)を作りました。ちょっと規模が大きくなってしまったので、測定の処理をマイブロックにしました。
プログラムを細かく説明すると終わらないので、大まかに説明します。速度を測るには、モーターの回転角度をこまめに検出しないといけません。このプログラムでは0.1秒に1回のペースで速度を求めることにしました。

出来上がったグラフです。グラフの横軸が時間(単位は秒)、縦軸はロボットの速度(単位はcm/秒)です。秒速5cmだと、モーターの回転角度は0.1秒に10度くらいなので、グラフの線が荒いです。このグラフを見ると、「だいたい毎秒5cmで走っている」ことがわかると思います。これでお題をクリアできました。
これで終わって良いのですが、実は1つおかしなところがあります。
グラフの最後が「秒速0cm」で終わるべきなのに、「秒速5cm」で終わっています。これはロボットが25cm前進したあと、正しく止まっていないためです。

  • Page:
  • 1
  • 2
  • 3
  • 4