組み立て手順 — 8 自由度四脚ロボット#

先に 3 種類のユニット(サーボ入りの胴体・左脚・右脚)を組み、最後に脚を 胴体へ取り付けます。

ネジは M3×6 が 40 本、M2×6 が 16 本 — どちらも STS3215 に付属している ネジだけで足ります(8 個買えば十分な本数が付いてきます)。別途購入は不要です。

用意する部品。3D プリントの 9 部品(胴体 ×1・脚ブラケット ×4・脚リンク ×4)、STS3215 ×8、付属のネジ

用意する部品。3D プリントの 9 部品(胴体 ×1・脚ブラケット ×4・脚リンク ×4)、STS3215 ×8、付属のネジ#

STS3215 に付属するネジ(3 種類)

STS3215 に付属するネジ(3 種類)#

インタラクティブ 3D ビューア#

ブラウザ上で 1 ステップずつアニメーションを再生できます。マウスで視点を回し、 スライダーで手順を前後できます。

ビューアを全画面で開く ↗   PDF 版の手順書


部品のユニット構成#

機体は 3 種類のユニット(サブアセンブリ)を先に組み、最後に胴体へ脚を 取り付けます。単一部品は全部で 81 個(8 種類)。

ユニット

数量

内部部品数

body_servo(胴体 + サーボ 4)

×1

13

leg_left(左脚)

×2

11

leg_right(右脚)

×2

11

部品

個数

ネジ M3×6

×40

ネジ M2×6

×16

STS3215(ケース + ホーン)

×8

bracket_outline

×4

leg_link1

×4

胴体(body)

×1

サーボに ID を振る#

ユニットを組む前に、8 個のサーボに 1〜8 の ID を振ります。 8 個は 1 本の バスにつながり、マイコンは ID で相手を呼び分けます。ところが新品の STS3215 は 全部 ID 1 で出荷されているので、そのままでは区別できません。

ID を振るときはサーボを 1 個ずつつなぎます。ID 1 のサーボが 2 個つながって いると、「ID 1 を 2 に変えろ」という命令が両方に届き、両方とも ID 2 になって しまいます。しかもツールからは 1 個に見えるので、失敗したことに気づけません。

用意するもの#

  • PC(Windows / macOS / Linux)

  • ドライバーボード(Waveshare Bus Servo Adapter (A))と USB Type-C ケーブル

  • 12 V の AC アダプタ(部品表 の 3)

  • STS3215(最初は 1 個だけ)

  • マスキングテープとペン(番号のラベル用)

ツールを入れる#

ID の設定には feetech-cli を使います。 開発環境の準備で入れた uv で、次の 1 行で feetech コマンドが入ります (uv がまだなら macOS / Windows / Linux の「uv を入れる」を先に)。

$ uv tool install feetech-cli

Python の用意は uv がするので要りません。コマンドは uv 本体と同じ場所に入るので、 uv が動くシェルならそのまま feetech も動きます。

つなぐ#

  1. ボードの ジャンパを 2 個とも B(USB-SERVO) に差す。A は Arduino から 動かすときの位置で、A のままだと PC からはサーボが見えません。

  2. サーボを 1 個だけ、ボードの 3 ピンコネクタ(D V G)に差す。

  3. AC アダプタをボードの DC ジャックに差す。サーボの電源は USB からは取れない ので、これを忘れるとサーボが応答しません。

  4. USB Type-C で PC とボードをつなぐ。

サーボは 1 個ずつつなぐ

ID を振るときは、PC につなぐサーボを 必ず 1 個だけ にしてください。 新品のサーボはどれも同じ ID(Feetech は 1、近藤科学は 0)で届きます。同じ ID の サーボを 2 個以上つなぐと、どちらも同時に返事をして信号がぶつかり、正しく読めません。 そのまま ID を書き込むと、つないでいたサーボが全部同じ新しい ID に変わってしまいます。

PC、AC アダプタ、ドライバーボード、サーボ 1 個をつないだところ

全体。PC とボードは USB Type-C で、ボードの電源は AC アダプタから。 サーボは 1 個だけ#

ドライバーボードに DC ジャック、USB Type-C、サーボのケーブルを差したところ

ボードまわり。左から DC ジャック(電源)、USB Type-C(PC)。サーボのケーブルは 上の 3 ピンコネクタへ。電源が入ると PWR の LED が赤く点く#

ジャンパ 2 個が B の位置に差さっている。基板には A が UART-SERVO、B が USB-SERVO と印刷されている

ジャンパは 2 個とも B(USB-SERVO)。基板の表に A / B の意味が印刷されている#

1 個ずつ番号を振る#

  1. サーボが見えることを確かめる。

    $ feetech scan
    Found 1 servo(s) on /dev/cu.usbmodem59710813431 at 1.00Mbps:
      id   1  model   777  position  4095 (+179.9 deg)  12.3V  32C
    

    id 1 が 1 行だけ出れば準備完了です。ポート名は環境によって違います (Windows なら COM3 など)。ツールが自動で探すので、指定は要りません。

  2. 新しい ID を書き込む。確認に y と答えると書き込まれます。1 個目は ID 1 の ままでよいので、この手順は 2 個目からです。

    $ feetech set-id 1 2
    Change servo 1 to id 2? This writes the servo EEPROM. [y/N] y
    Servo 1 is now id 2.
    

    ID はサーボの EEPROM に書かれるので、電源を切っても消えません。

  3. もう一度 feetech scan を実行して、新しい ID で見えることを確かめる。

  4. サーボにラベルを貼る。 ばらばらになってからでは、1 個ずつつなぎ直さないと 見分けられません。組み立てたあとも見える面に貼っておくと、配線や交換のときに も困りません。

  5. サーボを外し、次の新品をつないで 1 に戻る。3 個目は feetech set-id 1 3、 4 個目は feetech set-id 1 4、…と 8 まで続けます。

コラム:EEPROM って何?

EEPROM は、電源を切っても中身が消えない小さなメモリです。サーボの中にもあり、 ID、通信速度、回転の向きといった「そのサーボの設定」がここに書かれています。 サーボは電源が入るたびに EEPROM から設定を読み込むので、一度書いた ID は 電源を切っても残ります。

これに対して、いまの角度や目標の角度のように動いている間だけ使う値は、 電源を切ると消えるメモリ(RAM)に置かれます。

feetech scan で ID 1 のサーボが見え、feetech set-id 1 2 で ID 2 に変え、もう一度 scan すると ID 2 で見える

手順 1〜3 を実機で実行したところ#

「ID:1」と書いたラベルを側面に貼ったサーボ

番号を書いたラベルを貼ったサーボ#

どのサーボをどこに使うか#

ID は脚と関節ごとに決まっています。この割り当てはファームウェアの include/quad_calib.h(QUAD_SERVO_ID)と同じなので、この通りに組み付けて ください。 違う位置に付けると、別の関節に命令が届いてしまいます。

四脚ロボットを上と左から見た図に、各サーボの ID を書き込んだもの。右前 1・2、左前 3・4、右後 5・6、左後 7・8。それぞれ股が奇数、膝が偶数

サーボ ID の割り当て。上から見て、胴体の短い辺の中央に出っ張りがある側が前 (歩く向き)#

下のユニットを組むときは、この ID のサーボを使います。

ユニット

入るサーボ

使う ID

body_servo(胴体)

4 本の脚の股

1(右前)、3(左前)、5(右後)、7(左後)

leg_right(右脚)×2

右の脚の膝

2(右前)、6(右後)

leg_left(左脚)×2

左の脚の膝

4(左前)、8(左後)

うまくいかないとき#

症状

確かめること

feetech scan で何も見つからない

AC アダプタが差さっているか(PWR の LED)。ジャンパが B か。サーボのケーブルが奥まで差さっているか

ポートが見つからない

USB ケーブルがデータ通信対応か(充電専用のケーブルでは見えない)

以前に通信速度を変えたサーボが見つからない

feetech scan --all-baudrates ですべての速度を試す

id 2 is already used by another servo on this bus

その ID のサーボが別につながっている。1 個だけにしてやり直す

ユニットの事前組み立て#

同じユニットは 1 回だけ手順を示します。×N はロボット全体で使う個数です。 上から順に組めば部品が揃います。 手順に出てくる「同軸 φ◯mm」は穴の中心をそろえること、「面合わせ」は面どうしをぴったり当てることです。

STS3215 サーボ(ホーン取り付け) ×8

コラム:サーボホーンって何?

サーボホーン(単にホーンとも)は、サーボの出力軸にはめる円盤や腕の形の部品です。 サーボの回転を、脚などの相手の部品に伝えます。出力軸の先は細かいギザギザ (スプライン)になっていて、ホーンの穴の内側にも同じギザギザがあります。 ギザギザどうしをかみ合わせてネジで止めるので、滑らずに力が伝わります。

かみ合わせはギザギザ 1 山ずつしか変えられないので、ホーンを付ける向きで 「サーボが真ん中の角度のとき、脚がどちらを向くか」が決まります。

ホーンが外れた状態で届いた場合のみ。取り付け済みならこのユニットは飛ばして かまいません。

  1. STS3215_horn を置く(土台)

    STS3215 step 1

  2. STS3215_case をホーンへ — 同軸 φ4.8mm(×2)、面合わせ ×2

    STS3215 step 2

../_images/quadruped_horn_screw.jpg

ネジを回すときは、ドライバーの先端をネジ穴と平行に当てる。先端が斜めになっていると力が伝わらず、ネジ頭をなめやすい#

body_servo(胴体にサーボ 4 個を固定) ×1

使う部品: 胴体 ×1、STS3215 ×4、M3x6 ×8

下の STS3215-1〜4 は CAD 上の部品の通し番号で、サーボの ID ではありません。 胴体の 4 か所には股のサーボ(ID 1・3・5・7)を入れ、どの位置にどの ID かは ID の対応図 に合わせてください。

  1. body(胴体)を置く(土台)

    body_servo step 1

  2. STS3215-4 — 胴体へ差し込む(同軸 φ4.2mm ×4、面合わせ ×2)

    body_servo step 2

  3. 🔩 M3x6 ×2 を締める(STS3215-4 ↔ 胴体)

    body_servo step 3

  4. STS3215-3 — 胴体へ差し込む

    body_servo step 4

  5. 🔩 M3x6 ×2 を締める

    body_servo step 5

  6. STS3215-2 — 胴体へ合わせる(面合わせ ×2)

    body_servo step 6

  7. 🔩 M3x6 ×2 を締める

    body_servo step 7

  8. STS3215-1 — 胴体へ合わせる(面合わせ ×2)

    body_servo step 8

  9. 🔩 M3x6 ×2 を締める

    body_servo step 9

../_images/quadruped_body_servo.jpg

4 個のサーボを固定した胴体(実物)#

leg_left(左脚) ×2

使う部品: STS3215 ×1、bracket_outline ×1、leg_link1 ×1、M3x6 ×4、M2x6 ×4

  1. STS3215 を置く(土台)

    leg_left step 1

  2. bracket_outline — サーボのホーン側へ差し込む(同軸 φ3.2mm ×4、面合わせ ×2)

    leg_left step 2

  3. 🔩 M3x6 ×4 を締める(サーボ ↔ ブラケット)

    leg_left step 3

  4. leg_link1 — サーボのケース側へ差し込む(同軸 φ2.0mm ×4、面合わせ ×2)

    leg_left step 4

  5. 🔩 M2x6 ×4 を締める(サーボ ↔ リンク)

    leg_left step 5

実物の写真(左右の脚で手順は同じ):

脚ブラケットのホーン取り付け部

脚ブラケットのホーン取り付け部#

同じ部分を別の角度から

同じ部分を別の角度から#

手順 2: ブラケットをサーボのホーン側へ

手順 2: ブラケットをサーボのホーン側へ#

手順 3: ネジを締める途中

手順 3: ネジを締める途中#

手順 3: M3x6 ×4 を締め終えたところ

手順 3: M3x6 ×4 を締め終えたところ#

手順 4: 脚リンクをサーボのケース側へ

手順 4: 脚リンクをサーボのケース側へ#

手順 4: 差し込んだところ

手順 4: 差し込んだところ#

ブラケットを付けたサーボ 4 本(左右 2 本ずつ)

ブラケットを付けたサーボ 4 本(左右 2 本ずつ)#

leg_right(右脚) ×2

使う部品: STS3215 ×1、bracket_outline ×1、leg_link1 ×1、M3x6 ×4、M2x6 ×4 (左脚と同じ構成。ブラケットの向きが鏡像)

  1. STS3215 を置く(土台)

    leg_right step 1

  2. bracket_outline — サーボのホーン側へ差し込む

    leg_right step 2

  3. 🔩 M3x6 ×4 を締める

    leg_right step 3

  4. leg_link1 — サーボのケース側へ差し込む

    leg_right step 4

  5. 🔩 M2x6 ×4 を締める

    leg_right step 5

警告

組み始める前に、各サーボに ID を振っておくこと(サーボに ID を振る)。 機体に組み込んでからだと、どのサーボがどれか見分けられない。

原点(0 点)合わせは組み上げた後にソフトウェアで行うので、組立時のホーンの 角度は気にしなくてよい。手順は第13章を参照。

本体の組み立て#

事前に組んだユニットを胴体(body_servo)に取り付けます。

Step 1: body_servo を置く#

Step 1

Step 2: leg_right(1 本目)を取り付ける#

胴体後方のサーボホーンへ、脚のリンクを差し込みます(同軸 φ3.0mm ×4)。

Step 2

Step 3: 🔩 M3x6 ×4 を締める#

Step 3

Step 4: leg_right(2 本目)を取り付ける#

Step 4

Step 5: 🔩 M3x6 ×4 を締める#

Step 5

Step 6: leg_left(1 本目)を取り付ける#

反対側のサーボホーンへ差し込みます。挿入方向が右脚と逆になります。

Step 6

Step 7: 🔩 M3x6 ×4 を締める#

Step 7

Step 8: leg_left(2 本目)を取り付ける#

Step 8

Step 9: 🔩 M3x6 ×4 を締める#

Step 9

これで機体は完成です。配線とゼロ点合わせは 実機で歩かせる へ。


CAD データの書き出しには solidworks_urdf_exporter2 を使っています。