ペンアームの組み立てとプログラミング ~レゴマインドストームEV3~ | そう備忘録

ペンアームの組み立てとプログラミング ~レゴマインドストームEV3~

レゴマインドストームEV3のペンアーム

教育用レゴマインドストームEV3の基本セットでペンアーム(Pen Arm)を組み立ててみた。

ペンアームはアーム(腕)型の構造でペンを保持してアームを上下、回転させることができる。

まずは簡単なプログラムでホワイトボードに円弧を描く事を目標にした。

ペンアーム

尚、組み立て前はもっと複雑な図形や文字を描けるのではないかと想像していたのだが(当方のプログラミングスキルもあって)アームの上下と回転運動のみなので複雑な図形を描くのが難しいことが判明。

複雑な図形はペンを下に降ろした状態でX,Y軸にペンか紙かを動かすような機構であれば何とかなりそうなので他の人の動画やホームページを参考にしてそのうち試してみるつもり。

レゴの動画やプログラムは簡単なものから複雑な超大作まで海外も含めるとネット上に沢山あり、片っ端から作っていっても何年も掛かりそうぐらい存在している。

その辺もレゴの楽しい所の一つなのだと思う。

ペンアーム(Pen Arm)の組み立て動画

駆動部・センサー類の説明

ペンを掴む機構、アームの上下、回転をさせる為のLモータ、各種センサーからできている

ペンを掴む機構上部の赤いネジを回してワームギアを使ってペンを締め付けて保持する

ブロック1とブロック2とでペンを挟み込む

ペンを掴む機構

開いた状態

開いた状態

ゴムでペンを保持する

ゴムでペンを保持する

Lモータ(ポートB)アームの回転運動用のモータ

上から見てマイナスパワーで反時計回り、プラスパワーで時計回りする

アーム回転用Lモータ

モータの回転をギアでアームの回転運動に変換している

ポートB Lモータギア

Lモータ(ポートC)アームの上下運動用のモータ

上下の棒状のブロックを動かすことによりアームを上下させる

マイナスパワーで下げ、プラスパワーでアームを上げる

アーム上下運動Lモータ

タッチセンサータッチセンサー

タッチセンサーを押すとプログラムが動き始める様にした

タッチセンサー

ジャイロセンサーアームの上部についているジャイロセンサー

アームの回転角度を測定して回転運動の停止、アームの上下運動を制御する為に使用した

ジャイロセンサー アームの回転角度を測定

カラーセンサーカラーセンサー

今回のプログラムでは未使用

海外の動画をみると色を判定したうえでタッチセンサーを押すとプログラムが動作する様にプログラミングしてあったが、今回のこのプログラムでは使用していない

カラーセンサー 今回のプログラムでは未使用

プログラム全体

タッチセンサーを押してスタート

まずアームを反時計回りに回転させた後、アームを下げて今度は時計回りに回転させて円弧を描く

ジャイロセンサーを使って元の位置に戻ったら回転を止めてアームを上げる簡単なプログラム

尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい

ペンアーム プログラム全体

プログラム開始
タッチセンサーが押されるまで待機する
アームを反時計回りに回転させる(ジャイロセンサーの測定値はマイナスになる)
5~7をジャイロセンサーの値が0以上になるまでループさせる
アームを下げる(ペンがホワイトボードに付く)
0.5秒待機する(アームが下がりきるのを待つ時間)
アームを時計回りさせる(ペンで円弧を描く)
アームの回転を停止する
アームを上に上げる

使用したブロック

今回使用したブロックは以下の3種類。

待機ブロック

指定した条件になるまで待機するブロック

タッチセンサーなどの各種センサー、時間などの条件で待機させることができる

待機ブロック タッチセンサー、比較、状態プログラムの最初でタッチセンサーが押されるまで待機する

※タッチセンサーが押された後、後続の処理が実行される

  • 待機:タッチセンサー、比較、状態
  • 状態:1(押された)
  • 測定値:タッチセンサーの状態が出力される(今回は未使用)

 

0.5秒待機アームが下がりきるまで0.5秒待機する為に使用している

  • 待機:時間
  • 時間:0.5(秒)

Lモータブロック

重いものをゆっくり動かすのが得意なLモータ。

アームの回転と上下運動で使用している。

Lモータ 反時計回りポートBのLモータでアームを反時計回りさせる

  • Lモータ:角度
  • パワー:-10(マイナスは反時計回り)
  • 度:70(度)
  • ブレーキ方法:真(惰性なしで停止させる)
  • ポート:B
Lモータ パワーオンで時計回りポートBのLモータでアームを時計回りさせる

  • Lモータ:オン
  • パワー:10(プラスは時計回り)
  • ポート:B

停止はジャイロセンサーの測定値に基づいて停止させるのでここではパワーオンのみ

Lモータ パワーオフで停止ジャイロセンサーの測定値に基づいてポートBのLモータをオフにしてアームの回転運動を停止させる

  • Lモータ:オフ
  • ブレーキ方法:真(惰性なしで停止させる)
  • ポート:B
Lモータ パワーオンでアームを下げるポートCのLモータをオンにしてアームを下げる

回転運動中は弱いパワー(ー10)でオンにしたままにしてペンをホワイトボードに押し付ける

※パワーをオフにするとモータが若干でも元に戻ってペンが浮いてしまう

  • Lモータ:オン
  • パワー:ー10(マイナスはアームを下げる)
  • ポート:C
Lモータ アームを上げるジャイロセンサーの測定値に基づいてポートCのLモータでアームを上げる

  • Lモータ:角度
  • パワー:10(プラスはアームを上げる)
  • 度:30(度)
  • ブレーキ方法:真(惰性なしで停止させる)
  • ポート:C

 

ループブロック

指定した条件になるまでループするブロック

タッチセンサーなどの各種センサー、時間などの条件でループさせることができる

ジャイロセンサーの角度がプラスになるまでループするジャイロセンサーの角度が0度以上になるまでループする

最初にアームを反時計回りに回転させるのでその時点でジャイロセンサーの値はマイナスになる

次にアームが時計回りしてきて最初の位置付近にくるとジャイロセンサーの値は0以上になる

  • ループ:ジャイロセンサー、比較、角度
  • 比較タイプ:3(≧)
  • しきい値:0(度)

 

プログラミングと実際に動かしてみた時の動画

ペンアームのプログラミングと実際に動かしてみた時の動画

プログラミングの様子と実際の動きを動画にしいるので見てほしい

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。