2025年1月9日

017-1.SPIKEプライム入門-第9回「物をつかむロボットを作る2」

この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ったプログラミングの方法を紹介します。SPIKEは2020年1月にレゴ エデュケーションが発売したSTEAM教材です。マイコン搭載のブロックをプログラミングすることで、科学・技術・工学・アート・数学を学ぶことができます。プログラミングを行うにはWindowsかMacのパソコン、Androidタブレット、iPad、Chromebookのいずれかが必要です。(文/松原拓也)

◆ グリッパーを作る

五十川芳仁さんが設計したEV3版デスクロボ用のロボットをお手本にして、SPIKE版グリッパー搭載ロボット作ってみました。
SPIKEの基本セットの部品だけで作れるように工夫しています。

ロボットは機能が3つに分かれています。
「グリッパー」はものをつかむ機能です。「ベースロボット」はロボットの土台となる機能です。「距離センサー」は超音波を使った距離のセンサーです。

グリッパーはこのようにして作ります。前回に作ったグリッパーよりも部品にムダがなく、丈夫にできています。

ベースロボットはこのように作ります。

◆ マイブロックを使う

それではお題を考えてみましょう。
ロボットのグリッパーから15cm手前の位置に「ターゲット」を置きます。ターゲットはプレートとブロックで作った物体です。つかんで持ち上げることを考えて、十字の形をしています。
ロボットを使って、このターゲットをスタート地点に持ち帰ってみましょう。

ここで便利なのが「マイブロック」という機能です。マイブロックは複数のブロックを1つのブロックに置き換えることができます。
たとえば、こちらは前回に作ったプログラムですが、同じようなブロックが繰り返し使われています。ブロックは完全には同じではなく、モーターに指定するパワーだけが違っています。

マイブロックを使うとこうなります。 マイブロックは似たブロックをまとめてしまうことができます。
「gripper」がグリッパーを制御するためのマイブロックです。 モーターのパワーは「power」というブロックに格納されます。このようにマイブロックの外側から渡されるデータのことを引数といいます。

ターゲットをつかんでスタート地点に戻るプログラムです。
「gripper」の引数がグリッパーを下げるときと上げるときで違っています。これはグリッパーを持ち上げるときにより多くのパワーを必要とするため、下げるときよりも多めに設定しているためです。ただし、パワーを上げすぎると、モーターやギヤに余分な負担がかかってしまうので、ほどほどに調節する必要があります。

プログラムを実行すると、こうなります。
ターゲットをつかんで元の位置に戻りました。成功です。

続いて、「その場せん回」のマイブロックも作ります。これは360度せん回を2回行って、グリッパーを開閉するというプログラムです。
あらかじめ、「kakudo2」という変数ブロックを作ります。そして、次の数式を計算します。
「kakudo2を((kakudoの絶対値)*(11 / 5.6))にする」
「11」は右タイヤと左タイヤとの距離です(単位はcm)。「5.6」はタイヤの直径です。この式を実行すると、変数「kakudo2」にはモーターが必要な回転角度が代入されます。変数「kakudo」にはその場せん回の角度が入っています。変数「kakudo」の値がプラスの場合は上から見て時計方向にせん回します。マイナスの場合は反時計方向にせん回します。その場せん回には移動拡張ブロックを使います。

◆ 上級編

続いてのお題がこちらです。ここからは上級編です。
ロボットの15cm手前にターゲットがあります。ターゲットの途中には「かべ」があり、ロボットはかべに触れてはいけない事とします。そのままではグリッパーでつかむことができません。

かべに触れずにターゲットをつかむには、ロボットに遠回りさせるしかありません。 たとえば、このようなルートでロボットを動かします。図に書かれている「X」はターゲットの位置です。「●」はスタート時のグリッパーの位置です。数字はきょり(単位はセンチメートル)を表しています。
つかむ直前でムダに前進しているように見えますが、これはグリッパーを開いた時にターゲットに触れないようにするために必要な動きです。
※左図の数字はコースの寸法(cm)です。

プログラムがこちらです。

プログラムを実行した結果がこちらです。 ぐるっと遠回りして、ターゲットをつかむことができました。成功です。 このプログラムではここで処理が終わってしまっていますが、スタート地点までロボットを戻すにはどのようにしたら良いでしょうか。自分で考えてみましょう。
あと、今回は距離センサーを使わずに終わってしまいました。皆さんで面白い利用方法を考えてみましょう。

今回作成したプログラム(SPIKEアプリ用)

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。