円周は計算で求めることもできます。
直径×円周率=円周ですから、このタイヤは直径が56mmだとすると、56×3.14=175.84mm。四捨五入して176とすると、 17.6cmということになります。 巻尺で計るよりは正確だと思います。
プログラムの重要部分を拡大してみました。
プログラムの仕組みは単純で、パワーコントロールを使って、一定のパワーでモーターを回転させているだけです。
パワーコントロールをオンにすると、角速度が一定に保たれるので、ロボットの速度が固定されます。
写真の部分は、パワーを決定するための計算ブロックです。移動速度(単位はcm/秒)をモーターの角速度に換算して、さらにパワーに換算しています。変数「tyre」にはタイヤの円周が格納されています。
計算の最後に「9.73」で割っていますが、その理由は次の写真をご覧ください……。
……「9.73」という数値は先のプログラム(Program-2.rbt)から求めた値です。パワー「75」でモーターを回したさいに、モーターが「約730度」回転していましたので、730÷75=9.733....これがパワー1つあたりの角速度という定数として使うことができるのです。
再現したい角速度を9.73で割ると、モーターに必要なパワーを求めることができます。
では、実際にプログラムを実行してみましょう。
ここでは、「NXTスピードメーター」という自作の測定器を使ってロボットの移動速度を計測してみたいと思います。この「NXTスピードメーター」は2つ光センサーを搭載していて、センサーを通過した時間の差から物体の速度を求めることができます。
プログラムを実行すると、液晶画面に指定する速度が表示されます。ここで「右」「左」ボタンを押すと、速度を変更できます。速度の単位は「cm/秒」です。
「決定」ボタンを押すと、必要なパワーが算出されて、モーターが回転し始めます。
たとえば、移動速度を25cm/秒と選択すると、パワーは52.555と算出されました。
実際にロボットを走らせてみました。ロボットは80cm進むと止まります。
指定した速度が「25cm/s」だったのに対して、実測した速度が「25.2cm/s」でした。 なんと、1%未満の誤差で再現できました。
他にも「10cm/s」や「30cm/s」などの速度も試してみましたが、ほとんどそのままの速度を再現することができました。
大成功です。
パワーコントロール機能が速度コントロールとして使えることを証明することができました。
ただし、プログラムには限界があるようです。
ある速度を超えると、理想と現実にズレが生じてきてしまいます。 ここでは、「50cm/s」と設定したつもりが、実測では「40.7cm/s」となってしまいました。モーターの角速度が足りてません。