前回は、Ultimate2.0のアームタンク組立て、Makeblockアプリで操作しました。で、これでも十分楽しいと言えば楽しいんですが、やはり、Ultimate2.0をロボット教育ツールとして購入した私からすれば、ここでやめるわけにはいきません。今回は、アームタンクをmBlockでプログラミングしてみます。
Ultimate2.0では、どのモーターがどの機構部分で、何番のポートなのかを把握する事から始まる
さて、mBotやmBot Rangerについているモーターは、基本的には、ロボットを走行させるために使いました。それに比べ、Ultimate2.0のアームタンクや、バーテンダーロボットは、走行させる以外の部分、アームやハンドグリッパーなどにもモーターを使います。ちなみに、mBot機能拡張パックのサーボパックでは、機構部品を駆動させるサーボモーターの制御を学習する事は出来ますよね。
そうなると、Ultimate2.0のロボット―アームタンク、mBlockでプログラムするには、どのモーターが、制御ボードであるMegaPiの何番ポートに接続されているかを把握しなければなりません、組立説明書には配線図が書いてありますが、ここの把握がより重要になります。
当たり前と言えば当たり前なのですが、mBotやmBot Rangerに慣れた後に、Ultimate2.0に触ってみると、意外とその基本部分の理解が足りない為に、プログラミングに手が付けられないという人も多分いるんじゃないかと思います。Makeblockの公式ユーザーフォーラムでも、その辺を理解していないがために混乱して質問しているどこかの外国の人がいました(笑)。
この配線図ですが、モーターA(ポート1)とB(ポート2)はタンク(キャタピラ部分)です。モーターC(ポート3)が、アームの上げ下げに使うエンコーダーモーターになります。ロボットグリッパーは、ポート4に繋げるのですが、エンコーダーモーターではなくDCモーター駆動なので、エンコーダーモータードライバーモジュール(MegaPiに後付けするモジュール)のコネクタには接続せず、MegaPiにあるDC/ステッピングモーターポートに接続します。
このDC/ステッピングモーターポートですが、MegaPiには全部で8つあります。ポート1~4にそれぞれA/Bと分かれています。私の場合、ここの部分、A/Bに分かれている部分が組立説明書に記載の配線図だけでは、意味が汲み取れなかったのですが、mBlockのロボットブロックに、モーター、ポート1Aというブロックがあり、そこでやっと理解しました。
どのポートに、どのモーターが配線されているかを理解したら、mBlockのロボットブロックを理解しましょう。
基本的に、走行は、mBotと同じで、前向きに○○の速さで動かすで制御できます。特徴的なのが、アーム部分のモーター制御です。アームは、回転を○○度、□□回転/分というブロックを使って制御します。ここが一番やりがいのある部分かも知れませんね。
ハンドグリッパーは、例えば、「速さを100にする」で開き、「速さをー100にする」と閉じます。
基本モデルに、超音波センサーとラインフォロワーセンサーを取り付ける
どのモーターがどのポートに繋がり、mBlockのどのブロックで制御するかを確認した後は、いよいよ、プログラミングに入ります。ここで、Ultimate2.0のアームタンクの基本モデルでは、センサーが一切ついていないので、超音波センサーとライントレースセンサーを追加でつけたいと思います。
どうやってつけようかなあと考えましたが、とりあえず、mBot Rangerのスピードドラゴンが放置されていたので、そこに付いている、機構・超音波センサー・ライントレースセンサーを丸ごと移植する事にしました。
それで、取り付けた後がこんな感じです。
ちょっと、そのまま移植すると、ラインフォロワーセンサーが床面ギリギリになってしまうので、機構パーツを一個追加してかさ上げして、高さを調整しました。この辺は、やりながらの、簡単な試行錯誤になります。子供や大人でも、いじくりまわして、試行錯誤して、思うようなモノを作っていくというプロセスは、創造性や、問題解決能力を養うためにはもってこいかなあと、自分で試行錯誤しながら、ふと思いました。
この超音波センサー・ラインフォロワーセンサーを取り付けて、プログラミングしようとした動作は、こんな感じです。