カムロボを制御する(プログラミング)
micro:bitを使って、タミヤのカムプログラムロボット(通称カムロボ)を制御します。この記事では、プログラミングによってカムロボを制御する手順について解説します。
カムプログラムロボットの制御(目次)
- 準備するもの
- 組み立てる前に
- カムロボを組み立てる
- micro:bitを組み込む
- カムロボを制御する(プログラミング)・・・いま読んでいる記事
カムロボを制御する仕組み
プログラミングの前に、カムロボを制御する仕組みを見てみましょう。
カムロボの動力源と動作の仕組み
図9-2-5-1は、カムロボを下から見たものです。カムロボの動作は、モーターが動力源となっています。このモーターで生み出された動力は、ギヤケースを介して、起動輪に伝えられます。起動輪は、履帯(りたい)を駆動させるためのもので、起動輪の外周には、履帯の穴とかみ合わせるための歯が付いています。カムロボには、二つのモーターが搭載されており、左右の履帯を別々に駆動させることができます。履帯は、クローラーとも呼ばれます。
起動輪とカムロボに働く力の関係
起動輪の回転する向きと、カムロボに働く力の関係について、詳しく見てみましょう。図9-2-5-2のように、起動輪が青い矢印の向きで回転すると、履帯は赤い矢印の方向へ動きます。この時、カムロボには、前へ進もうとする力が働きます。
また、図9-2-5-3のように、起動輪が逆の向きへ回転すると、履帯も逆の方向へ動きます。この時、カムロボには、後ろへ進もうとする力が働きます。
このように、履帯が動く方向(起動輪が回転する向き)によって、カムロボへ働く力の方向が決まります。履帯が動く方向(起動輪が回転する向き)は、モーターの軸が回転する向きによって制御されます。左右の履帯(起動輪)は、二つのモーターによって別々に駆動されるので、カムロボに働く力の向きを、カムロボの右手側と左手側で個別に変えることができます。
すなわち、二つのモーターの軸が回転する向き(左右の履帯が動く方向)を制御することで、カムロボに働く力の向きを左右で変えることができ、それらを組み合わせることでカムロボを動作させます。また、モーターの回転速度を変えることで、履帯の動くスピードが変化するので、さらに複雑な動作を行えます。
カムロボの動作
では、左右の履帯が動く方向とそのスピードを組み合わせると、カムロボがどのように動作するのか詳しく見てみましょう。下図は、カムロボを上から見た図です。赤い矢印は、履帯が動く方向(履帯の上側が進む方向)を表しています。青い矢印は、カムロボの本体が動く方向を表しています。
左右の履帯を同方向・同スピードで動かすと、カムロボは、その方向に応じて「前進」または「後進」します。これは、カムロボに働く力の向きが左右で同じになるからです。
左右の履帯を異なる方向・同スピードで動かすと、カムロボは、その方向に応じて「その場右回り」または「その場左回り」します。これは、カムロボに働く力の向きが左右で逆になるからです。
左右の履帯を同方向・異なるスピードで動かすと、カムロボは、そのスピードの違いに応じて「右旋回」または「左旋回」します。これは、カムロボに働く力の向きが同じでも、強さが左右で異なるからです。図9-2-5-6では、小さな矢印のほうがスピードが遅いことを表しています。履帯の動く方向を逆にすると、後進しながら旋回させることができます。
このように、二つのモーターを制御することで、左右の履帯が動く方向(起動輪が回転する向き)とスピードを変化させ、その組み合わせによってカムロボを複雑に動作させることができるのです。
すなわち、カムロボの制御とは、これら二つのモーターをプログラミングによって制御するということなのです。
プログラミングの準備
カムロボを制御するためのプログラミングは、他のプログラミングと同じくMakeCodeエディターで行いますが、事前に「拡張機能を追加する」という準備が必要です。
拡張機能を追加する
拡張ボード「Micro:bit Driver Expansion Board」用の拡張機能を追加する手順を紹介します。
MakeCodeエディターへアクセスして「新しいプロジェクト」をクリックします。
プロジェクトに名前を付けます。ここでは「カムロボの制御」としました。
「高度なブロック」をクリックして、さらに「拡張機能」をクリックします。
検索欄に「https://github.com/DFRobot/pxt-motor」と入力して「虫メガネ」をクリックします。
「motor」が表示されるので、クリックします。
ブロックの一覧に「DF-Driver」と表示されるので確認します。これで、拡張ボード「Micro:bit Driver Expansion Board」用の拡張機能が追加されました。
これで、カムロボの制御(プログラミング)の準備が整いました。
拡張ボード「Micro:bit Driver Expansion Board」用の拡張機能
追加された拡張機能を見てみましょう。一覧に表示されている「DF-Driver」をクリックすると、使用できるブロックが表示されます。ブロックには、DCモーターの制御(Motor)・ステッピングモーターの制御(Stepper/Dual stepper)・サーボモーターの制御(Servo)などがあります。
カムロボの制御では、DCモーターの制御(Motor)ブロックを使います。図9-2-5-14は、DCモーターを回転させるブロックです。
図9-2-5-15は、DCモーターを停止させるブロックです。
DCモーターを回転させるブロック
DCモーターを回転させるブロックを詳しく見てみましょう。このブロックには「制御するモーター・回転の向き・スピード」のパラメーターを指定します。
制御するモーター
制御するモーターをM1・M2・M3・M4から選択します。カムロボを組み立てた時のことを思い出してください。図9-2-5-17のように、カムロボを背面から見て左側のモーターから伸びるコードをM1、右側のモーターから伸びるコードをM2につなぎました。
このパラメーターには、カムロボの左手側を制御する場合はM1、右手側を制御する場合はM2を指定します。
回転の向き
制御するモーターの回転する向きをCW・CCWから選択します。CW・CCWは、それぞれClock Wise・Counter Clock Wiseの略語で、回転の向きを表す用語です。本来はモーターを回転軸側から見た時に、軸が時計回りであればCW、反時計回りであればCCWとなります。
ただし、この記事では本来の意味ではなく、前へ進むように履帯を動かす場合にはCW、後ろへ進むように履帯を動かす場合にはCCWとなるようにモーターのコードをつないでいます。
スピード
制御するモーターのスピードを0~255の値で指定します。
カムロボの制御(前進)
カムロボを前進させてみましょう。カムロボが前進するには、左右の履帯を同じスピードで、かつ前へ進むように動かします。
プログラミング
カムロボを前進させるプログラムです。左右のモーター(M1・M2)に対して、同じスピード(150)で、かつ前へ進む(CW)ようにパラメータを指定します。2秒(2000ミリ秒)間前進した後、停止します。
プログラムの書き込み
カムロボのルーフ上にあるスイッチをOFFの位置にします。ルーフを一旦取り外して、micro:bitへUSBケーブルをつなぎ、プログラムを書き込みます。書き込みが完了したら、micro:bitからUSBケーブルを抜いて、ルーフを元の位置へ戻します。
プログラムの実行
カムロボを障害物のない床の上などに置きます。机の上は落下の危険があるのでおすすめしません。準備ができたら、プログラムを実行しましょう。カムロボのルーフ上のスイッチをONの位置にします。2秒間前進して停止すれば成功です。
動かない場合の対処法
動かない場合は、すぐにスイッチをOFFの位置にしてください。
- ルーフ上のスイッチをONの位置にしましたか?
- 拡張ボードのスイッチはONの位置になっていますか?
- 充電式のニッケル水素電池は正しくセットされていますか?
- 充電式のニッケル水素電池のプラスとマイナスを間違っていませんか?
- 充電式のニッケル水素電池は十分に充電されていますか?
- コードをつなぐ場所は間違っていませんか?もう一度組み立て手順を確認してください。
前進しない場合の対処法
前進せず、回転したり後進する場合の対処法です。
- もう一度プログラムに間違いが無いか確認してください。
- モーターから伸びる青いコードと黄色いコードをつなぐ場所は間違っていませんか?
おすすめ品
タミヤ プログラミング工作シリーズ No.01 マイコンロボット工作セット
超音波センサー、駆動回路を搭載したクローラー走行のロボット工作セットです。インストールされた走行プログラムを元に2つのモーターをコントロール、障害物を避けて自動走行します。