ホーム > カテゴリ > ロボット・電子工作・マイコン >

二足歩行ロボットへの挑戦 入門編 [Arduino]

Arduinoでサーボモーターを制御して自動で歩く事ができる二足歩行ロボットです。骨格にはダンボールを使用しているので手軽に試作機を作成できます。

試作機なのでロボットにArduinoは載せていません。また、少し斜めに前進しています。本稼動する場合は木材や3Dプリンタなどを使用して「精密」に組み立てて下さい。

使用部品・材料

総額で約3,163円です。(Arduino本体の値段を除く)

部品/材料値段備考
サンハヤト SAD-101 ニューブレッドボード¥500Amazon.com
マイクロサーボ SG92R
(4個)
¥2000トルク:2.5kgf/cm
秋月電子の通販コード(M-08914)
両端ロングピンヘッダ 1×40¥50ニッパーで3つにしてサーボの端子と接続。(ジャンパーワイヤーでも代用可能)
秋月電子の通販コード(C-09056)
結束バンド 170本入り白色 10cm(4inch)¥100小さくて細いもの。100円ショップ(ダイソー)
3M スコッチ はがせる両面テープ 強力 薄手 12mm×15m SRE-12¥483強力ではがせる両面テープです。
Amazon.com
電解コンデンサー 470μF16V105℃(ルビコンWXA)
(3個)
¥30電圧安定用。他のでも良い。
秋月電子の通販コード(P-08426)
ダンボール無料薄くて丈夫なダンボール。
私はAmazon.comで送られてくるダンボールの中にある中敷を使用しました。100円ショップの収納ボックス(紙)などでもOK。

サーボはSG90でも問題なく動作すると思います。

写真

ダンボールのパーツサイズ

ダンボールの各パーツのサイズです。(目安)

部位サイズ(横x縦)
胴(1枚)9.5cm x 6.5cm
脚(2枚)1.2cm x 4.0cm
足(2枚)3.8cm x 4.0cm

※「緻密な計算」で算出したサイズではありません。

サーボの初期設定

組み立てる前に各サーボの初期値をArduinoで設定しておきます。

部位角度
左上(5pin)90度
左下(6pin)180度
右上(9pin)0度
右下(10pin)0度

次のように4つのサーボの初期角度を1つ1つ設定していきます。

#include <Servo.h>
Servo myServo;
void setup() {
  // 左上(5pin)のサーボの角度を90度にする
  myServo.attach(5); 
  myServo.write(90);    
}

この初期設定が終わってからサーボホーン(羽)を取り付けてください。

配線図

スケッチ(プログラム)

いきなり、二足歩行は動作しないと思います。

最初はコード内の歩行速度(WALKING_SPEED)を1秒(1000)に変更します。それで、右足のコードを全てコメントにして左足だけを実行するようにします。左足が正常に動作しているようでしたら、今度は右足だけで実行します。最後に、歩行速度を0.1秒(100)に戻せば完了です。

#include <Servo.h>
Servo myServoL_UP;
Servo myServoL_DOWN;
Servo myServoR_UP;
Servo myServoR_DOWN;

// 歩行速度
int WALKING_SPEED  = 100;

void setup() {
  // 左足
  myServoL_UP.attach(5);  
  myServoL_DOWN.attach(6);

  // 右足
  myServoR_UP.attach(9);
  myServoR_DOWN.attach(10);
  
  // サーボを初期化する
  myServoL_UP.write(90);    
  myServoL_DOWN.write(180);    
  myServoR_UP.write(0);  
  myServoR_DOWN.write(0);  
  delay(2000);  
}
void loop() {  
  // 右足  
  myServoR_DOWN.write(20);
  delay(100);  
  myServoR_UP.write(20);    
  delay(WALKING_SPEED);
 
  myServoR_DOWN.write(0);
  delay(100);  
  myServoR_UP.write(0);    
  delay(WALKING_SPEED); 
 
  // 左足  
  myServoL_DOWN.write(160);
  delay(100);  
  myServoL_UP.write(60);      
  delay(WALKING_SPEED);
  
  myServoL_DOWN.write(180);
  delay(100);  
  myServoL_UP.write(90);       
  delay(WALKING_SPEED);   
}

このコード内のサーボの角度は各自の環境に合わせて適宜変更してください。ロボットを組み立てる際に「ズレ」が発生する為です。

サーボモーターの仕組み

Arduinoでサーボの角度を制御した時に「サーボの胴体」を手などで固定するとサーボホーン(羽)が動作します。反対に「サーボホーン」を固定するとサーボの胴体が動作します。

この仕組みが今回の二足歩行では重要となります。

二足歩行の原理(サーボの使い方)

左足と右足は同じ動作です。

片足の足元(下)のサーボで足を上げて、その姿勢の状態で胴体(上)のサーボで進行方向にサーボの角度を移動します。そのサーボの角度は進行方向が北とすると、左足ならば北西、右足ならば北東となります。

足元(下)のサーボ

サーボの角度を変更すると、サーボホーンが固定されているのでサーボの胴体が動作して足が上がります。

胴体(上)のサーボ

サーボの角度を変更すると、サーボホーンが固定されているのでサーボの胴体が動作して足全体(片足)が北西または北東に動作します。

※これらは各部位が両面テープなどで確実に固定されている必要があります。

参考動画

今回の二足歩行ロボットは次の動画を参考にして作成しました。先人に感謝。

ダンボット 歩行モーション
Arduino互換機を搭載した「ピッコロボ」のデモ





掲示板

ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。

関連記事



公開日:2017年12月19日 最終更新日:2018年01月22日
記事NO:02622