6自由度のマスタースレーブロボットハンド

今年のGWはコロナの影響でずっと部屋に引きこもっていましたが、その時に作ったロボットハンドをマスタースレーブ仕様にしてみました。

全体像

ロボットハンド自体は6自由度で根本の2個のモータがMG995、他がMG90です。また、動作の制御はArduino Nanoで行っています。

f:id:oki-lab:20200514100424j:plain

マスタースレーブというと大袈裟な感じですが、単純に各関節にポテンショメータを仕込んだ小さいロボットハンドを作ってそれを角度に換算してその通りに動くようにします。

基板取付用ボリューム 10kΩB: パーツ一般 秋月電子通商-電子部品・ネット通販

f:id:oki-lab:20200514100454j:plain

動作プログラム

#include <Servo.h>

const int MOTOR_NUM=6;
Servo myServo[MOTOR_NUM];

int pin[6] = {A0, A1, A2, A3, A4, A5};
int val[6] = {0, 0, 0, 0, 0, 0};
int angle[6] = {90, 90, 90, 90, 90, 90};

void setup() {
  for (int i=0; i<MOTOR_NUM; i++){
    myServo[i].attach(i);
    myServo[i].write(90);
  }
}

void loop() {
  for (int i=0; i<MOTOR_NUM; i++){
    val[i] = analogRead(pin[i]);
    angle[i] =(int)((val[i] /1024.)*180.);
    myServo[i].write(angle[i]);
  }
  delay(100);
}

動作

実際の動作はこんな感じです。6自由度もあると他の軸を抑えながら動かさないと、変な動きになるので正直やりづらいです。

今後の予定

今回のなんちゃってマスタースレーブはロボットハンドを作ったおまけみたいなもので、本当の目的は人型ロボットに使うアームの試作です。ただ、デザインが四角形の組み合わせで適当なので、もう少し洗練した形にしたいです。