SlideShare a Scribd company logo
基礎設計特別演習(後期)2017
多脚ロボット制作(1st stage):
スマートサーボモータを使う
1
改訂増補 rev.3
ロボット(6脚ロボット)の基本パーツ
としてのスマートサーボモータ
PhantomX AX Metal Hexapod Mark III
2
Trossen Rotbotics のwebページより
スマートサーボ
コントローラ
Trossen Robotics のwebページ
3
部品(6脚ロボット(hexapod))
4
Trossen Rotbotics のwebページより
スマートサーボ
コントローラ
ロボットの制作手順の概略
• 部品の確認を行う
• ソフトウェアのセットアップを行う.
• サーボの ID をセットする.
• LiPo(リチウムポリマー)バッテリーの取り扱い方を理解する.
• ロボットを組み立てる.
→ 詳細なアセンブリーガイドが Trossen Robotics のweb にある.
解説動画もある.
丁寧に説明を読んで(動画を観て)理解する.
• 動作確認を行う.
5
スマートサーボモータを使う
• コントローラ Arbotix-M
• スマートサーボ AX-12A
• Arduino IDE
• リチウムポリマー(LiPo)バッテリー
6
Trossen Rotbotics のwebページより
スマートサーボについて(1)
• 通信機能 + マイクロコンピュータ + サーボモータ
→ 各々のスマートサーボは「ID」とメモリマップを持つ.
• デイジーチェーン(数珠つなぎ)
→ 配線の数を減らせる
7
スマートサーボ
について(2)
各々のサーボモータは
メモリマップを持つ.
特定のアドレスに特定の値を書き込む.
→ 例えば,ある角度だけ回転させる.
特定のアドレスから値を読む.
→ 例えば,温度を取得する.
8
RobotisのAX12マニュアルより
スマートサーボについて(3)
コントローラは,ID番号を指定
して特定のサーボのメモリに
アクセスする.
9
RobotisのAX12マニュアルより
Arbotix Getting Started
• (step1) Arduino IDEのインストール
• (step2) FTDI driver のインストール
• (step3) Arbotix-M library and hardware filefile を
適切な場所に置く
• (step4) FTDI 接続
• (step5) ボードとシリアルポートの指定
• (step6) ボードとサーボモータを接続
10
Trossen Robotics のwebサイト
11
ここをクリック
まずは,この場所を
見つけましょう.
Trossen Rotbotics のwebページより
Trossen Robotics のwebサイト
12
ArbotiX Getting Started Guide をクリック
Trossen Rotbotics のwebページより
13
Trossen Rotbotics のwebページより
(step1) Arduino IDEのインストール
14
ここから
ダウンロード
Arduino のwebページより
Arduino IDE(外観)
15
コンパイル
ボードへの書き込み
シリアルモニタ
新規,開く,保存
ここにプログラム
(スケッチ)を書く.
Arduino IDE(シリアルモニタ)
16
Arbotix と PC はシリアル通信できる.
(step2) FTDI driverのインストール
17
ここから
ダウンロード
「 FTDI 」 のwebページより
18
注意:ここに置いてある
ファイルは古いです.
ここでは用いません!
Trossen Rotbotics のwebページより
(step3) ArbotiX library and hardware file を
適切な場所に置く
19
here をクリック
注意:こちらを用います!
Trossen Rotbotics のwebページより
(step3) ArbotiX library and hardware file
20
クリック
Trossen Rotbotics のwebページからのリンク先
(step3) ArbotiX library and hardware file
21
Arbotixライブラリファイルとハードウェアファイル
の置き場所
この 1.6 にはこのフォルダーは含まれていない.
(必要に応じて古いリンクから持ってきましょう.)
(step4) FTDI 接続
22
こうではなくて,
VINの方にしておく.
Trossen Rotbotics のwebページより
要するに,
デフォルトのまま
(触らなくてよい)
今回は,この接続方式.
GRNはgreenつまり緑色,
BLKはblackつまり黒色.
そんなふうにカラーケーブルを接続する.
(step5) ボードとシリアルポートの指定
23
Trossen Rotbotics のwebページより
(step6) ボードとサーボモータを接続
24
Trossen Rotbotics のwebページより
ジャンバーがこのように
なっていることを確認する.
スマートサーボを動かしてみる
!
• Arbotix-Mボード上のLEDを光らせる.
• サーボモータを1個動かす.
• サーボモータのLEDを光らせる.
• サーボモータのIDを変える.
• サーボモータを2個同時に動かす.
• 2個のサーボモータで「動きコピー」デモ.
• いろいろな動作を自由にプログラミングしてみる.
25
• Arbotix-Mボード上のLEDを光らせる.
26
void setup() {
// initialize the digital pin as an output.
pinMode(0, OUTPUT); // Pin 0 maps to the USER LED on the ArbotiX Robocontroller.
}
void loop() {
digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
• サーボモータを1個動かす.
27
#include <ax12.h>
int t;
int id;
void setup() {
dxlInit(1000000);
id = 1;
Serial.begin(9600);
}
void loop() {
t = dxlGetTemperature(id);
Serial.print(" Temp = ");
Serial.println(t, DEC);
if(t < 60){
SetPosition(id, 400);
delay(1000);
SetPosition(id, 600);
}
delay(1000);
}
• サーボモータのLEDを光らせる.
28
#include <ax12.h> //include the ArbotiX DYNAMIXEL library
const int SERVO_ID = 1; // Identifier of the servo
const int BLINK_TIME = 1000; //time foe each LED to be on
void setup()
{
dxlInit(1000000); //start dynamixel library at 1mbps to communicate with the servos
}
void loop()
{
dxlLEDOn(SERVO_ID);
delay(BLINK_TIME);
dxlLEDOff(SERVO_ID);
delay(BLINK_TIME);
}
• サーボモータのIDを変える.
29
#include <ax12.h>
int id_old, id_new;
void setup(){
dxlInit(1000000); //start dynamixel library at 1mbps to communicate with the servos
id_old = 1;
id_new = 2;
ax12SetRegister(id_old, AX_ID, id_new); // IDの書き換え
}
void loop(){
}
この sketch を実行するときには,ボードには1個だけの
サーボモータが接続されている状況にしておくこと.
ID番号は0から253まで使��可能.254はブロードキャストのIDとして特別に使用される.
書き換えがうまくいったことの確認のために,
ここに,新IDのモータを動かすか
新IDのモータのLEDを点滅させる
コードなどを書くといいかもしれない.
このスケッチを実行後に別の作業を行う場合は,
トラブル回避のため
スケッチ「Arbotix-Mボード上のLEDを光らせる.」
をボードに書き込んでおくこと.
• サーボモータを2個同時に動かす.
30
#include <ax12.h>
int id_A;
int id_B;
int pos_h = 350;
int dp;
void setup() {
dxlInit(1000000);
id_A = 1;
id_B = 2;
dp = 250;
}
void loop() {
SetPosition(id_A, pos_h);
SetPosition(id_B, pos_h);
delay(500);
SetPosition(id_B, pos_h - dp);
delay(500);
SetPosition(id_A, pos_h + dp);
SetPosition(id_B, pos_h + dp);
delay(1000);
}
2個のサーボはそれぞれ,
ID=1,ID=2 とセットしておく.
一般的注意:コントローラに接続されているサーボモータのIDは相異なっている必要があります.
同一のIDのサーボがあってはいけません.
• 2個のサーボモータで「動きコピー」デモ.
31
//////////////////////
//// motion copy
//// サーボ id_w の位置をサーボ id_r の位置と同じにする.
//////////////////////
#include <ax12.h>
int id_r;
int id_w;
int pos;
void setup() {
dxlInit(1000000);
id_r = 1;
id_w = 2;
dxlSetRunningTorqueLimit(id_r, 0); //フリーラン状態にする
}
void loop() {
pos = GetPosition(id_r);
SetPosition(id_w, pos);
delay(10);
}
ID = 1ID = 2
モータの最大トルクは0から1023まで使用可能.
電源投入時に512(最大出力の50%)にセットされる.
サーボモータに関する命令
• Document -> Arduino -> libraries -> ArbotiX -> ax12.h
• 上記テキストファイル ax12.h を見れば,
どのような命令が用意されているかがわかります.
32
スマートサーボモータAX12のマニュアル(日本語)は下記サイトにあります.
http://support.robotis.com/jp/product/dynamixel/ax_series/dxl_ax_actuator.htm
リチウムポリマー電池の取り扱いについて
• 過充電および過放電に注意.
(異常な膨らみや破裂(爆発)の危険.)
• 専用の充電器を用いる.
(セッティングに細心の注意を払う.)
33
Trossen Robotics のサイト
34
このページ(LiPo Battery Guide をよく読むこと)
Trossen Rotbotics のwebページより
リチウムポリマー(LiPo)電池
35
Tーコネクタ
バランスコネクタ
LiPo電池(3セル 11.1 V)
Floureon 11.1V 4500mAh 30C
LiPo Battery
専用充電器との接続
36
T−コネクタ
バランスコネクタ
1
2
3
専用充電器との接続(つづき)
37
まとめ
• コントローラ(Arbotix-M)を Arduino IDE で用いるためのセット
アップ方法を学んだ.
• スマートサーボ(AX-12)を動かすためにArduino IDE でコント
ローラをプログラミングする方法を学んだ.
• スマートサーボの基本的取り扱い方を学んだ.
• 実際にスマートサーボを動かしてみた.
• LiPo(リチウムポリマー)バッテリーの取り扱い方を学んだ.
38

More Related Content

Kiso sekkei 01rev03