四足歩行ロボットへの挑戦 試作機 [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・ラズパイ等)でユーザー同士で情報を共有して下さい。
関連記事
公開日:2018年01月16日 最終更新日:2018年01月22日
記事NO:02630
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









