ロボカー走行の基礎


 

Tiny:bitを動かしているのは、左右に2個装備された車輪です。

 

車輪は、ギアードモーター(モーターの回転数を減らすためのギア機構の組み合わせ)に接続されています。

 

 

 

 

モーターは毎分数千回転回るので、車輪を回すのには

・回転数が多すぎる

・回転する力が弱い(トルクが低い)

ため、減速機構が必要となります。

 

Tiny:bitに内蔵されているギアードモーターは、総金属製で精度も高く走行音も静かです。

よく使われているプラスチック製品 に比べ25倍程度の値段です。

このTiny:bitはかなりコスパが良い製品であることが分かります。

 

モーターと配線のハンダ付け部分はよく断線する箇所なので、しっかりと接着剤で補強され、取り付け向きまで考慮されているているところも好感度が高いです。

 

 

 

 

 

以降のテキストでは、Tiny:bitを上から見て

左車輪・右車輪などと呼びます。

 

左右のモーターのパワーが全く同じで、

タイヤのグリップも同じだった場合、

車両は真っ直ぐ進むはずです。

ですが、現実はモーター・ギアの性能差や、地面の状態によって真っ直ぐ進むことは期待できません。

マルチメディア実習室の床はパイル地ですが、製品のバラツキもあるし、個々起毛の向きも違うので、環境としてはあまり良くありません。

 これを補正するには

1 左右モーターへのパワーの与え方を調整する。

2 必要に応じて進行方向制御機構を追加する。

などの対策が必要になります。

(上記「2」は学習用ロボカーには少々無理な話です。)

Tiny:bitには車を走らせるためのブロックが数種類用意されています。

 

①フルパワーで走行

②モーターパワーを0・・255段階で指定して走行

③左右のモーターパワーを別個に指定し走行

今回は②を使って走行実習を行います。

 

注意事項

①は車速が早すぎて制御が困難なため講座では使用しません。

②は、左右モーター個別の速度制限ができませんが、統一的にモーターパワーを制御できるので、普通に使えそうです。
 講座では50を使いますが、最大でも70程度までが適切だと思います。

③は調整が多少複雑なため入門編では扱いません。

 「前進」で左右のモーター速度を変えることで円弧を描いて走行ができます。(これは使えます)

 「左輪中心回転」「右輪中心回転」は片側モーターだけ駆動します。

   なので左/ 右斜め前に出て横を向くことになります。(桂馬飛びのイメージ)

   左右のモーター速度を変えることにあまり意味はなさそうです。

 「左旋回(その場)」「左旋回(その場)」は、左右の車輪を反対向きに回します。

   なのでその場で旋回します。(超信地旋回)

実は、全ての場合を検証すること自体意味がないのでやっていません。

正直なところブロック群の出来はあまり練られていると思えません。

 

 

 

左のプログラムはいずれも1秒後に停止します。


 

「入力」ブロック群から

「ボタン A が押されたとき」

を配置します。

 

 「ずっと」「最初だけ」ブロックは削除しても構いません。

 

「Tiny:bit」ブロック群から

「車速 前進 速度」を「ボタン A・・」に組み込みます。

 

 

 

 

 

 

 

 

 

プルダウンメニューの説明です。

・前進

 そのまま前進

・後退

 そのまま後退

 ・左輪中心回転

 左輪を軸に右輪だけ駆動します。(少し前に出ます)

・右輪中心回転

 右輪を軸に左輪だけ駆動します。(少し前に出ます)

・停止

 両輪のモーターを停止します。(速度が0以上でも止まります。)

・左旋回(その場)

 左右のモーターを逆方向に回します。(左:後退 右:前進)

・右旋回(その場)

 左右のモーターを逆方向に回します。(左:前進 右:後退)

 

ブロックの「車速 前進」を

「左旋回(その場)」に変更します。

 

(机上から落ちないためです。)

 

 

本講座では

ブロックの「速度」は 50 に設定します。

これは制御・動作確認困難になるのを避けるためです。

1 速度(0)の位置をマウスクリックし

  スライダーで50あたりに設定する。

2 キーボード入力

  50と直接数字を入れる。

いずれかの方法で設定します。

 

今の設定では、ずっと走り続けてしまいます。

 どのぐらいの時間走るのか

すなわち、

 どの程度の時間モーターに電力供給するか

必ず指定します。

 

「基本」ブロック群から「一時停止(ミリ秒)100」

を「車速・・」の下側に組み込み

数字を「200」に変更します。

 

200msの間、電力供給をする

ということになります。

 

走る時間が経過した後は通常「停止」命令が必要です。

 

「Tiny:bit」ブロック群から

「車の制御 前進」

を「一時停止・・」の下側に組み込み

動作を「停止」に変更します。

(上に組み込んでいる「車速・・」ブロックをコピーし、「停止」に置き換えても同じ動作をします)

 

 

※重要

この「停止ブロック」を入れ忘れた場合は、

動作中の車体を手で持ち上げて、

基盤の電源スイッチを切ってください。(アルアルです・・・)

 

 

ロボカーへの書き込み準備をします。

 

1 基盤上の電源スイッチは必ず切った状態にしてください。

  意図しない状態で走り出すと、

  机上から落下し故障の原因となります。

 

2 USBケーブルを接続し書き込める状態にします。

 

3 USB接続した際にエクスプローラが起動された場合は、無視するか「x」で閉じてください。

 

「ダウンロード」ボタンをクリックします。

 

ダウンロード中はmicro:bitの基盤裏でオレンジ色のLEDのが点滅します。

 

ダウンロードが終わったら

 

・USBケーブルを抜き

・走らせる場所へ移動させ

・電源スイッチをON

にします。

 

電源をONにすると赤LEDが点灯します。

 

準備ができたらmicro:bitの「Aボタン」を押します。

 

うまく行ったら、今度は「その場旋回」を「前進」に変更し、

フロアー上で走行させてみてください。

 

 

 

 

 

今度は直角に曲がる方法を考えてみましょう。

 

考え方は同じです。

停止した場所で左に90度方向を変える・・

 

そうです「左旋回(その場)」ブロックの活用

 

「左旋回(その場)」でモーターを動かし始めます。

あとはどのくらいの時間モーターを動かすか。

 この動かす時間は、それぞれの環境によって違います。

左図はあくまで一例です。(プログラム)

 

 

Tiny:bitをプログラミングする時、必ず意識して欲しいことをまとめます。

 

■ 速度は50程度に設定する。

■ 動かす命令の後には必ず「一時停止」ブロックを入れ、駆動時間を指定する。

■ モーターを動かしたら、どこかで「停止」ブロックを入れる。

 

それ以外にも課題はあります。

この車だけではないのですが、動くものには慣性の力が働きます。

なので、それを見越した制御をするか、またはブレーキをかけるか。

あるいは、現在位置や速度をどうやって知り、誤っていた場合補正するのか。

実用化への課題は山積です。

 

 

ここまでで学習したことを応用してみましょう。

 

・まっすぐ走らないときは左右モーターの強さを変えてみる

 「車速2 前進▽ 左モーター 右モーター」ブロック

  右に曲がるときは、右モーターを少し強くしてみる、など

 

・前進して、停止、右折して、停止 をプログラミング

・ヘッドライトの点灯と組み合わせるのも良いかも。

 走っている時:緑、 停車中:赤 など

 

・「後退」、「ゆっくり左に曲がる:左輪中心回転」もできるよ

 

ーーー この実習は終わりです ーーー