Product

CR Hand

¥297,000 税込

この商品は送料無料です。

現在ご注文後2週間目処でご発送可能です。




CR Handは"本当に"人間と同等サイズの6自由度ロボットハンドです。手首取付面から指先までの距離はわずか172mmです。このコンパクトな筐体に全てのモーター・コントロールボックスが納まっており、USBケーブルと電源を接続すればすぐに動作が可能です。高精度FDM 3Dプリンタを活用ることでお求めやすい価格を実現しました。教育・研究開発用途に最適です。

 <主な特徴>

13関節6モーターにより多彩な動作を実現。

精密なピンチングも力強いグラスピングも可能。

バネを含んだ関節が柔軟なインタラクションや衝突時の破損の回避を実現。

指先はM2ねじで着脱可能。様々なセンサや素材を取り付けて使用できます。

 <製品仕様

 <内容物一覧

 <概寸・取付部寸法

 <指先着脱部寸法>

見積、注文、その他お問い合わせはadmin@curious-robotics.comまでご連絡下さい。


以下は技術情報となります。


 <使用方法

1.GUIから使用する場合
Pololu社のドライバとMaestro Control Centerをダウンロードして使用可能です。Maestro Control Centerは、ロボットハンドの操作や設定を直感的に行えるツールです。主な特徴は以下の通りです。

これらの機能により、CR Handの動作を直感的かつ効率的に設定・制御できます。

プログラムから使用する場合
内蔵する制御基板Pololu Micro Maestro 6-Channel USB Servo Controllerはシリアル通信に対応しており、Pythonなどのプログラミング言語を使用してシリアル通信を行うことでCR Handを使用することが可能です。なお、シリアル通信を行う際は事前に前述のMaestro Conrol CenterのSerial Settingより、Serial modeを”USB Dual Port”に設定しておいて下さい。

以下はProcessingを使用してキーボード入力からハンドの姿勢の操作する場合の例です。

import processing.serial.*;


// シリアルオブジェクト

Serial myPort;


// 各キー('1'~'7')を押した時に設定するサーボ位置を定義

// index: 0〜6がCh0〜Ch5に対応

// 例: scenarios[0]がキー'1'を押した時に設定する各サーボの位置

int[][] scenarios = {

  {4000, 4000, 4000, 4000, 4000, 4000}, // '1' Open

  {8000, 7000, 4000, 8000, 8000, 8000}, // '2' Pinch_open

  {8000, 7000, 6000, 8000, 8000, 8000}, // '3' Pinch_close

  {8000, 4000, 4000, 4000, 4000, 4000}, // '4' Grasp_open

  {8000, 6000, 8000, 8000, 8000, 8000}, // '5' Grasp_close

  {4000, 4000, 8000, 8000, 8000, 8000}, // '6' Thumb_pinch_open

  {4000, 8000, 8000, 8000, 8000, 8000}  // '7' Thumb_pinch_close

};


void setup() {

  size(400, 200);

  

  // 利用可能なシリアルポートを表示(デバッグ用)

  println(Serial.list());

  

  // MaestroのCommand Portに接続(適宜ポート名を変更)

  myPort = new Serial(this, "COM4", 9600);

  println("Connected to COM4");

  

  // 初期状態として、例えばキー'1'のポジションに合わせてみる

  setAllServos(scenarios[0]);

}


void draw() {

  // 特に処理なし

}


// キーが押されたときに呼ばれる

void keyPressed() {

  // '1'~'7' のキーであるか判定

  if (key >= '1' && key <= '7') {

    int index = key - '1'; // '1'が押されたら0、'2'なら1…と計算

    if (index >= 0 && index < scenarios.length) {

      // scenarios[index]で定義した全サーボの姿勢を設定

      setAllServos(scenarios[index]);

    }

  }

}


// 全サーボ(Ch0〜Ch5)の位置を指定する関数

void setAllServos(int[] positions) {

  for (int ch = 0; ch < 6; ch++) {

    setServoPosition(ch, positions[ch]);

  }

}


// サーボ位置を設定する関数

void setServoPosition(int channel, int target) {

  byte[] command = new byte[4];

  command[0] = (byte)0x84;  // サーボ位置設定コマンド(0x84)

  command[1] = (byte)channel;

  command[2] = (byte)(target & 0x7F);        // 下位7ビット

  command[3] = (byte)((target >> 7) & 0x7F); // 上位7ビット


  println("Sending command to Ch" + channel + ": " 

          + hex(command[0]) + " " 

          + hex(command[1]) + " " 

          + hex(command[2]) + " " 

          + hex(command[3]));

  println("Target: " + target + " (" + (target * 0.25) + "µs)");


  myPort.write(command);

}


 <アンケート