四足歩行ロボットへの挑戦 試作機 [Arduino]
前へ進んだ後に、後ろに戻ってきます。
今回もプロトタイプ(試作機)なのでプラ板や結束バンドなどで「アバウト」に組み立ています。本稼動させる場合は、アルミ板や木材、ネジなどを使用して「精密に製作」すると歩行の動作が安定します。
それ以外にも、ロボットの足裏の素材/サイズの影響も大きいです。
使用部品・材料
総額で約23,854円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
[電子部品] | ||
サンハヤト SAD-101 ニューブレッドボード (3個) | ¥1500 | Amazon.com |
ロジックレベル双方向変換モジュール (2個) | ¥736 | 1.8Vから10Vまでに対応した電圧レベル変換。 スイッチサイエンス(SFE-BOB-12009) |
Longruner サーボ ロボット用 デジタルサーボ 二軸 180度動作 15kg/17kg 0.16sec/60°トルク 1mm硬質アルミ板(大/小U) スマートロボットサーボ 高性能 LY10-1 (8個) | ¥17,600 | 各関節用 Amazon.com |
両端ロングピンヘッダ 1×40 | ¥50 | ニッパーで3つにしてサーボの端子と接続。(ジャンパーワイヤーでも代用可能) 秋月電子の通販コード(C-09056) |
15 cm 150mmオスtoメスJR プラグ RCラジコン サーボ延長リード線ケーブル (20本入り) | ¥1199 | サーボ端子の延長用 Amazon.com |
タクトスイッチ | ¥10 | 歩行開始用。 秋月電子の通販コード(P-03647) |
カーボン抵抗器 | 数円 | 10kΩ(1個)を使用。 |
[電源] | ||
ブレッドボード用DCジャックDIP化キット | ¥100 | (開発時)サーボの外部電源用。 秋月電子の通販コード(K-05148) |
スイッチングACアダプター6V2A 100~240V NP12-US0620 | ¥840 | (開発時)サーボの外部電源用。 秋月電子の通販コード(M-00024) |
ROBOパワーセル F2-850タイプ(Li-fe) | 任意 | ロボットのサーボ用バッテリー。 マルツなどで販売 ※取扱店リスト |
リチウムフェライトバッテリー専用充電器 BX-20LF | 任意 | ロボットのサーボ用バッテリーの充電器。 マルツなどで販売 ※取扱店リスト |
[材料] | ||
KSNR-205 | ¥100 | 反発弾性に優れたスポンジ。ロボットの足裏に使用。ゴムの方が前に進みやすいかも? ホームセンターなど |
タミヤ ユニバーサルプレート 2枚セット (70157) (2個) | ¥936 | ロボットの胴体用。プラ板を合計4枚使用。 Amazon.com |
ステンレス 金折隅金 38x38mm 2個セット (2個) | ¥200 | サーボと胴体の固定用(L字のブラケット)。 100円ショップ(ダイソー) |
結束バンド 170本入り白色 10cm(4inch) | ¥100 | サーボ同士の固定などに使用する。 100円ショップ(ダイソー) |
3M スコッチ はがせる両面テープ 強力 薄手 12mm×15m SRE-12 | ¥483 | 足裏のスポンジなどに使用する。 ※強力ではがせる両面テープです。 Amazon.com |
写真
実物は予想以上に大きくて重いです。胴体はプラスチック板(4枚)だと限界に近いです。アルミ板か木材が良いです。
配線図
スケッチ(プログラム)
タクトスイッチを押すとロボットが前進、後進を行います。
// <注意> // スケッチを書き込む際はArduinoのデジタル1ピンから // ジャンパーワイヤーを外して下さい。 // 書き込み後に1ピンにジャンパーワイヤーを挿入します。 #include <Servo.h> Servo myServo1; // 左前下 Servo myServo2; // 左前上 Servo myServo3; // 左後下 Servo myServo4; // 左後上 Servo myServo5; // 右前下 Servo myServo6; // 右前上 Servo myServo7; // 右後下 Servo myServo8; // 右後上 void setup() { pinMode(13, INPUT); myServo1.attach(1,500,2500); myServo2.attach(2,500,2500); myServo3.attach(3,500,2500); myServo4.attach(4,500,2500); myServo5.attach(5,500,2500); myServo6.attach(6,500,2500); myServo7.attach(7,500,2500); myServo8.attach(8,500,2500); // サーボの位置を初期化する myServo1.write(0); myServo2.write(90); myServo3.write(0); myServo4.write(90); myServo5.write(0); myServo6.write(90); myServo7.write(0); myServo8.write(90); delay(2000); } void loop() { if (digitalRead(13) == HIGH) { // 前へ進む for(int i=0;i<5;i++){ // ---------------------------- // 対角線1ペア(右前足、左後足) // ---------------------------- // 足を上げる myServo3.write(90); myServo5.write(90); delay(500); // 脚を前へ myServo4.write(150); myServo6.write(150); delay(750); // 足を下げる myServo3.write(0); myServo5.write(0); delay(750); // 脚を定位置に戻す myServo4.write(90); myServo6.write(90); // 反対の対角線ペアを後ろへ myServo2.write(30); myServo8.write(30); delay(750); // ---------------------------- // 対角線2ペア(左前足、右後足) // ---------------------------- // 足を上げる myServo1.write(90); myServo7.write(90); delay(500); // 脚を前へ myServo2.write(150); myServo8.write(150); delay(750); // 足を下げる myServo1.write(0); myServo7.write(0); delay(750); // 脚を定位置に戻す myServo2.write(90); myServo8.write(90); // 反対の対角線ペアを後ろへ myServo4.write(30); myServo6.write(30); delay(750); } // 初期化 myServo4.write(90); myServo6.write(90); delay(500); // 後ろへ進む for(int i=0;i<5;i++){ // ---------------------------- // 対角線ペア1(右前足、左後足) // ---------------------------- // 足を上げる myServo3.write(90); myServo5.write(90); delay(500); // 脚を後ろへ myServo4.write(30); myServo6.write(30); delay(750); // 足を下げる myServo3.write(0); myServo5.write(0); delay(750); // 脚を定位置に戻す myServo4.write(90); myServo6.write(90); // 反対の対角線ペアを前へ myServo2.write(150); myServo8.write(150); delay(750); // ---------------------------- // 対角線ペア2(左前足、右後足) // ---------------------------- // 足を上げる myServo1.write(90); myServo7.write(90); delay(500); // 脚を後ろへ myServo2.write(30); myServo8.write(30); delay(750); // 足を下げる myServo1.write(0); myServo7.write(0); delay(750); // 脚を定位置に戻す myServo2.write(90); myServo8.write(90); // 反対の対角線ペアを前へ myServo4.write(150); myServo6.write(150); delay(750); } } delay(10); }
右前足、左後足を「対角線ペア1」。左前足、右後足を「対角線ペア2」。
そして、対角線ペア1、対角線ペア2の動作を併せた歩行動作を「1セット」としています。このロボットの「歩行の原理」はソースコード内のコメントと実際の動作から読み取ってください。
参考動画
4脚ロボット(H25-42N)
Raspberry Piで4足歩行ロボット
四足歩行ラジコンロボットの制作
多脚ロボットEXOSシリーズ HP-25S
KXR L4T demo
など多数。YouTubeで先人の動画を参考にすると良いです。
掲示板
ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。