2025年1月27日

021-2.SPIKEプライムヒント集-第8回「大きなものを持ち上げるには?」

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

◆ 改良版のグリッパーを作る

プログラミングのお題が続いているので、今回はメカのお題に挑んでみたいと思います。
2×4ポッチのブロックを10個合体させて、このような巨大ブロックを作ります(WRO 2024の競技部門のシニアにも同じようなブロックが出てきます)。
この「巨大ブロックをつかんで持ち上げる」のが今回のお題です。

「ブロックをつかんで持ち上げる」というお題はこの連載の4回目と5回目でも取り上げています。その時は、このようなシンプルなグリッパーを作りました。しかし、このグリッパーはブロックに触れる部分が少なすぎです。小さなブロックは持ち上げることはできますが、大きなブロックを持ち上げることはできません。
そこで、改良版のグリッパーを作りたいと思います。

巨大ブロックを持ち上げるには、両側からしっかりとブロックをはさみ込む必要があります。そのためには、グリッパーがスライド式で動くのが良いんじゃないかと考えました。
では、スライドさせるにはどうすれば良いのでしょうか。

◆ ラックギアを使う

検討している途中で「ラックギア」を使うという方法を思い付きました。ラックギアとは棒状の歯車のことです。ラックギアなら、難なくグリッパーを並行に動かすことができます。
ラックギアは基本セットに長いのが2本。拡張セットに短いのが2本入っています。

短い方のラックギアを2本使って、スライド式のグリッパーを作ってみました。驚くほどコンパクトに仕上がりました。
グリッパーの先端はそのままだとブロックが滑ってしまいます。そこで、長さ3ポッチの特殊ペグ(2ポッチがシャフト)とゴム製パーツを組み合わせて、滑らないように工夫しました。

指でシャフトを回して、動きを確認します。
結果は、、、失敗です。 つかむ部分が「ハの字」になってしまいます。これだと、ゴムが片方だけに当たって、ブロックが回転してしまいます。
できるだけ並行を保ったまま、ブロックにちゃんとゴムが当たるようにしないといけません。

試行錯誤して、「ハの字」にならないようにしたのがこちらです。
力が外側に逃げないようにビームを追加しました。

◆ グリッパーを上下に動かす

続いて、グリッパーの上下運動のメカを作ります。
ここでもラックギアを使ってスライド式にします。この写真は作成途中の様子です。最初はこんな感じにシャフトを穴に通してスライドさせる予定でした。しかし、安定感が良くないのでボツにしました。

次に考えたのは、ビームで挟む方法です。2本のビームを固定して、その間にビームを通すだけです。構造がシンプルで丈夫です。

グリッパーの開閉用のメカと上下運動用のメカを合体させました。これを「グリッパー2号機」と名付けます。

グリッパーをラージハブと合体させました。グリッパーを操作するためジョイスティックを2つ追加しました。次のように配線しています。

ポートA:ジョイスティック1用カラーセンサー(反射光モード)
ポートB:ジョイスティック2用カラーセンサー(反射光モード)
ポートC:グリッパー開閉用モーター(Lアンギュラーモーター)
ポートD:グリッパー上下運動用モーター(Lアンギュラーモーター)
ポートE:左タイヤ用モーター(Mアンギュラーモーター)
ポートF:右タイヤ用モーター(Mアンギュラーモーター)
当初の予定だと、タイヤで移動させるつもりだったのですが、作り直すのに時間がかかりすぎるので、今回は移動しない状態のまま使うことにします。

◆ ジョイスティックのしくみ

ジョイスティックのレバーの反対側には白色のブロックと黒色のブロックが付いています。そして、レバーを動かすと、カラーセンサー(反射光モード)の値が変化するので、レバーの位置がわかるというしくみです。
おおよその実測値ですが、カラーセンサーに黒色のブロックを当てると「2」、白色のブロックを当てると「95」となりました。レバーが中間の状態だと「75」です。

ジョイスティックのレバーを検出するプログラムを作ってみました(gripper2test1.llsp3)。
反射光の「白」「黒」のしきい値は変更しやすいように変数に入れておきます。ここでは「10」未満ならば「黒」、「90」以上なら「白」としました。

プログラムを実行中の様子です。レバーの動きに合わせて、ディスプレイの表示が変化します。
たとえば、写真の状態の場合、ジョイスティック2のレバーを左に倒すと、白のブロックがカラーセンサーに当たるので、「JOY2WHITE」と表示されます。

◆ 巨大ブロックを持ち上げる

グリッパーの開閉用のマイブロックと上下運動用のマイブロックを追加しました(gripper2test2.llsp3)。

プログラムを実行しました。
ジョイスティック1を操作してグリッパーを開閉させます。グリッパーを開いたら、ブロックを置いて、グリッパーを閉じます。
本当はロボットが自力でブロックを取って欲しいのですが、まだ移動できないので、手動でブロックを置いています。

続けて、ジョイスティック2を操作して、ブロックを持ち上げます。フォークリフトを操縦しているような気分を味わえます。問題なくブロックが持ち上がりました。これでお題はクリアできました。
と、思ったら、少しだけブロックがずり落ちてしまいました。グリッパー開閉用モーターの設定が良くないようです。モーター停止時に「惰性回転」としましたが、これだと、回転軸を保持する力が弱くなってしまいます。停止時は「ブレーキ」にしたほうが良さそうです。モーターを回しっぱなしにする手もありますが、バッテリーを無駄に消費してしまいそうです。ゴムの面積を増やすのも効果があると思います。
次回にはロボットが自力で移動できるようにしたいです。ずり落ちないように改良もしたいです。

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

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