二足歩行ロボットへの挑戦 入門編 [Arduino]
Arduinoでサーボモーターを制御して自動で歩く事ができる二足歩行ロボットです。骨格にはダンボールを使用しているので手軽に試作機を作成できます。
試作機なのでロボットにArduinoは載せていません。また、少し斜めに前進しています。本稼動する場合は木材や3Dプリンタなどを使用して「精密」に組み立てて下さい。
使用部品・材料
総額で約3,163円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
サンハヤト SAD-101 ニューブレッドボード | ¥500 | Amazon.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・ラズパイ等)でユーザー同士で情報を共有して下さい。