2025年1月27日

021-2.SPIKEプライムヒント集-第4回「1つのモーターで2つの動きをさせるには?」

この連載ではロボットコンテスト(ロボコン)で役立つロボット作りのヒントを紹介していきたいと思います。ヒントを実感しやすいように、ここでは競技風の「お題」を出します。お題をクリアするロボットを作ってみましょう。自分の手を動かすことが大切です。この記事では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」とSPIKEアプリ3を使用しています。(文/松原拓也)

◆ つかんで持ち上げるロボット

今回は「A地点にあるブロックをB地点に運ぶ」というお題にチャレンジします。
スタート地点から5cm間隔に4個のブロック(2×4ポッチ×2個)を置きます。ブロックの色はなんでもかまいません。
さらにイジワルなルールを追加します。ロボットが触れて良いのはA地点のブロックだけです。ロボットが関係のないブロックに触れたら失敗とします。

「ブロックを運ぶ」にはいろいろな装置が考えられます。ここでは「グリッパー」という装置を使うことにします。
グリッパーは次の2つ動きがあります。
・閉じる/開く
・上げる/下げる
普通に考えると、この2つの動きを行うには2つのモーターが必要です。

五十川芳仁(いそがわよしひと)さんが作った「EV3デスクロボ」というロボットがあります。このロボットはグリッパーの「閉じる/開く」「上げる/下げる」という2つの動きを1つのモーターで行うことができます
秘密は歯車にあります。「閉じる→(限界に達すると)上げる」と「下げる→(限界に達すると)開く」というように、回転する力の大きさによって動き方が変わるという仕組みが備わっています。

「SPIKEプライム入門」の第9回目のロボットです。EV3デスクロボを参考にして作成しています。
このロボットも1つのモーターでグリッパーを動かしています。

改めてグリッパーを作ります。「SPIKEプライム入門」の時のグリッパーは大きすぎるので、今回は一回り小さい歯車を使います。
この写真の状態だと、モーターを正転するとグリッパーが開いてしまいます。今回は正転するとグリッパーを閉じるように動かしたいので、撮影後、モーターの向きを180度反転しました。

◆ グリッパーの動作テスト

グリッパーの動作テストを行います。 作成したプログラム(gripper_test.llsp3)がこちらです。
グリッパーを動かすコツはスピード制御ではなくパワー制御を使うことです。パワーを固定することでグリッパーの動きが限界に達すると、モーターをストールさせる(回らない状態にする)ことができます。スピード制御にすると無理に回転してしまうので、歯車が壊れてしまうかもしれません。

ラージハブのポートDにグリッパー用のモーターを接続して、プログラムを実行します。ラージハブの右/左ボタンを押すとグリッパーを動きます。 ・右ボタン=閉じる→(力が限界に達すると)持ち上げる。
・左ボタン=下がる→(完全に下がると)開く。
実際に動かしてみると、問題点がたくさん見つかりました。まず、ブロックを持ち上げると途中で落としてしまいます。グリッパーの先端がうまくブロックに当たっていません。グリッパーの構造を修正します。

問題点を修正して、完成したロボットです。基本セットのパーツだけで作ることができます。土台の部分は前回に作ったロボットと同じです。使っているポートは次の通りです。
ポートD:グリッパー(Lモーター)。
ポートE:左側のタイヤ(Mモーター)。
ポートF:右側のタイヤ(Mモーター)。

◆ ブロックを運ぶ

ブロックを運ぶプログラム(gripper_test2.llsp3)を作ります。

プログラムを実行すると、ロボットが次の動きをします。
・10cm前進。
ブロックをつかんで持ち上げる。
・15cm前進。
ブロックをおろして放す。

プログラムの実行結果です。
A地点のブロックをB地点に置くことができました。関係のないブロックには触れていません。見事、お題をクリアすることができました。
このロボットにカラーセンサーを追加すれば、目当ての色のブロックを運べるようになります。

仕組みがわかるように、グリッパーを分解してみました。これは最小のパーツ数で作っているため、信頼性や強度に難があると思います。もっと正確に動くように改良してみましょう。
このようにメカを工夫すると、モーターの数を節約することができます。この技術はロボット競技に応用できるかもしれません。

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

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