ロボットアームの組み立てとプログラミング ~レゴマインドストームEV3~
Contents
ロボットアームとは
教育用レゴマインドストームEV3でロボットアームを組み立ててみる。
ロボットアームは、
- アームの旋回
- アームの上下運動
- 把持の開閉
でブロックを掴んで移動させることができる。
駆動部品とセンサー類は以下の通り。
Lモーター(ポートC) | アーム下部でギアを回してアームの旋回を制御する |
Lモーター(ポートB) | ギアを回してアームの上下運動を制御する |
Mモーター(ポートA) | Mモーターでギアを回して把持(ブロックを掴む)部分を制御する |
カラーセンサー(ポート3) | アームを上昇させた時の安全装置の役割。 アームが上昇するとカラーセンサーの前に白いブロックが移動してくる構造になっている。 カラーセンサーで反射光の強さを測定して正面に白いブロックが来たらポートBのLモーターを停止させてこれ以上上昇しないように制御する。 |
タッチセンセー(ポート1) | アームを旋回させた時の安全装置の役割。 アームの(上から見て)時計回りの旋回の時に限界以上回転をしないようにタッチセンセーが押されたらポートCのLモーターを停止させる。 |
ロボットアームの組み立て
ロボットアームの組み立ての様子
レゴに慣れている人であれば30分弱で組み立てることができる
プログラム概要
プログラムの全体の概要
一つ一つのブロックの解説は後述する。
尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい。
インテリジェントブロックの上のキーを押したときは時計回りに、下のキーを押したときは反時計回りに旋回した後、アームを下ろしてブロックを掴む。
掴んだ後はアームを上昇させて先程とは逆の旋回をした後、再びアームを下ろしてブロックを離したのちアームを上昇させているプログラム。
プログラム全体
アームを旋回後、下降させてブロックを掴んだ後、上昇して逆方向に旋回した後にブロックを降ろすプログラム。
1 | プログラム開始 |
2 | 3~24を繰り返す |
3 | ディスプレイにクエッションマークを表示する |
4 | インテリジェントブロックのステータスライトをオレンジ色に点滅させる |
5 | 上か下のキーを受け付けるまで待機する 結果を9と17のスイッチブロックに引き渡す |
6 | ステータスライトをリセットする |
7 | クリック音を再生する |
8 | 中央キーが押されるまで待機する |
9 | 5の入力結果により10、11の処理に分岐する
|
10 | アームを時計回りに旋回させる |
11 | アームを反時計回りに旋回させる |
12 | アームを下降させる |
13 | 把持ブロックでブロックを掴む |
14 | アームを上昇させる |
15 | アームの上昇上限になるまで待機する ※カラーセンサーの反射光の強さで判定する |
16 | アームの上昇を停止する |
17 | 5の入力結果により18、19の処理に分岐する
|
18 | アームを反時計回りに旋回させる(10の逆) |
19 | アームを時計回りに旋回させる(11の逆) |
20 | アームを下降させる |
21 | ブロックを離す |
22 | アームの上昇を停止する |
23 | アームの上昇上限になるまで待機する ※カラーセンサーの反射光の強さで判定する |
24 | アームの上昇を停止する |
使用したブロック
今回使用したブロックは以下の8種類。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
プログラム終了までアーム操作を繰り返すのでループブロックを配置した。
無条件に繰り返し
|
表示ブロック
インテリジェントブロックのディスプレイにテキスト、図形、イメージを表示するブロック。
入力待ちの状態を表すためにクエッションマークをディスプレイに表示する
|
インテリジェントブロックステータスライト
インテリジェントブロックのLEDのステータスライトの表示を制御するブロック
インテリジェントブロックステータスライトの詳細についてはこちらの記事を参照。
入力待ちの状態を表すためにインテリジェントブロックステータスライトのLEDをオレンジ色に点滅させる
| |
オレンジ色の点滅を終了させる
|
待機ブロック
特定の条件に一致するまで待機するブロック
条件は様々なセンサーの値やインテリジェントブロックの操作キー、時間などを指定することができる。
音ブロック
様々な音を再生する為のブロック。
インテリジェントブロックの上、下のボタンが押されたことが分かるようにクリック音を再生する
|
スイッチブロック
条件によって処理を分岐することができるブロック。
センサーの測定値やロジック(”真” or ”偽”)など様々な条件を指定する事ができるが今回は数値(#)での分岐を使用する。
インテリジェントブロックボタンの4(上)、5(下)によって処理を分岐する
|
Lモーター
重いものをゆっくり動かすのが得意なLモーターを制御するブロック
今回はアームの旋回と上昇下降の2箇所でLモーターを使用している
Mモーター
軽いものを素早く動かすのが得意なMモーターを制御するブロック
今回はアーム先端の”指”の開閉にMモータを使用している
指を閉じてブロックを掴む動作を行う
※角度指定でも同様の事ができる | |
指を開いてブロックを離す動作を行う
|
実際に動かしてみた動画
旋回用のLモータの制御、アームを上下させるLモータの制御、ブロックを掴む動作のMモーターの制御、全体のプログラミングの様子を動画にしている。
大変参考になりました。LEGO EV3 ソフトにある組み立て方法に従って組み立てましたが、物を掴む部分が開閉するときにガガガと音がすることとMモーターの歯車にかみ合っている小さな歯車の軸が動かすごとに外に出てきてしまいます。何が原因かお分かりであればご教授頂けたらありがたいです。この部分は何回も組み立て直しました。よろしくお願いします。
小田さん
コメントありがとうございます。
ロボットアームはもうバラしてしまって手元に無いので正確には分からないのですが、恐らくですが物を掴む動作をする際に部品が干渉してしまっているのだと思います。
無理やり回すのでベージュのベベルギアが飛び出してしまうのだと思います。
Mモーターの黒い歯車を指で回してみたらどうなりますか。
また下記の組み立て動画の1:48と1:50の所の部品の配置をご自分のアームと見比べてみてください。
https://www.youtube.com/watch?v=RNwwb_gSI3Y&feature=emb_logo
組み立てが合っている場合ですがプログラムでMモータのパワーを10程度でゆっくり動かしてみてください。
souichirou様
早速のご返事ありがとうございます。今朝、一旦全部分解しました。
近いうちまた組み立て直してみます。おっしゃる通り部品同士が擦れているような音がします。
御助言ありがとうございました。組み立て直したら結果をお知らせいたします。
小田一博
souichirou様
教えていただいたようにMモーターのパワーを10に設定し直して動かしたら、異音もせず、軸も飛び出さないように動きました。
大変ありがとうございました。
小田一博さん
連絡ありがとうございます。
無事に動いたのなら何よりです。
パワーが強すぎたのかも知れませんね。
パワーは30ぐらいまでは大丈夫だったと思います。
souichirou様
最初は提供されたプログラムのままで、パワーは30になっていました。
ありがとうございました。
質問させていただきます。 LEGOの制御は、IPADでしか できないと思っていました。
YOUTUBEを観ると、WINDOWSの画面のような感じです。
WINDOWSでも アプリをインストールすればLEGOの制御ができるのでしょうか?
おてすきのときにご回答いただければ幸いです。
根本さん
コメントありがとうございます。
WindowsでもAndroidでも出来ます。
Windowsの場合はこちらからソフトウェアをダウンロード出来ます。
https://education.lego.com/ja-jp/downloads/mindstorms-ev3/software
Windows場合は最近、レゴマインドストームのソフトウェアが変わってスクラッチの様な画面になっている様です。
自分はまだ試していません。
Youtubeの映像は最新のスクラッチ風に変わる前のソフトウェアの映像です。