組み立て手順 — 8 自由度四脚ロボット#
先に 3 種類のユニット(サーボ入りの胴体・左脚・右脚)を組み、最後に脚を 胴体へ取り付けます。
ネジは M3×6 が 40 本、M2×6 が 16 本 — どちらも STS3215 に付属している ネジだけで足ります(8 個買えば十分な本数が付いてきます)。別途購入は不要です。
インタラクティブ 3D ビューア#
ブラウザ上で 1 ステップずつアニメーションを再生できます。マウスで視点を回し、 スライダーで手順を前後できます。
部品のユニット構成#
機体は 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 も動きます。
つなぐ#
ボードの ジャンパを 2 個とも B(USB-SERVO) に差す。A は Arduino から 動かすときの位置で、A のままだと PC からはサーボが見えません。
サーボを 1 個だけ、ボードの 3 ピンコネクタ(D V G)に差す。
AC アダプタをボードの DC ジャックに差す。サーボの電源は USB からは取れない ので、これを忘れるとサーボが応答しません。
USB Type-C で PC とボードをつなぐ。
サーボは 1 個ずつつなぐ
ID を振るときは、PC につなぐサーボを 必ず 1 個だけ にしてください。 新品のサーボはどれも同じ ID(Feetech は 1、近藤科学は 0)で届きます。同じ ID の サーボを 2 個以上つなぐと、どちらも同時に返事をして信号がぶつかり、正しく読めません。 そのまま ID を書き込むと、つないでいたサーボが全部同じ新しい ID に変わってしまいます。
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など)。ツールが自動で探すので、指定は要りません。新しい 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 に書かれるので、電源を切っても消えません。
もう一度
feetech scanを実行して、新しい ID で見えることを確かめる。サーボにラベルを貼る。 ばらばらになってからでは、1 個ずつつなぎ直さないと 見分けられません。組み立てたあとも見える面に貼っておくと、配線や交換のときに も困りません。
サーボを外し、次の新品をつないで 1 に戻る。3 個目は
feetech set-id 1 3、 4 個目はfeetech set-id 1 4、…と 8 まで続けます。
コラム:EEPROM って何?
EEPROM は、電源を切っても中身が消えない小さなメモリです。サーボの中にもあり、 ID、通信速度、回転の向きといった「そのサーボの設定」がここに書かれています。 サーボは電源が入るたびに EEPROM から設定を読み込むので、一度書いた ID は 電源を切っても残ります。
これに対して、いまの角度や目標の角度のように動いている間だけ使う値は、 電源を切ると消えるメモリ(RAM)に置かれます。
手順 1〜3 を実機で実行したところ#
番号を書いたラベルを貼ったサーボ#
どのサーボをどこに使うか#
ID は脚と関節ごとに決まっています。この割り当てはファームウェアの
include/quad_calib.h(QUAD_SERVO_ID)と同じなので、この通りに組み付けて
ください。 違う位置に付けると、別の関節に命令が届いてしまいます。
サーボ ID の割り当て。上から見て、胴体の短い辺の中央に出っ張りがある側が前 (歩く向き)#
下のユニットを組むときは、この ID のサーボを使います。
ユニット |
入るサーボ |
使う ID |
|---|---|---|
body_servo(胴体) |
4 本の脚の股 |
1(右前)、3(左前)、5(右後)、7(左後) |
leg_right(右脚)×2 |
右の脚の膝 |
2(右前)、6(右後) |
leg_left(左脚)×2 |
左の脚の膝 |
4(左前)、8(左後) |
うまくいかないとき#
症状 |
確かめること |
|---|---|
|
AC アダプタが差さっているか(PWR の LED)。ジャンパが B か。サーボのケーブルが奥まで差さっているか |
ポートが見つからない |
USB ケーブルがデータ通信対応か(充電専用のケーブルでは見えない) |
以前に通信速度を変えたサーボが見つからない |
|
|
その ID のサーボが別につながっている。1 個だけにしてやり直す |
ユニットの事前組み立て#
同じユニットは 1 回だけ手順を示します。×N はロボット全体で使う個数です。 上から順に組めば部品が揃います。 手順に出てくる「同軸 φ◯mm」は穴の中心をそろえること、「面合わせ」は面どうしをぴったり当てることです。
STS3215 サーボ(ホーン取り付け) ×8
コラム:サーボホーンって何?
サーボホーン(単にホーンとも)は、サーボの出力軸にはめる円盤や腕の形の部品です。 サーボの回転を、脚などの相手の部品に伝えます。出力軸の先は細かいギザギザ (スプライン)になっていて、ホーンの穴の内側にも同じギザギザがあります。 ギザギザどうしをかみ合わせてネジで止めるので、滑らずに力が伝わります。
かみ合わせはギザギザ 1 山ずつしか変えられないので、ホーンを付ける向きで 「サーボが真ん中の角度のとき、脚がどちらを向くか」が決まります。
ホーンが外れた状態で届いた場合のみ。取り付け済みならこのユニットは飛ばして かまいません。
STS3215_horn を置く(土台)

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

ネジを回すときは、ドライバーの先端をネジ穴と平行に当てる。先端が斜めになっていると力が伝わらず、ネジ頭をなめやすい#
body_servo(胴体にサーボ 4 個を固定) ×1
使う部品: 胴体 ×1、STS3215 ×4、M3x6 ×8
下の STS3215-1〜4 は CAD 上の部品の通し番号で、サーボの ID ではありません。 胴体の 4 か所には股のサーボ(ID 1・3・5・7)を入れ、どの位置にどの ID かは ID の対応図 に合わせてください。
body(胴体)を置く(土台)

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

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

STS3215-3 — 胴体へ差し込む

🔩 M3x6 ×2 を締める

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

🔩 M3x6 ×2 を締める

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

🔩 M3x6 ×2 を締める

4 個のサーボを固定した胴体(実物)#
leg_left(左脚) ×2
使う部品: STS3215 ×1、bracket_outline ×1、leg_link1 ×1、M3x6 ×4、M2x6 ×4
STS3215 を置く(土台)

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

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

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

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

実物の写真(左右の脚で手順は同じ):
leg_right(右脚) ×2
使う部品: STS3215 ×1、bracket_outline ×1、leg_link1 ×1、M3x6 ×4、M2x6 ×4 (左脚と同じ構成。ブラケットの向きが鏡像)
STS3215 を置く(土台)

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

🔩 M3x6 ×4 を締める

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

🔩 M2x6 ×4 を締める

警告
組み始める前に、各サーボに ID を振っておくこと(サーボに ID を振る)。 機体に組み込んでからだと、どのサーボがどれか見分けられない。
原点(0 点)合わせは組み上げた後にソフトウェアで行うので、組立時のホーンの 角度は気にしなくてよい。手順は第13章を参照。
本体の組み立て#
事前に組んだユニットを胴体(body_servo)に取り付けます。
Step 1: body_servo を置く#

Step 2: leg_right(1 本目)を取り付ける#
胴体後方のサーボホーンへ、脚のリンクを差し込みます(同軸 φ3.0mm ×4)。

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

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

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

Step 6: leg_left(1 本目)を取り付ける#
反対側のサーボホーンへ差し込みます。挿入方向が右脚と逆になります。

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

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

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

これで機体は完成です。配線とゼロ点合わせは 実機で歩かせる へ。
CAD データの書き出しには solidworks_urdf_exporter2 を使っています。