Arduino
Unity
7Bot

低価格ロボットアーム 7Bot を Unity からクネクネさせよう

More than 1 year has passed since last update.

はじめに

7Bot とは?

maxresdefault.jpg

クラウドファンディング Kickstarter に発表されたロボットアームです。自由度の高い6つのサーボモータと物を掴むためのポンプを搭載し、$350 という低価格を実現しています。(Proモデルにはマジックハンドのような Two-Finger Gripperも付属)

システムは Arduino をベースとしているため、PCと接続し簡単にプログラミングによって制御可能です。

何ができるかは、以下のYoutube動画をご覧ください。
Youtube紹介動画

kickstarter.jpg

Kickstarterの紹介ページは こちら

7Bot 仕様

制御ボード Arduino Due
重量 2.5kg
接続 USB(シリアル)
電源 7.5V 6A DC
消費電力 60W
6 (7Bot Pro は 7)

7Bot 可動範囲

可動範囲

7Bot を使う方法

現時点(2016/04/29)では、制御ライブラリがまだ公開されていないようです。ハードウェアだけ届いて遊べないのはKickstarter組として生殺しなので公式フォーラムから勝手に調べてUnityから使えるようにしてみました。

組み立て

説明書も何もないですが、Kickstarter Backer向けページ(For backers Only)に組み立て方がありますのでそれに沿って組み立てます。

Arduino上での手順

7Botの中身は Arduino のため、Arduino関連のファイルをインストールします。
(今回はWindows 10で動作確認を行いました)

1. Arduino Software のインストール

https://www.arduino.cc/en/Main/Software からArduino Softwareをダウンロードし、インストールします。

2. Arduino Software の起動

付属のUSBケーブルでPCと7Botを接続します。7Botには電源アダプターを接続します。

3. Arduino Due パッケージのインストール

Arduino Due用の設定は標準では入っていないため、ボードマネージャーからインストールします。

ボードマネージャーを選択
ArduinoSettings.PNG

ボードマネージャーから 'Arduino Due' を検索し、[インストール]ボタンを押下しダウンロード。
BoardManager.PNG

4. マイコンボードの設定

マイコンボードを 'Arduino Due' に設定します。
Due.PNG

5. シリアルポートの設定

メニューの ツール から適切なシリアルポートを選択します。
Port.PNG

注. シリアルポート番号は環境によって変わると思います。

6. サンプルの書き込みと実行

公式フォーラムにサンプルソースがありましたので、実行してみます。

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0; // variable to store the servo position
int s1 = 0; // variale to store the servo read out

int ServoReadPort = 0; // analog port 0
int ServoWritePort = 2; // digital port 2

void setup() {
  Serial.begin(9600);
  myservo.attach(ServoWritePort); // attaches the servo on pin 9 to the servo object
}

void loop() {

  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos); // tell servo to go to position in variable 'pos'
    s1 = analogRead(ServoReadPort);
    Serial.println(s1); // tell servo to go to position in variable 'pos'

    delay(15); // waits 15ms for the servo to reach the position
  }

  delay(5000);

  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos); // tell servo to go to position in variable 'pos'
    s1 = analogRead(ServoReadPort);
    Serial.println(s1); // tell servo to go to position in variable 'pos'

    delay(15); // waits 15ms for the servo to reach the position
  }

  delay(5000);
}

上記ソースコードをIDE内にペーストし、スケッチ>マイコンボードに書き込む でコンパイル&書き込みが行われ実際にアームが左右にゆっくり回転すれば成功です。いろいろなスケッチを書いて制御してみるのも面白いと思います。

I/O ポートアサイン

7Botを制御するためのI/Oポートのアサインは以下のようです。

ポート R/W 内容
D2-D8 Write Axis 1~7のサーボモータ(servo 0-6)指定角度に動かす (0-180)
D10 Write ポンプのバルブ制御 LOW:開ける HIGH:締める
D11 Write ポンプのモータ制御 LOW:オフ HIGH:オン(吸いだす)
D12 Write Beep音 LOW:オフ HIGH:発音
A0-A6 Read Axis 1~7 の回転角の取得(servo 0-6) (0-1023?)
D71 Read 本体の左 K1ボタンの押下状態 LOW:オフ HIGH:オン
D70 Read 本体の右 K2ボタンの押下状態 LOW:オフ HIGH:オン

417af2282ae9ba20cc9eada11227def6_original.png

817101b8c58336bd4f814806a2bb330e_original.png

Unity から使う方法

Unity Asset Storeに Uniduino というUnityからArduinoを制御する有料アセットがありますのでそちらを今回は使用しました。(もちろん自前で直接シリアルポートを叩いて制御も可能です)

1. Uniduino のインストール

Unity Asset Store から購入します。
https://www.assetstore.unity3d.com/jp/#!/content/6804

2. シリアルポートの有効化

Uniduinoのパッケージをインポート後、シリアルポートを使うために Player Settings から API Compatibility Level を .NET 2.0 Subset から .NET 2.0 へと変更する必要があります。
20140728021904.png

3. StandardFirmata の書き込み

Uniduino は Firmata というPCとArduino間をシリアルでやり取りするプロトコルを使用してArduinoの各入出力ポートを制御するため、StandardFirmata を7BotのArduino Dueへ書き込んでおきます。

スケッチの例から StandardFirmata をロード。
Firmata.PNG

メニューから スケッチ>マイコンボードに書き込む で書き込んでおきます。

4. サンプル(Test Panel)の実行

UniduinoのProjectの中には簡単に動作チェックするサンプルシーンがあります。

Uniduino>UniduinoTestPanel>UniduinoTestPanelシーンを開きます。
Sample.PNG

実行します。

5. ポートの設定

うまく接続できれば、GameビューにGUIが表示されます。
デジタルポートD2:0 ~ D8:0 あたりがサーボモータの制御になりますので、[SERVO]ボタンをしてサーボモードに切り替えて、スライダーで 0度 ~ 180度まで各軸が回転します。D2,D3,D4は激しく動くので注意して操作しましょう。
GameView.PNG

D10, D11をhighにすればポンプが作動します。D12はBEEP音です。

これでUnityから自由に7Botを制御できるようになりました。

結果

いろいろできました。


みなさんもぜひいろいろ7Botで作ってみてください。