プログラミングでロボットアームを制御
<目次>
1.もっとも簡単なロボットの動かし方(ハンドティーチング)
2.直観的なビジュアルプログラミング(Blockly)
3.コーディングにチャレンジ! (Python)
4.更なる応用
ロボットアームの操作には様々な方法があります。専用のコンピューターを使ってプログラムが命令をする方法や、マウスやキーボード、ジョイスティックを使う方法、センサーに反応して動作させる方法などがあります。
その中でも、もっとも簡単な方法は、「ティーチング」、または「ダイレクトティーチ」といわれる方法です。一例として、Dobot社のDobot Magicianというデスクトップロボットアームを使って、ティーチングでロボットを操作してみます。
さくロボ ビデオ Vol.1 プログラミングなしでロボットアームを動かす
準備
まず初めに、ロボットと対話するソフトウェアを立ち上げます。(アイコンダブルクリック)
次に、ロボットアームとパソコンを接続します。(Connect)
ロボットアームを基準の位置に移動させます。これをホーミングといいます。
「ピッ!」というブザーが鳴ったら、準備完了です。
ハンドティーチング
「Teach&PlayBack」というタイルをクリックします。
ロボットアームの先端にある、白い鍵マークの付いたボタンを押しながら、ロボットアームを移動させます。移動が終わったら、ボタンを離します。すると、パソコンのソフトに、データが表示されます。
このデータは、ボタンを離した瞬間のロボットアームの位置情報(座標)を表しています。
この操作を数回繰り返します。
繰り返した回数分、座標データがソフトに送られてきます。これが、ティーチングです。
ロボットアームに動かしたい場所の情報を教えた(ティーチングさせた)ことになります。
プレイバック(ロボットアームの動作開始)
あとはStartボタンをクリックすれば、教えたとおりの動きを再現します。
プログラムの編集(動作順序の変更、繰返し回数変更)
さらに動きを編集してみましょう。まずは、転送されたデータのうち、Nameという行にそれぞれ名前を付けていきます。
データの一つを選んで、動きの順番を変えてみましょう。MoveUp、MoveDownというボタンがありますので、これを使って順番を入れ替えます。入れ替えが終わったら、Startボタンを押します。
今度は、同じ動作を繰り返してみましょう。Loopという数字を1から2に変更してください。同じ動作が2回繰り返されていることがわかります。
プログラムの変更(PCなしのスタンドアロンでの利用)
次は応用編です。EasyというボタンをクリックしてProに変更してみましょう。
すると、Downloadというボタンが出てきます。これをクリックすると、覚えさせた動きのデータが、ロボットアーム本体に送られて、記憶されます。
今までは、USBケーブルでパソコンとロボットアームが接続された状態(オンライン)でロボットアームを制御していましたが、今度は、ダウンロードされたプログラムをパソコンなしで動作させてみます。
USBケーブルを外します。そしてKeyというボタンを押します。
すると、先ほどダウンロードしたプログラムが動作します。
さくロボ ビデオ Vol.2 プロック運搬編
次は、ティーチング機能を使ってロボットアームに作業をさせてみます。
DobotMagicianは、アームの先端に様々なアタッチメント(エフェクター)を取り付けることで、目的に合った作業を行わせることができます。
今回は、最もよく使われるアタッチメント、吸盤型の吸引カップ(Scution Cup)を使って、木製のカラーブロックを動かしてみます。
アーム先端のアタッチメント準備
まず、アームにアタッチメントを取り付けます。四角い穴に、吸盤のアタッチメントを挿入して、裏側にあるナットで締め付けます。
吸盤部分にはGP3というタグが付いたケーブルがあります。これをアームのGP3という端子(ポート)に接続します。
エアポンプユニットの接続
次に、空気が通るチューブにつなげられたポンプユニットのケーブルをDobot Magicianの背面にある端子に接続します。
ケーブルは2本。SW1とGP1とタグ付けされたケーブルをそれぞれ同じ名前の端子に接続します。ハードウェアはこれで準備完了です。
吸引カップ(Suction Cup)の吸引動作の設定
パソコンの画面に戻ってティーチングしてブロックを左から右に動かしましょう。
ティーチングをして座標が決まったら、パソコンの画面に「SuctionCup」という列があることに気づきますか?
このデータをマウスの操作で編集して、どこで吸引するのか(SuctionCupをOnにするのか)、どこで吸引をやめるのか(Offにするのか)を決めます。
Suction Cupを吸引してブロックを移動
編集が終わったら実行してみましょう。失敗した場合には、アームの高さ調節が必要です。それでは、ブロックを持ち上げる高さを調整します。Zの行で、アームが下がる場所を見つけて数字を調整します。
数字の調整が終わったら、再度、実行してみましょう。うまく移動させることができましたでしょうか?
移動時のブロックの回転を調整
しかし、移動したときにブロックの方向が回転しています。アーム先端の軸(R)を調整して、この回転しないように設定します。
R行の数字をすべて「0」に設定して、再度、実行してみましょう。
ロボットを制御する方法には様々な方法があります。電気信号を入力してその電圧などの状態に従って制御させる方法や、決まった命令を通信線を通して送信して、その情報を使って制御する方法、パソコンなどで命令をプログラミングして制御する方法など様々です。
制御の方法によって、準備する通信システムやソフトウェアは異なりますが、最近ではパソコンを使って、ロボットを制御するプログラミングが、以前よりも身近になってきています。それは、これまでのプログラミングではかならず、プログラミング言語を専門書や資料を読み込まなくてならなかったのが、より直感的に制御手順を表すことができる、ビジュアルプログラミングが普及したおかげです。
ビジュアルプログラミングは、これまでのコーディング型のプログラミングでは理解しづらかった、制御の手順や論理(アルゴリズム)を直観的に理解し、システム全体の構造を理解することに役立ちます。いきなり、C言語などのコーディングからプログラミング学習を始めると、コーディングのちょっとした間違いで動かないプログラムと格闘している間に学習の意欲が落ちてしまいがちです。(カッコやカンマ、コロンやセミコロンの打ち間違いで挫折してしまう方が何と多いことか!)。
そんなとき、ビジュアルプログラミングを取り入れることで直観的にアルゴリズムを理解し、全体図を理解しながらシステムを設計する学習は、プログラマーの技術ではなく、プログラミング的思考を養ううえで非常に大切だと考えます。ビジュアルプログラミングの一例として、Dobot Magicianを制御する基本環境、DobotStuidoの中にBlockly(ブロックリー)というビジュアルプログラミング環境を使った、学習方法を見てみましょう。
さくロボ ビデオ Vol.3 - ビジュアルプログラミング (Blockly)
準備
まず、DobotMagicianをUSBケーブルで接続して、DobotStudioを立ち上げます。
「Connectボタン」を押して接続します。Homeボタンを押して、アームの位置を初期化します。
ビジュアルプログラミングの開始
次に、Blockly(ブロックリー)のタイルをクリックして、ビジュアルプログラミングを開始します。
画面左側にBlocklyで利用できるブロックが、機能ごとに分類されています。
ホームポジションに戻る動作
この中の一番下にある、DobotAPIがDobotMagicianを制御する専用のブロックです。
それでは簡単なプログラムをしてみます。
ホームポジションに戻る動作
DobotAPIからBasicの中のHomeというブロックをマウスの操作でBlocklyのキャンバスに置きます。このブロックはDobotStudioでHomeボタンを押したときと同じ、アームの位置の初期化を行うブロックです。
Startボタンを押してみましょう。ロボットアームはHomeポジションに移動します。
情報の表示
次に、Textの中のPrintブロックを追加します。マウスの操作でキャンバスに配置して、Homeブロックとジョイントします。Printブロックは、プログラム中で文字や変数の情報を表示させたいときに使います。
「hello dobot」と入力して、実行してみましょう。
ホーム動作のあと、キャンバスの右上のRunning Logというダイアログボックスに、"hello dobot"と表示されます。
指定座標へのアームの移動
今度は、動きを少し加えてみます。
DobotAPIのMotionからMoveToというブロックをキャンバスに配置してジョイントします。座標は、X=255、Y=0、Z=0にしてしてみます。
ホーム動作を毎回行わないときは、ブロック上で右クリックして、Disable Block(ブロックの機能を無効化)にします。するとブロックの色がグレーに変わり、動作しなくなります。元に戻すときは、右クリックしてEnable Blockとすれば、再度機能が有効になります。
アーム動作の追加
もう一つ動きを加えます。MoveToのブロック上で右クリックして、Duplicate Blockを選択すると、ブロックがコピーされます。座標の値を少し変えてみます。
今度は、ちょっと違ったブロック、MoveDistanceを追加します。このブロックは、直前の座標に対してどれくらい移動させるか、数値で指定することができます。このビデオでは、前に動いたY軸の値分、逆に動かすため、マイナスの値を入れています。
さらにブロックをコピーして少しダイナミックな動きをさせてみましょう。移動させるX,Y,Zの値にそれぞれ50を入力します。
さらに次のブロックでは逆方向に動くように-50を入力します。これを動かしてみましょう。
繰り返し動作の追加
次に、同じ動作を繰り返すロジック(論理)を加えます。
Loopsの中のRepeatブロックを追加します。繰り返したい動作を囲んで、ジョイントさせます。
くり返しは5回にしてみます。実行してみましょう。
くり返し動作するロボットアームのプログラミングが完成しました!
これ以外にも様々な機能ブロックが用意されています。
まずは触ってみて動きを確認しながら、直観的に理解を深めていきましょう。
ロボットアームを制御するときに、より詳細で柔軟な設定や、OpenCVなどのオープンソースソフトウェアと連携することが増えてきており、またその実現方法についてもpythonなどのサンプルコードや関連書籍、ウェブコンテンツが充実してきたおかげで、複雑なアルゴリズムも意外にスムーズにコーディングすることができるようになってきました。
しかしながら、最後の難関と言えるのが、特定のハードウェアを動かすための専用関数の使用方法について学ばなければならない点です。通常は、ロボットアームのメーカーが、APIリファレンスマニュアルをまとめているので、情報としては、十分であることが多いのですが、使う側にとってこれを読み解いて活用するのは容易ではありません。これを解決するブリッジ役となるのが、前述のBlocklyをはじめとしたビジュアルプログラミング環境のもつ機能の応用です。早速、その機能について説明します。
DobotStudioに実装されているBlocklyは、機能ブロックを並べてビジュアルなプログラミングができるだけではなく、同時に同じ内容のpythonと呼ばれるプログラミングコードに自動変換されます。これを応用して、独自のプログラム開発や、コードを使った本格的なプログラミング学習にステップアップすることができます。
では、動画を通してビジュアルプログラミングからコーディングへのステップアップ手順を見ていきましょう。
さくロボ ビデオ Vol.4 ロボットアームでコーディングにチャレンジ!
Blocklyのビジュアルプログラムからコードの自動変換を確認
まずは、簡単なBlocklyプログラムを開きます。このBlocklyプログラムにはホーム動作や、EIOの設定、アームの動作、遅延、などのロボットアームを制御するための専用ブロックが含まれています。さらにくり返しや条件分岐などの論理も含まれています。
ブロックをひとつ追加してみます。printブロックをプログラムの一番上に配置します。
表示するテキストをabcからstartに変更します。すると右下のgeneral codeのところにもprint('start')というコードが現れたのがわかります。
ビジュアルプログラミングと変換されるコードが連動しています。
Scriptの画面でプログラムを実行
確認のためBlocklyプログラミングを動かします。Running Logにはstartというテキストが確かに表示されました。プログラムを一旦止めて、今度は右下のGeneral Codeに注目します。ここに表示されたコードをすべて選択して、コピーします。そして、Scriptの画面に移ります。
Newをクリックして、新しいダイアログを開き、先ほどコピーしたコードをすべて貼り付けます。そのまま、スタートボタンを押します。画面下側の Running Logにstartと表示されました。Blocklyで作成したものと同じアルゴリズムのpythonコードが完成しました。
一旦プログラムを止めて、先ほど編集したprintコマンドのテキストを変更します。
Pythonコードを編集してオリジナルプログラムに挑戦
ここまでRunning Log → print('start')と編集して、実行すると Running Logにも編集結果が反映されます。
スクリプトの中を見てみると、本来ならAPIの資料を見ながらタイピングしなければならない関数がすでに編集可能な状態で表示されていますので、あとは自由に編集を加えることで、独自のアルゴリズムに拡張したり、pythonを使ったプログラミングの学習ができます。
DOBOT Magician関連ページ
商品情報
Jump Start Support
技術サポート情報
DOBOTイベント情報
###
TechShareでは、C++やJava、Pythonなどのプログラミング言語でDobotMagicianを操作するためのプログラミングサンプル集、DobotDemo2.0を無償で提供中です。
デモを参照して、自由にプログラミングに挑戦してみて下さい!