🧪 新しいチュートリアルを公開中 — ロボットアームからセンサーまで
コンテンツへスキップ
この製品を購入公式ストア公式サイト

AmazingHand PWM 器用なハンド — 全フローチュートリアル ​

付属配布パッケージ: delivery_package.zip

上位機のジェスチャーコマンドからジェスチャートラッキングまで、一気通貫の使用チュートリアル。 対応ハードウェア:ESP32-S3 + 8 チャンネル PWM サーボ(差動駆動)。

バージョン:2026-08-20 · 対応ファームウェア:ESP-IDF コンポーネント化版(AmazingHand_Serial)


第 0 章 チュートリアルガイド ​

本チュートリアルは順番に沿って構成されています。まず自分がどのルートに進むかを確認してから、対応する章へ進んでください。

ルート用途前提条件章
A. 上位機ジェスチャーコマンドボタンをクリック/コマンド入力でロボットハンドがジェスチャー(グー/チョキ/パー/サムズアップ…)Python + ファームウェア書き込み第 1-4 章
B. GUI 内蔵ジェスチャートラッキングカメラが手の動きに追従し、ロボットハンドがリアルタイムに再現(簡易版、IK なし)A + 64 ビット Python + mediapipe第 1-4 章 + 5.1
C. dora 公式 IK トラッキング公式の完全チェーン:カメラ→IK→8 関節角→サーボ(完全版)A + Rust + uv + dora第 1-4 章 + 5.2

推奨ルート:

  • 初めて使う → A へ。まずファームウェアと配線に問題がないことを確認。
  • カメラ追従をすぐに見たい → B(軽量、数分でセットアップ完了)。
  • 正式で完全なトラッキングをしたい → C(公式チェーン、精度最高)。

3 つのルートはハードウェアを共用し、追加で Rust/uv/dora をインストールする必要があるのはルート C のみです。


第 1 章 環境準備 ​

順番にインストールします。ルート A/B は第 1.1 節のみ必要です。ルート C は第 1.2 節も必要です。

1.1 上位機環境(ルート A/B 必須) ​

① 64 ビット Python 3.12 ​

必ず 64 ビットにしてください。mediapipe 0.10.14 は 64 ビット Windows 用の wheel のみ提供しており、32 ビットにはインストールできません。 これは GUI をダブルクリックしてもすぐに落ちるよくある原因でもあります。

  • D:\Python312-64bit へのインストールを推奨します(本機には既にこのパスがあります)。
  • インストール時に Add to PATH にチェックを入れてください。
  • 確認(64 ビット):
bash
py -3.12-64 -c "import sys; print('64bit' if sys.maxsize > 2**32 else '32bit')"
# 输出: 64bit

② 上位機の依存関係をインストール ​

プロジェクトのルートディレクトリ(hand_gui.py があるディレクトリ):

bash
pip install -r requirements.txt     # 只需 pyserial

③ トラッキング用追加依存関係(ルート B 用) ​

プロジェクトのルートディレクトリで実行:

bash
setup_tracking.bat

自動的に以下を行います:64 ビット Python の検索 → tracking_env 仮想環境の作成 → requirements-tracking.txt のインストール (mediapipe==0.10.14、numpy<2、scipy、opencv、Pillow、pyserial)→ mediapipe の検証。

または手動でインストール:

bash
D:\Python312-64bit\python.exe -m pip install -r requirements-tracking.txt

1.2 dora 公式 IK 環境(ルート C 必須) ​

お客様によるインストール:..\02_hand_tracking\Demo\Windows_Scripts_CN\1-安装环境.bat(英語版は ..\02_hand_tracking\Demo\Windows_Deploy_Scripts\1-Install_Env.bat)をダブルクリックすると、すべての依存関係が自動インストールされます: Rust ツールチェーン、uv(Python パッケージ管理)、dora-cli。

インストール後、ターミナルを閉じて開き直し、PATH を反映させてください。 詳細な依存関係(バージョン、手動インストール方法)は保守ドキュメントを参照してください。お客様側での対応は不要です。


第 2 章 ハードウェア配線 ​

2.1 ハードウェアリスト ​

ハードウェア説明
ESP32-S3 開発ボードYX-ESP32-S3 または同等品
8 チャンネル PWM サーボアナログサーボ、差動駆動
サーボアダプタボードサーボ → 8 チャンネル PWM 出力
独立 5V 電源少なくとも 5V 3A、サーボの過渡電流が大きい
USB データケーブルESP32-S3 Type-C → PC
カメラ内蔵または USB カメラ(トラッキング用)

2.2 GPIO マッピング ​

アダプタボード PWM1-8 → ESP32-S3 GPIO:

アダプタボードGPIO指
PWM14人差し指関節 1
PWM25人差し指関節 2
PWM36中指関節 1
PWM47中指関節 2
PWM515薬指関節 1
PWM616薬指関節 2
PWM717親指関節 1
PWM818親指関節 2

左右の手は同じ GPIO を共用します。左手/右手はソフトウェアで切り替えるため(第 4 章)、配線を変更する必要はありません。

2.3 電源要件 ​

  • サーボには独立した 5V 電源(少なくとも 3A)を使用し、USB 給電だけに頼らないでください。
  • サーボの瞬間的な電流衝撃で ESP32 がリセットされることがあります(症状:ESP32 が繰り返し再起動する)。その場合は ESP32 を電源から切って再起動してください。

2.4 配線手順 ​

  1. 8 チャンネルサーボ → アダプタボード PWM1-8
  2. アダプタボード → ESP32-S3 の対応 GPIO(上表)
  3. ESP32-S3 Type-C → PC
  4. カメラを PC に接続(トラッキング用)

詳細な配線/回路図は ESP32开发板电路图/ ディレクトリを参照してください。


第 3 章 前提条件:ファームウェアの書き込み ​

サーボが応答するには、まずファームウェアを書き込む必要があります。ファームウェアは esp-idf\AmazingHand_Serial\ にあります。

3.1 ESP-IDF 版のビルド(推奨) ​

Espressif IDE で AmazingHand_Serial プロジェクトを開きます:

  1. ターゲットチップを設定(初回):
    idf.py set-target esp32s3
  2. ビルド:
    idf.py build
  3. 書き込み(Windows では COM ポート、例:COM3):
    idf.py -p COM3 flash

3.2 書き込み後の確認 ​

シリアルモニタ(ボーレート 115200):

idf.py -p COM3 monitor

次の起動ログが表示されるはずです:

AmazingHand Serial Control Ready (ESP-IDF)
Protocol: 115200-8N1 [0xAA CMD LEN DATA CKSUM]

シリアルのボーレートはファームウェア/スクリプト側で統一設定済み(115200)のため、お客様が手動で設定する必要はありません。

注:通常、機器の納品時にはファームウェアは書き込み済みです。この手順は新しいファームウェア/再書き込み時のみ実行してください。


第 4 章 初回実行:上位機のジェスチャーコマンド ​

前提:ファームウェア書き込み済み(第 3 章)、ESP32 通電済み、シリアルケーブル接続済み。まずデバイスマネージャーで COM ポートを確認してください。

4.1 GUI 可視化(推奨) ​

方式 A:パッケージ化した exe を実行 ​

dist/AmazingHand控制台.exe をダブルクリックします(トラッキングなし。トラッキングにはソースコード方式が必要)。

方式 B:ソースコードから実行 ​

bash
# 项目根目录,先激活追踪环境(装了 mediapipe)或任意带 pyserial 的 Python
tracking_env\Scripts\python hand_gui.py

GUI の使用手順 ​

  1. シリアルポート選択:上部のドロップダウンで ESP32 の COM ポートを選択。
  2. 「接続」をクリック:ステータスランプが緑になり、ログに「接続済み」と表示され、自動的に NOP リンクテストを送信。
  3. ジェスチャーコマンド:「グー」「チョキ」「パー」「サムズアップ」「OK」「ピンチ」「指差し」などをクリックすると、ロボットハンドが実行。
  4. 左右の手:「右手」/「左手」にチェックを入れて親指のミラー方向を切り替え。
  5. サーボ直接駆動:8 個のスライダーをドラッグして、単一サーボの角度をリアルタイム制御(0-180°)。
  6. 指の差動制御(推奨):各指に 2 つのプログレスバー——「屈曲◀▶伸展」は逆方向差動、「右スイング◀▶左スイング」は同方向スイング。2 つの自由度は独立し、同期駆動。
  7. 繰り返し/停止:前回のジェスチャーを繰り返し / 即座に中断。
  8. 通信ログ:下部に送受信フレームと応答をリアルタイム表示。

4.2 コマンドラインテスト(serial_test.py) ​

プロジェクトのルートディレクトリ:

bash
# 链路测试(先确认能通)
python serial_test.py COM3 nop

# 手势
python serial_test.py COM3 rock         # 石头
python serial_test.py COM3 thumbs_up    # 真棒
python serial_test.py COM3 index        # 指向
python serial_test.py COM3 open         # 张开
python serial_test.py COM3 close        # 握拳

# 单舵机直驱
python serial_test.py COM3 servo 1 90   # 舵机1 → 90°

# 全部归中
python serial_test.py COM3 mid

# 设左右手
python serial_test.py COM3 hand L
python serial_test.py COM3 hand R

# 扫频/自检
python serial_test.py COM3 sweep 1      # 舵机1 扫频
python serial_test.py COM3 test         # 全部舵机逐个测试

4.3 確認 ​

  • ジェスチャーをクリックすると、サーボが対応する動作を実行するはずです。シリアルログに ACK と DONE が返ります。
  • 応答コード:0x00=OK、0x01=無効なコマンド、0x02=パラメータエラー、0x03=ビジー、0x10=完了。
  • サーボがまったく動かない場合:第 6 章のよくある質問を参照(まず電源/シリアルを確認)。

ジェスチャーコマンドとシリアルプロトコルの完全な早見表は第 7 章を参照。


第 5 章 応用チュートリアル:ジェスチャートラッキング ​

前提:第 1-4 章完了(ファームウェア書き込み、シリアル制御可能、カメラ準備完了)。 本章は 2 つのルートがあります。どちらか一方を選んで進んでください。

5.1 GUI 内蔵トラッキング(軽量版) ​

対象:簡単なデモ向け。dora のインストール不要。カメラ → 差動サーボへ直接マッピング、IK なし。

前提 ​

  • 64 ビット Python + setup_tracking.bat(第 1.1 節)。
  • カメラが使用可能。

実行 ​

bash
# 项目根目录,用追踪环境启动 GUI
tracking_env\Scripts\python hand_gui.py
  1. シリアルポートを選択 → 「接続」。
  2. 「ジェスチャートラッキング (MediaPipe カメラ)」パネルまでスクロール。
  3. カメラ番号を選択(既定 0)→「トラッキング開始」をクリック。
  4. 手を画面内に入れると、ロボットハンドが手の屈曲/伸展に追従。

原理 ​

  • mediapipe 0.10.14 が 4 指の指先の 3D ベクトルを抽出(手の座標系)。
  • hand_tracking.py の tips_to_angles() が各指を差動角度にマッピング:
    • flex(屈曲/伸展):3 指は z 成分、親指は y 成分を使用。
    • base(左右スイング):90 に固定(左右スイングは未実装)。
  • GUI に EMA 平滑化(alpha=0.4)+ 60ms スロットリングを内蔵し、ぶれを防止。

制限 ​

  • IK なし:指先を直接角度にマッピングするため、精度は公式チェーンに劣ります。
  • 左右スイングは保留:base は 90 に固定で、左右スイングは行いません。
  • デモ/プロトタイプ向け。正式用途には 5.2 を推奨。

5.2 dora 公式 IK トラッキング(完全版) ​

対象:正式な使用向け。公式チェーン:カメラ → mediapipe → MuJoCo+mink IK → 8 関節角 → AHControl(Rust)→ ESP32 → PWM サーボ。

前提 ​

  • 完全な環境(Rust + uv + dora、第 1.2 節)。
  • ファームウェア書き込み(第 3 章)。
  • データフロー yml には PWM ボーレート(115200)が設定済みのため、手動で変更する必要はありません。

ステップ 1:デプロイ(ワンクリックスクリプト推奨) ​

..\02_hand_tracking\Demo\Windows_Scripts_CN\3-部署代码.bat(英語版は ..\02_hand_tracking\Demo\Windows_Deploy_Scripts\3-Deploy_Demo.bat)をダブルクリックすると、自動的に以下が完了します: Python 環境の作成、AHControl(Rust)のビルド、AHSimulation/HandTracking(mediapipe)のインストール。

初回デプロイには数分かかります。スクリプトには環境変数の処理が組み込まれているため、手動で設定する必要はありません。

ステップ 2:実行 ​

..\02_hand_tracking\Demo\Windows_Scripts_CN\4-运行代码.bat(英語版は ..\02_hand_tracking\Demo\Windows_Deploy_Scripts\4-Run_Demo.bat)をダブルクリックし、メニューから選択します:

1 - 模拟仿真(摄像头手势追踪)
2 - 真实硬件(SCS0009 总线舵机)
3 - PWM 舵机(ESP32 直驱)   ← 选 3

さらにハンドの種類を選択:1 右手 / 2 左手。スクリプトが自動的に dora build + dora run を実行します。

  • カメラウィンドウが開くので、手を画面に入れる → 3D シミュレーションの指が追従 → ロボットハンドが追従。
  • 停止:Ctrl+C(またはウィンドウを閉じる)。

左右の手の切り替え ​

実行メニューでハンドの種類を選択するだけです(第 5.2 節ステップ 2):1 右手 または 2 左手 を選択。

切り替え後、スクリプトが対応するデータフローを自動的に再ビルドします。ビルド完了を待ってからカメラ前で操作してください。

実行ログの見方 ​

実行ウィンドウでは AHControl ノードが継続的にログを出力します。特に次の行に注目してください:

[ACK-STATS] sent N frames, ESP32 acked M frames
  • M ≈ N(例:sent 300 frames, ESP32 acked 300 frames)→ 正常。ESP32 が毎フレーム受信しています。
  • M = 0 → ESP32 がデータを受信していません。シリアル/電源を確認してください(第 6 章参照)。

この行が正常に増えていれば、サーボのチェーンは通っています。あとはカメラが追従できるかどうかの問題です。


第 6 章 よくある質問(実行中) ​

本節では、使用中に最も遭遇しやすく、自分で解決できる問題のみを挙げます。症状からすばやく原因を特定してください。

6.1 サーボがまったく動かない ​

順番に確認:

  1. 電源:サーボに独立電源(5V 3A 以上)が接続されていますか?USB 給電だけの場合、サーボが動かない、または ESP32 が繰り返し再起動することがあります。→ ESP32 を電源から切って再起動。
  2. シリアル:COM ポートは正しく選択されていますか?デバイスマネージャー → ポート(COM と LPT)で ESP32 に対応するポートを確認。他のプログラム(シリアルターミナルなど)が占有していませんか?→ 占有しているプログラムを終了。
  3. 配線:アダプタボード PWM1-8 は正しい GPIO に接続されていますか?サーボの信号線はしっかり挿さっていますか?

6.2 カメラの映像が出ない ​

  • Windows で初回実行時にカメラのアクセス許可が表示されます → 「許可」をクリック。
  • 以前に「いいえ」を選んだ場合:設定 → プライバシーとセキュリティ → カメラ → デスクトップアプリによるカメラへのアクセスを許可し、再実行してください。

6.3 カメラ映像はあるが、手が追従しない / 追従が鈍い ​

  • カメラが手を正しく向いていること、光量が十分であること、手が画面内に全体が見えていることを確認。
  • ゆっくり、大きく動かしてください。速すぎる、または動きが小さすぎると、トラッキングが追いつかないことがあります。
  • 3D シミュレーションウィンドウで指は動きましたか?
    • 動いた:トラッキングチェーンは正常。問題はサーボ/シリアルにあるため、6.1 を参照。
    • 動かない:トラッキングノードが手を認識できていません。姿勢/光量を調整して再試行。

6.4 ハンドの種類が逆 / 親指の方向が逆 ​

  • 左手/右手を間違えていませんか?実行メニューで対応するハンドの種類を選択。
  • 上位機 GUI で「右手」/「左手」にチェックを入れて切り替え。

6.5 左右の手の切り替えが反映されない ​

  • ハンドの種類を切り替えると、dora はデータフローを再ビルドする必要があります。実行メニューでハンドの種類を選択すると自動的に dora build が実行されるので、完了を待ってください。

6.6 実行中に画面が固まる / ログが止まる ​

  • カメラが他のアプリ(ビデオ会議、別のスクリプト)に占有されている可能性があります。終了してから再試行してください。
  • または Ctrl+C で停止し、再実行してください。

6.7 USB ポートを変えた / PC 再起動後にシリアルポートが見つからない ​

  • COM ポート番号が変わった可能性があります。デバイスマネージャーで新しい COM 番号を確認し、2-配置串口.bat(または 2-Setup_Serial.bat)を再実行してポートを一度選択してから、再度実行してください。

6.8 まだ解決しない場合 ​

  • 実行ターミナルのログのスクリーンショットを保守担当に送り、どのステップで、何をしたときに、どのような現象が起きたかを説明してください。
  • 重要なログ:起動時の [CONFIG] 行、実行中の [ACK-STATS] 行(ESP32 acked M frames の M が N に近いかどうか)。

第 7 章 コマンド早見表(付録) ​

完全なプロトコル説明は同ディレクトリの 用户手册.md を参照してください。ここでは早見表を提供します。

7.1 ジェスチャーコマンド ​

ジェスチャーHEXACKDONE
NOPAA 00 00 00BB 00 00 00—
グーAA 01 00 01BB 01 00 01BB 01 10 11
チョキAA 02 00 02BB 02 00 02BB 02 10 12
パーAA 03 00 03BB 03 00 03BB 03 10 13
サムズアップAA 04 00 04BB 04 00 04BB 04 10 14
からかい1(人差し指を振る)AA 05 00 05BB 05 00 05BB 05 10 15
からかい2(薬指)AA 06 00 06BB 06 00 06BB 06 10 16
開くAA 07 00 07BB 07 00 07BB 07 10 17
握拳AA 08 00 08BB 08 00 08BB 08 10 18
OKAA 09 00 09BB 09 00 09BB 09 10 19
ピンチAA 0A 00 0ABB 0A 00 0ABB 0A 10 1A
指差しAA 0C 00 0CBB 0C 00 0CBB 0C 10 1C

7.2 制御コマンド ​

コマンドHEX説明
繰り返しAA FE 00 FE前回のジェスチャーを繰り返す
停止AA FF 00 FF即座に中断
右手設定AA F1 01 01 F1—
左手設定AA F1 01 02 F2—
直接駆動AA F0 08 [8×角度] CKSUM8 バイトの角度

7.3 フレームフォーマット ​

帧头(0xAA) + 命令(CMD) + 长度(LEN) + 数据(DATA) + 校验和(CKSUM)
CKSUM = CMD ^ LEN ^ DATA[0] ^ ... ^ DATA[N-1]
响应: 帧头(0xBB) + CMD + STATUS + (CMD^STATUS)

7.4 上位機ツール ​

ツールコマンド用途
GUItracking_env\Scripts\python hand_gui.pyジェスチャーの可視化 + 直接駆動 + 差動 + トラッキング
パッケージ exedist/AmazingHand控制台.exePython 不要の可視化(トラッキングなし)
コマンドラインpython serial_test.py COMx <cmd>自動テスト

7.5 トラッキングデータフローファイル(PWM 版) ​

用途ファイル
左手 PWM トラッキングdataflow_tracking_real_left_pwm.yml
右手 PWM トラッキングdataflow_tracking_real_right_pwm.yml
左手 PWM 設定AHControl/config/l_hand_pwm.toml
右手 PWM 設定AHControl/config/r_hand_pwm.toml