サウロン製作記:Arduino Mega 2560 製セミヒューマノイドロボット完全ガイド
必要な部品と材料
| 部品名 | 数量 |
|---|---|
| Arduino Mega 2560 | 1 |
| 1Sheeld(スマホ連携シールド) | 1 |
| Android デバイス(スマートフォン) | 1 |
必要な工具と機器
- レーザーカッター(3mm 合板、バルサ材、アクリル等の加工用)
アプリとオンラインサービス
- Arduino IDE
- 1Sheeld アプリ(Google Play)
- 1Sheeld ライブラリ
プロジェクト概要
『指輪物語』のサウロンを模した、人間サイズのセミヒューマノイドロボットを製作します。3 自由度(3 DOF)のアーム ×2、3 DOF のヘッド、固定ベースで構成され、以下の 3 モードで動作します(2 つのタクトスイッチで切替):
- スタンバイモード:イベント展示用。注目を集める動作シーケンスを自動再生
- ゲームパッドモード:1Sheeld の Gamepad シールドで来場者が手動操作
- 模倣モード:スマホを装着したグローブを着用し、加速度・ジャイロセンサーで腕の動きをロボットに模倣させる(映画『リアル・スティール』のアトム風)
ニューヨーク・メイカーフェア出展を目的に、子供たちに Arduino や 1Sheeld 等の最新技術で映画キャラを作る楽しさを伝える作品です。CAD 図面、回路図、Arduino コード、レーザーカッター用 DXF ファイル等、全データを公開しています。
ステップ 1: ヘッドの製作
xyzbot のオープンソースロボットヘッド「Fritz」をベースに採用。レーザーカッターで 3mm 合板をカットし組み立て。今回はコスト・時間削減のため、3D プリントパーツ(目、まぶた、眉、唇)は省略しています。組み立て手順は添付動画を参照(ベース、目の 3D パーツ、眉、唇の手順はスキップ)。
ステップ 2: ボディの製作
携帯性を重視し、アーテロンロッド(アルミ複合材)と 3mm 合板でフレームを構築。舌溝継ぎ(タング・アンド・グルーブ)で胴体・肩・首・背中を接合。M4×20mm ネジで木製フレームとアーテロン骨格を、M12×30mm で骨格とベースを固定。サーボは M4×10mm で固定。
アーテロン骨格は 5 パーツで構成:
- 基本ロッド(φ50mm)
- スケルトン(φ25mm)
- 幅ロッド ×3(φ15mm、胴体・背中・スケルトン連結用)
ステップ 3: ベースの製作
SolidWorks で設計。6mm 鋼板製で軽量化穴を設け、M12×30mm でアーテロン骨格と固定。机への固定は 3 箇所のネジ穴または 4 インチ C クランプで対応。DXF ファイル提供。
ステップ 4: アームの製作
最大の課題だったアームは「モジュール化・着脱容易・汎用性」を目標に設計。前腕ジョイントを共通化し、剣・フック・グリッパー等を交換可能。3mm 合板フレーム、アルミパンチルト(肩)、バルサ材(武器)を使用。SolidWorks でトルク計算(必要 3kg/cm 以上)を行い、余裕を持って大型サーボを採用。前腕ジョイントは Autodesk 123D Make でスライス分割し、レーザーカッターで加工。
ステップ 5: サウロン風ヘルメット&アーマー(コスプレ)
友人のカリーム氏協力でコスプレパーツを製作。Sauron Cosplay、Sauron Cosplay Helmet を参考にロボット寸法へ調整。
ステップ 6: 電子回路
- Arduino Mega + 1Sheeld で全サーボ(アーム 6軸、ヘッド 3軸)を制御
- 5V/5A 電源でサーボと Arduino を給電
- ブレッドボードで全サーボの VCC/GND を電源と共通化
- 1Sheeld でスマホのセンサー・機能を活用:
- Gamepad シールド:画面上のジョイスティックで手動操作
- Orientation シールド:グローブ固定スマホの姿勢をサーボ角度にマッピング
- Music Player シールド:口可動に合わせサウロン音声を再生
- Toggle Button シールド:物理ボタン代わりにモード切替
- Terminal シールド:Bluetooth 通信中は PC シリアルモニタ不可のため、デバッグ用に使用
ステップ 7: Arduino コード
1Sheeld ライブラリ導入後、UART スイッチを「アップロードモード」(1Sheeld ロゴから離す)にしてスケッチ書き込み、書き込み後「動作モード」(ロゴ側へ戻す)に戻すのが重要。1Sheeld アプリで Gamepad、Orientation、Music Player、Toggle Button、Terminal シールドを有効化し、複数シールドアイコンをタップして接続。
コードの主な構成:
- 9 個のサーボオブジェクト(右腕 3、左腕 3、首横・首縦、口)
- 割り込みでモード切替フラグを管理(ピン 2: ゲームパッド、ピン 3: 模倣)
standbyMode():9 段階のポーズシーケンスをループ、各ポーズで口可動+音楽再生gamePadMode():Gamepad ボタン(上下左右、赤橙緑青)に対応したポーズを即時実行imitationMode():スマホの Y 軸(-90〜90°)を左腕モーター1に、Z 軸(-70〜70°)を左腕モーター2/3にマッピング
ステップ 8: ニューヨーク・メイカーフェアでの展示
多数の来場者と交流し、3 モードすべてでデモンストレーションを実施。写真多数掲載。
ステップ 9: 今後の展望
- 組み立て動画の撮影・公開
- ヘッドの完全版化(残りのモーター追加、目パーツ 3D プリント)
- 固定ベースをメカナムホイール 4 輪ベースへ置き換え、自律移動化(SolidWorks 設計済み、統合未着手)
コード(抜粋)
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_SHIELD
#define INCLUDE_MUSIC_PLAYER_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_ORIENTATION_SENSOR_SHIELD
#include
#include
Servo rightArm_M1, rightArm_M2, rightArm_M3;
Servo leftArm_M1, leftArm_M2, leftArm_M3;
Servo neckH, neckV, mouth;
const int modePin1 = 2, modePin2 = 3;
volatile bool gamepadEn = false, imitationEn = false;
void setup() {
OneSheeld.begin();
pinMode(modePin1, INPUT); pinMode(modePin2, INPUT);
attachInterrupt(digitalPinToInterrupt(modePin1), gampadISR, CHANGE);
attachInterrupt(digitalPinToInterrupt(modePin2), imitationISR, CHANGE);
rightArm_M1.attach(4); rightArm_M2.attach(5); rightArm_M3.attach(6);
leftArm_M1.attach(7); leftArm_M2.attach(8); leftArm_M3.attach(9);
neckH.attach(10); neckV.attach(11); mouth.attach(12);
// ホームポジション設定...
}
void loop() {
if (digitalRead(modePin1)) gamePadMode();
else if (digitalRead(modePin2)) imitationMode();
else standbyMode();
}
// standbyMode: 9ポーズのシーケンス、割り込みチェック挟みながら実行
// gamePadMode: GamePad.isUpPressed() 等でボタン判定、即時ポーズ適用
// imitationMode: OrientationSensor.getY()/getZ() を map() でサーボ角へ変換
// ISR: モードフラグの排他制御
回路図
Arduino Mega、1Sheeld、9 サーボ、電源、モード切替スイッチの接続図。
製造プロセス
- 産業用ロボットの設計・製造・未来:人間を超える精度と持続性
- ArduinoベースSCARAロボット自作 – ステップバイステップガイド
- 複数ロボット統合セルでシェイカーカップを1サイクルで完成:効率最大化
- オートメーションの未来:自己複製ロボットがインダストリー4.0を再構築する
- 理想的なERP導入チームの構築:成功への実証済み戦略
- Raspberry Piロボット自作入門:初心者向けステップバイステップガイド
- 自律スプレーロボットで一貫性を向上
- 塗装ロボットが手戻りを削減し、一貫性を高め、コストを削減する仕組み
- 製造業における手戻りコスト削減:効率と品質のための戦略
- 産業用ロボットビジョン:ビジョンから自己プログラミングへ
- 自己プログラミングロボットとは何か、なぜ重要なのか