近藤科学の KRS サーボで組む(RCB-4mini 版)#

第13章の四脚ロボットは、Feetech の STS3215 の代わりに 近藤科学の ICS サーボ (KRS-3302 ICS) でも組めます。サーボは近藤科学のコントロールボード RCB-4mini にまとめてつなぎ、Arduino は RCB-4mini に「この角度にして」と 頼む形になります。ファームウェアの制御ループと学習済みの方策は Feetech 版と 同じものが走ります。

KRS-3302 ICS ×8 と RCB-4mini で組んだ四脚ロボット。Ni-MH バッテリー(ROBO パワーセル E タイプ、7.2 V)1 本だけで、ケーブルをつながずに歩いている

注釈

胴体と脚の 3D プリント部品は、KRS サーボの形に合わせたもので、Feetech 版の STL とは形が違います(STL は 部品表(BOM)— KRS 版 8 自由度四脚ロボット にあります)。 このページでは、サーボの準備、3D ビューアでの組み立て、配線、書き込みを説明します。

胴体の設計を更新しました(第 2 版)#

3D ビューア・手順の図・STL は、次のように直した第 2 版の胴体です。このページの写真と 動画は第 1 版で撮ったもので、胴体の形が少し違います(配線と組み方は同じです)。

第 1 版

第 2 版

股のサーボの向き

4 個とも同じ向き(前後で非対称)

前後対称。4 個ともケースを胴体の中央へ向ける

股の間隔(前後)

150 mm(−90 / +60 mm)

132 mm(±66 mm)

胴体の大きさ

230 × 110 × 50 mm

176 × 110 × 50 mm。Bambu Lab A1 mini(180 mm 角)でも刷れる

バッテリー

—

胴体の中、Arduino の下の 27 mm のすき間に平置き

蓋

なし

スナップフィットの蓋(前が高い頭の形)。ネジなしで、爪 4 本で胴体の窓に掛かる

基板の固定

スナップフック(すき間 0)

爪の下に 0.4 mm、横に 0.2 mm のすき間を足し、爪の先を 0.8 mm(4 層)に厚くした

股のサーボを前後対称にしたのは、KRS-3302 が角度を測れるのが真ん中から ±135 度だけ だからです(下の「なぜ真ん中に合わせるのか」)。前後の脚で、使う角度の範囲が同じに なります。胴体の前にある丸い穴と台座は、カメラ(Arducam B0642)を付けるためのもので、 部品表と手順には入れていません。

Feetech 版との違い#

Feetech 版

KRS 版(このページ)

サーボ

STS3215 ×8

KRS-3302 ICS ×8

サーボをまとめる基板

Waveshare Bus Servo Adapter (A)

近藤科学 RCB-4mini

ID を振る道具

基板の USB と feetech コマンド

Dual USB アダプター HS と ics-manager コマンド

Arduino との配線

D0 / D1(Serial1)

D8 / D9(D0 / D1 は空けておく)

電源

12 V

近藤科学の AC アダプター(5.9 V)か、ケーブルなしで歩かせるときは ROBO パワーセル E タイプ(Ni-MH 7.2 V)。Arduino も同じ電源から

書き込み

pio run -e uno_r4_wifi

pio run -e uno_r4_wifi_rcb4

ID の振り方と、どの ID をどの関節に使うかは Feetech 版と同じです。

用意するもの#

部品表(BOM)— KRS 版 8 自由度四脚ロボット に、近藤科学の商品ページへのリンクと価格つきの部品表があります。 近藤科学の部品をまとめて買うなら、サーボ 18 個・RCB-4mini・Dual USB アダプター HS・ バッテリー・充電器が入った KXR アドバンスセット B Ver.2 がおすすめです。

胴体、脚、ブラケットの 3D プリント部品、KRS サーボ 8 個、ホーン、ネジのケース

部品一式。KRS 版の 3D プリント部品、KRS-3302 ICS ×8、ホーン、ネジ#

Dual USB アダプター HS の使い方#

Dual USB アダプター HS は、PC とサーボ(または RCB-4)を USB でつなぐための 近藤科学の純正アダプターです。ICS モード(サーボと話す)と シリアルモード (RCB-4 と話す)の 2 つを切り替えて使います。このページで使うのは ICS モードだけです。

DUAL USB ADAPTER HS と書かれた USB アダプター。ICS と Serial の切り替え表示がある

Dual USB アダプター HS。スイッチで ICS / Serial を切り替える#

  1. ICS モードにする。 LED が赤なら ICS モード、緑ならシリアルモードです。

  2. サーボを 1 個だけ アダプターのケーブルにつなぐ。

  3. アダプターを PC の USB に差す。

サーボは 1 個ずつつなぐ

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

ノート PC の USB に Dual USB アダプター HS を差し、そのケーブルの先に KRS-3302 サーボを 1 個つないだところ

PC → Dual USB アダプター HS → KRS-3302 を 1 個。これで ID を振る#

OS ごとの準備#

macOS と Linux では、下で入れる ics-manager を使います。Windows では、近藤科学の 公式ソフト ICS3.5/3.6 マネージャー を使ってください。

OS

使うソフト

準備

Windows

ICS3.5/3.6 マネージャー(近藤科学の公式)

アダプターのドライバ(KO Driver)を入れる。使い方は 近藤科学の解説

macOS

ics-manager

brew install libusb。libusb 経由でアダプターに直接つなぐので、ドライバは要らない

Linux

ics-manager

アダプターを FTDI のシリアルとして認識させる。下のコマンドを 1 回実行する

Linux では、ics-manager がつながらないときに自分でこの手順を表示します。

$ sudo su
# modprobe ftdi-sio
# echo 165C 0008 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
# exit

Windows の ICS3.5/3.6 マネージャーでも、確かめる項目(ID、通信速度、連続回転モード、 逆転モード)は下と同じです。

サーボの設定を確かめて、ID を振る#

ics-manager を入れる#

ics-manager は、ICS サーボの ID や設定を見たり書いたりするコマンドです。 rcb4 という Python パッケージに入っています。 開発環境の準備で入れた uv で、次の 1 行で入ります (uv がまだなら macOS / Linux の「uv を入れる」を先に)。

$ uv tool install rcb4

画面の見方#

サーボを 1 個だけ つないで ics-manager を実行すると、次の画面が出ます。 2 個以上つないだまま実行しないでください(上の「サーボは 1 個ずつつなぐ」)。

$ ics-manager
--- Servo Status ---
>>  Current Servo ID: 2 -> Next Servo ID: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ]
    Angle: -44
    Speed: 127
    Stretch: 90
    Baud Rate: 1.25Mbps
    Rotation Mode: Disabled
    Slave Mode: Disabled
    Reverse Mode: Disabled
    Serial Mode: Disabled
    Free: Enabled
----------------------

この四脚ロボットで 必ず確かめる行 は次の 4 つです。

行

この機体で正しい値

違うと何が起きるか

Current Servo ID

下の表の ID(1〜8)

別の関節に命令が届く

Baud Rate

1.25Mbps

RCB-4mini と話せず、そのサーボだけ見つからない

Rotation Mode

Disabled

Enabled だと 連続回転(無限回転)モード。角度ではなく回る速さを指示する車輪のようなサーボになり、関節として止まらない

Reverse Mode

Disabled

Enabled だと回る向きが逆になる。同じ型のサーボで 1 個だけ向きが違うと、その脚だけ逆に動く

Free: Enabled は脱力している(力が入っていない)という意味で、ID を振るときは このままでかまいません。Angle は今の出力軸の角度(度)で、手で軸を回すと変わります。

ID を振る#

  1. >> が Current Servo ID の行にあることを確かめる(↑↓で移動)。

  2. ←→ で緑色の数字を新しい ID に合わせ、Enter を押す。

  3. Current Servo ID: の左の数字が新しい ID に変わったことを確かめる。

  4. Rotation Mode と Reverse Mode が Disabled、Baud Rate が 1.25Mbps で あることを確かめる。

  5. q で終わり、サーボに ID のラベルを貼る。組み付けたあとに見える面に貼ると、 配線や交換のときに困りません。

  6. 次のサーボにつなぎ替えて、1 に戻る。

ics-manager の画面。Current Servo ID が 3 のサーボで、→ キーを 2 回押して緑色の数字を 2 に合わせ、Enter を押すと Current Servo ID が 2 に変わる

手順 1〜3 を実機で実行したところ。→ で緑色の数字を 2 に合わせて Enter を押すと、 ID 3 のサーボが ID 2 になる#

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

コラム:EEPROM って何?

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

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

Rotation Mode や Reverse Mode が Enabled だったら#

  • Rotation Mode は r キーで切り替わります。Disabled になるまで押してください。

  • Reverse Mode は v キーで切り替わります。Disabled になるまで押してください。 切り替える前にサーボを脱力させるので、軸が急に動くことはありません。

どちらも押すたびに EEPROM に書き込まれ、画面に Rotation mode set to Disabled の ように結果が出ます。

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

ID の割り当ては Feetech 版と同じです。

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

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

サーボを真ん中に合わせてから、ホーンと脚を付ける#

サーボの出力軸にはホーンを付け、そこに脚をネジで止めます。

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

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

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

ホーンを付ける向きは、サーボを真ん中の角度(0 度)に動かしてから決めます。

  1. サーボを Dual USB アダプターにつなぎ、ics-manager を実行する。

  2. z を押す。 サーボが真ん中の角度(0 度、パルスの値で 7500)へ動き、 その角度で止まります。

  3. その状態のまま、脚がまっすぐ真下を向く向き(CAD の 0 度)でホーンをはめ、 付属の M3-6 低頭ホーン止めビスで留める。膝は、先にホーンを足先にネジで止めておき、 足先ごとはめる(下の 組み立て)。

ホーンを付ける前の KRS サーボ 2 個。出力軸のギザギザ(スプライン)が見える

ホーンを付ける前のサーボ。出力軸はギザギザ(スプライン)になっていて、ホーンは ギザギザ 1 山ずつの向きにしか付かない#

なぜ真ん中に合わせるのか#

KRS-3302 が角度を測れるのは、真ん中から ±135 度(合わせて 270 度) の範囲だけです。

コラム:エンコーダって何?

エンコーダは、軸がいま何度の位置にあるかを測るセンサーです。サーボは 「目標の角度」と、エンコーダで測った「いまの角度」を比べ、その差が 小さくなるようにモーターを回します。角度を指示するとその角度で止まって いられるのは、このしくみのおかげです。

エンコーダが測れる角度の範囲はサーボによって違います。測れない角度では いまの位置が分からないので、サーボはそこへは動けません。

サーボの出力軸を上から見た図。真上が 0 度で、左右 135 度ずつ、合わせて 270 度の範囲が青く塗られ、下側の 90 度は測れない範囲として灰色の破線になっている。下にパルスの値 3500、7500、11500 と角度 −135 度、0 度、+135 度の対応

KRS-3302 が測れる・動ける範囲。真ん中(7500)で脚がまっすぐ真下を向くように付けておけば、 関節を動かしたい角度がこの範囲の中に収まる#

この四脚ロボットでは、膝を立ち姿勢まで曲げると、脚がまっすぐのときから約 100 度 回ります。脚がまっすぐの向きを真ん中にしておけば、その角度も 270 度の範囲の中に 収まります。ホーンを大きくずらして付けると、曲げたい角度が範囲の外にはみ出して、 そこへは動けなくなります。

ギザギザ 1 山ぶんのずれは気にしなくてかまいません。組み上げたあと、脚をまっすぐ 伸ばしたときのサーボの値を測ってファームウェアに書く(下の「書き込んで、校正する」) ので、小さなずれはそこで吸収されます。

KRS サーボと、外したホーン

サーボとホーン#

3D プリントの脚にホーンをネジ止めしているところ

ホーンを脚にネジ止めする。ドライバーの先はネジ穴と平行に当てる#

ホーンを付けた太ももの部品と、サーボ

ホーンを付けた太もも#

サーボを脚のブラケットに差し込み、ネジで止めたところ

サーボをブラケットに入れてネジで止める#

組み立て#

先に 4 種類のユニット(ホーン付きの股サーボ・サーボ入りの胴体・足先・脚)を組み、 最後に脚を胴体へ取り付けて、蓋をかぶせます。足先(脚ブラケット)は先にホーンにネジで止めてから、 ホーンごとサーボの出力軸にはめます。手順と図は、ネジまで入れた KRS 版の CAD から 自動で作ったものです。

ホーンをサーボにはめる前に、上の「サーボを真ん中に合わせてから、ホーンと脚を付ける」で サーボを真ん中(0 度)に合わせておいてください。

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

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

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

ネジ#

ネジはすべて近藤科学のもので、長さは近藤科学の資料の決め方に合わせてあります。

ネジ

本数

使う場所

長さの決め方

M3-6 低頭ホーン止めビス

8

ホーン → サーボの出力軸

サーボに 1 本ずつ付いてくる(近藤科学の取扱説明書「サーボホーンの取り付けについて」)

M2-8 低頭ビス

8

胴体 → 股サーボのアッパーケース

アッパーケースのネジ穴(φ1.6 の下穴)は有効長 4.8mm。胴体の壁が 3.7mm なので、届く長さが 4.8mm 以内で一番長い 8mm

M2-6 低頭ビス

8

脚リンク → 膝サーボのアッパーケース

同じ決め方。脚リンクの板厚 2.0mm(座ぐりの底から)で 6mm

M2-6 低頭ビス

16

脚ブラケット(足先) → 膝のホーン

小径ホーン B のネジ穴は M2 のめねじで、厚み 2mm。ブラケットの板厚 4.0mm + 2mm = 6mm

M2-4 低頭ビス

16

脚リンク → 股のホーン

脚リンクの板厚 2.0mm + ホーン 2mm = 4mm

ケースビス(2-20 低頭タッピングビス)

8

脚リンク → 膝サーボのボトムケース

買わなくてよい。買ってきたサーボに最初から締めてあるケースビスを、いったん抜いて、脚リンクにはめたあとで同じネジで止め直す(近藤科学の指定)

M2-4・M2-6・M2-8 の低頭ビスと M3-6 のホーン止めビスは、近藤科学の ビスセット A(KXR 用) にまとめて入っています。 近藤科学の取扱説明書で「フラットヘッド」(2.6-4 フラットヘッドビス)が指定されているのは フリーホーン側のネジで、このロボットでは使いません。

警告

膝のボトムケース側は、サーボから抜いたケースビス(20mm)を脚リンク(座ぐりの底から サーボまで約 3.5mm)ごと締めるので、ケースビスがサーボにかかる長さが短くなります。CAD で測ると、 下穴にかかるのは約 1.8mm です。締めすぎると下穴をなめるので、軽く締めて止めてください。 近藤科学の図は板厚 1mm のフレームでの例です。

部品のユニット構成#

単一部品は全部で 90 個(11 種類)。

ユニット

数量

単一部品の数

body_servo_krs(胴体 + ホーン付きの股サーボ 4)

×1

21

foot_left_krs / foot_right_krs(足先 + ホーン)

各 ×2

6

leg_left_krs / leg_right_krs(脚。足先を含む)

各 ×2

13

これに本体の組み立てで使う M2-4 低頭ビス 16 本と蓋 1 個を足して 90 個です。

部品

個数

M2-6 低頭ビス

×24

M2-4 低頭ビス

×16

ケースビス(2-20 低頭タッピング)

×8

M2-8 低頭ビス

×8

M3-6 低頭ホーン止めビス

×8

KRS-3302 ICS(図では KRS3300_scale)

×8

小径ホーン B(small_diameter_hornB)

×8

脚ブラケット(bracket_outline_krs)

×4

脚リンク(leg_link1_krs)

×4

胴体(body_krs)

×1

蓋(lid_krs)

×1

図の KRS3300-1〜4 は CAD 上の部品の通し番号で、サーボの ID ではありません。 上の「どのサーボをどこに使うか」の ID と、次のように対応します。

ユニット

CAD の番号 → 位置

使う ID

body_servo_krs(胴体)

KRS3300-3 → 右前、KRS3300-4 → 左前、KRS3300-1 → 右後、KRS3300-2 → 左後

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

leg_right_krs(右脚)×2

右の脚の膝

2(右前)、6(右後)

leg_left_krs(左脚)×2

左の脚の膝

4(左前)、8(左後)

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

同じユニットは 1 回だけ手順を示します。×N はロボット全体で使う個数です。 上から順に組めば部品が揃います。図でオレンジの矢印が付いているのが、その手順で 付ける部品とネジです。

KRS3300(股のサーボにホーンを付ける) ×4

股の 4 個(ID 1・3・5・7)だけです。膝のホーンは足先と一緒に付けます(下の foot と leg)。

  1. 小径ホーン B を置く(土台)

    KRS3300 step 1

  2. サーボをホーンへ — 真ん中に合わせたサーボの出力軸にはめる

    KRS3300 step 2

  3. 🔩 M3-6 低頭ホーン止めビス ×1 を締める(ホーン ↔ 出力軸)

    KRS3300 step 3

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

使う部品: 胴体 ×1、ホーン付きの股サーボ ×4、M2-8 低頭ビス ×8

サーボは胴体の内側から入れ、ホーンを胴体の壁の丸穴から外へ出します。 ネジは胴体の外側から、壁を通してアッパーケース(出力軸側)のネジ穴に締めます。

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

    body_servo step 1

  2. KRS3300-4(左前・ID 3)— 胴体へ差し込む(ホーンを壁の穴へ、同軸 φ2.3mm ×2、面合わせ ×2)

    body_servo step 2

  3. 🔩 M2-8 低頭ビス ×2 を締める(サーボ ↔ 胴体)

    body_servo step 3

  4. KRS3300-3(右前・ID 1)— 胴体へ差し込む

    body_servo step 4

  5. 🔩 M2-8 低頭ビス ×2 を締める

    body_servo step 5

  6. KRS3300-2(左後・ID 7)— 胴体へ差し込む

    body_servo step 6

  7. 🔩 M2-8 低頭ビス ×2 を締める

    body_servo step 7

  8. KRS3300-1(右後・ID 5)— 胴体へ差し込む

    body_servo step 8

  9. 🔩 M2-8 低頭ビス ×2 を締める

    body_servo step 9

foot_left_krs / foot_right_krs(足先にホーンを止める) 各 ×2

使う部品: 脚ブラケット ×1、小径ホーン B ×1、M2-6 低頭ビス ×4

サーボにはめる前に、ホーンを足先(脚ブラケット)に止めます。左右で手順は同じで、 ホーンを付ける面が鏡像になります。

  1. 小径ホーン B を置く(土台)

    foot step 1

  2. bracket_outline_krs(脚ブラケット)— ホーンに合わせる(同軸 φ8.4mm、同軸 φ2.3mm、面合わせ)

    foot step 2

  3. 🔩 M2-6 低頭ビス ×4 を締める(脚ブラケット ↔ ホーン)

    foot step 3

leg_left_krs / leg_right_krs(脚) 各 ×2

使う部品: 膝のサーボ(KRS-3302)×1、足先 ×1、脚リンク ×1、M3-6 低頭ホーン止めビス ×1、 M2-6 低頭ビス ×2、ケースビス ×2(サーボに最初から締めてあるもの)。右脚は足先が foot_right_krs になるだけで、手順は同じです。

  1. KRS3300_scale(膝のサーボ。真ん中に合わせておく)を置く(土台)

    leg step 1

  2. foot_left_krs(ホーン付きの足先)— 脚がまっすぐ伸びる向きで、ホーンを出力軸にはめる

    leg step 2

  3. 🔩 M3-6 低頭ホーン止めビス ×1 を、脚ブラケットの真ん中の穴から締める(ホーン ↔ 出力軸)

    leg step 3

  4. leg_link1_krs(脚リンク)— まず、サーボのボトムケース側(出力軸と反対側)の ケースビスのうち、脚リンクの穴に重なる 2 本をサーボから抜いておく。それから、 サーボを脚リンクの間に差し込む(同軸 φ2.3mm ×4、面合わせ ×2)

    leg step 4

  5. 🔩 ケースビス ×2 — 手順 4 で抜いたケースビスを、脚リンクの座ぐりから通して サーボに締め直す

    leg step 5

  6. 🔩 M2-6 低頭ビス ×2 を締める(脚リンク ↔ アッパーケース)

    leg step 6

本体の組み立て#

事前に組んだユニットを胴体(body_servo_krs)に取り付けます。脚リンクの上の端を 股のホーンに合わせ、脚リンクの外側の穴から M2-4 低頭ビスでホーンに留めます。 股のサーボも真ん中のままにして、脚がまっすぐ真下を向く向きで合わせます。

Step 1: body_servo_krs を置く#

Step 1

Step 2: leg_right_krs(1 本目・右前)を取り付ける#

右前の股のホーン(KRS3300-3)へ、脚リンクを合わせます(同軸 φ8.4mm、同軸 φ2.3mm ×2)。

Step 2

Step 3: 🔩 M2-4 低頭ビス ×4 を締める#

Step 3

Step 4: leg_right_krs(2 本目・右後)を取り付ける#

Step 4

Step 5: 🔩 M2-4 低頭ビス ×4 を締める#

Step 5

Step 6: leg_left_krs(1 本目・左後)を取り付ける#

反対側の股のホーンへ合わせます。差し込む向きが右脚と逆になります。

Step 6

Step 7: 🔩 M2-4 低頭ビス ×4 を締める#

Step 7

Step 8: leg_left_krs(2 本目・左前)を取り付ける#

Step 8

Step 9: 🔩 M2-4 低頭ビス ×4 を締める#

Step 9

Step 10: lid_krs(蓋)をかぶせる#

蓋は、配線(下の「配線」)を済ませ、バッテリーと基板を胴体に入れてから最後に かぶせます。蓋の縁を胴体の上の縁に合わせて真上から押すと、左右 2 本ずつの爪が胴体の 側面の窓(蓋爪窓)にパチンと掛かります。外すときは、側面の窓から爪の先を内側へ押しながら 蓋を持ち上げます。ネジは使いません。

Step 10

これで機体は完成です。

胴体に組み付ける#

胴体の中に股のサーボ 4 個、RCB-4mini、Arduino UNO R4 WiFi を置いたところ

胴体に股のサーボ 4 個、RCB-4mini、Arduino UNO R4 WiFi を置く#

胴体の中でサーボのケーブルを RCB-4mini につないだところ

サーボのケーブルを RCB-4mini へ#

配線#

RCB-4mini の各部#

RCB-4mini の各部の名称の図。SIO ポートは左の列が SIO3・SIO2・SIO1、右の列が SIO7・SIO6・SIO5。右に AD ポート AD1〜AD5、下に電源端子と COM ポート。SIO ポートのピンは SIO・Vcc・GND、COM ポートのピンは GND・Rx・Tx

RCB-4mini の各部の名称(出典:近藤科学「HeartToHeart4 取扱説明書 Ver.8」7 ページ)#

ポート

使い方

SIO1〜3、SIO5〜7

サーボをつなぐ。ピンは SIO(信号)・Vcc(電池の電圧)・GND

COM

Arduino とつなぐ。ピンは GND 側から GND・Rx・Tx

電源端子

バッテリーをつなぐ

AD1〜AD5

使わない

サーボ → RCB-4mini#

サーボは SIO ポートにつなぎ、サーボどうしは数珠つなぎにできます。RCB-4 は、つないだ サーボを ICS 番号 で区別します。ICS 番号は、サーボの ID と、どちらの系統の SIO ポートにつないだかで決まります。

つないだ SIO ポート

ICS 番号

例:ID 3 のサーボ

SIO1〜3

ID × 2

6

SIO5〜7

ID × 2 + 1

7

ICS 番号はサーボ ID × 2(SIO1〜4 に接続の場合)、サーボ ID × 2 + 1(SIO5〜8 に接続の場合)という説明と、ICS0〜ICS7 のビットの並び

ICS 番号の決まり方(出典:近藤科学「RCB-4HV コマンドリファレンス」17 ページ、 RCB-4 リファレンスセット Ver.2.2 所収)。RCB-4HV は SIO が 1〜4 と 5〜8 の 8 個、 RCB-4mini は 1〜3 と 5〜7 の 6 個で、決まり方は同じ#

ファームウェアは起動時に両方の系統を調べるので、どちらの系統に挿してもかまいません。 起動時の表示では、SIO1〜3 側を「右」、SIO5〜7 側を「左」と出します。

つなぐもの#

胴体の中の配線全体。番号 1 が RCB-4mini、2 が Arduino、3 がバッテリー、4 と 5 が ZH接続ケーブル2 Bタイプとジャンパワイヤ

配線の全体。番号は下の表と対応する#

番号

もの

つなぎ先

1

RCB-4mini

SIO ポートにサーボ 8 個、COM ポートに 4、空いた SIO ポートに 5、電源端子にバッテリー

2

Arduino UNO R4 WiFi

D8・D9・GND に 4、VIN に 5

3

バッテリー(ROBO パワーセル E タイプ(Ni-MH 7.2 V))か AC アダプター

RCB-4mini の電源端子

4

ZH接続ケーブル2 Bタイプ + ジャンパワイヤ 3 本(COM 用)

RCB-4mini の COM ポート → Arduino の D8・D9・GND

5

ZH接続ケーブル2 Bタイプ + ジャンパワイヤ 1 本(電源用)

RCB-4mini の空いた SIO ポートの Vcc → Arduino の VIN

RCB-4mini まわりに番号を付けた写真。1 が SIO1〜3、2 が SIO5〜7、3 が AD ポート、4 が COM ポート、5 が電源端子

RCB-4mini まわり。1:SIO1〜3、2:SIO5〜7、3:AD ポート(使わない)、 4:COM ポート、5:電源端子#

Arduino UNO R4 WiFi に番号を付けた写真。1 が D8・D9 に挿したジャンパワイヤ、2 が VIN と GND に挿したジャンパワイヤ

Arduino 側。1:D8・D9(RCB-4 の COM へ)、2:VIN・GND(SIO ポートの電源)#

RCB-4mini の COM → Arduino#

RCB-4mini COM

Arduino UNO R4 WiFi

Rx(GND の隣)

D9

Tx(いちばん奥)

D8

GND

GND

送る側(Arduino の D9)を受ける側(RCB-4 の Rx)へ、という普通の交差のつなぎ方です。 Feetech 版のボードとは違って、TX どうし・RX どうしではありません。

注釈

D0 / D1 は Arduino のハードウェアシリアル(Serial1)のピンです。RCB-4 の COM ポートは 信号が反転した特殊なシリアル(1.25 Mbps)で Serial1 では話せないため、ファームウェアは D8 / D9 をタイマーと DMA で直接動かして話します。D0 / D1 はほかの機器に使えます。

電源#

電源は 2 通りあります。どちらも RCB-4mini の 電源端子 に入れ、サーボと Arduino には そこから配ります。

AC アダプター

バッテリー

使うもの

近藤科学の AC アダプター(5.9 V 2 A)。付属の LV 変換 DC ジャックを付ける

ROBO パワーセル E タイプ(Ni-MH 7.2 V)(KXR アドバンスセット B に入っている)

電圧

5.9 V

公称 7.2 V

向いている使い方

机の上で何度も試す。電池切れを気にしなくてよい

ケーブルなしで歩かせる

LV 変換 DC ジャックの先はバッテリーと同じ VH 2 ピンのコネクターなので、バッテリーを 挿すところにそのまま挿せます。

  1. AC アダプターかバッテリーを RCB-4mini の 電源端子 につなぐ。サーボの電源はここから SIO ポート経由で配られます。

  2. 空いている SIO ポート の Vcc を Arduino の VIN へつなぐ。SIO ポートの Vcc には 電源端子の電圧がそのまま出ています。GND は COM ポートの GND でつながっています。 SIO ポートの SIO(信号)ピンはつながないでください(サーボの通信線そのものです)。

USB ケーブルを同時に差していても問題ありません(理由は下の「VIN と USB を同時に つないでよい理由」)。書き込みのときに外す必要はありません。

警告

Arduino の VIN が受け付けるのは 6〜24 V です。

  • AC アダプターの 5.9 V はこの範囲を少し下回ります。Arduino の 5 V が下がることが あるので、AC アダプターのときは USB ケーブルも差しておいてください。 足りない分は USB から入ります。

  • バッテリーが減って 6 V を切ったときも同じです。その前に充電してください。

AC アダプターは 2 A までです。サーボ 8 個が同時に強く踏ん張ると足りなくなることがあり、 近藤科学の商品ページにも、サーボの数や動きの負荷によっては正常に動かないことがある、 とあります。歩かせている最中に RCB-4mini や Arduino がリセットするなら、バッテリーで 試してください。

VIN と USB を同時につないでよい理由#

UNO R4 WiFi の回路図(電源まわり)の抜粋です。

UNO R4 WiFi の回路図の電源部分。左から DC ジャック J5、逆接続保護のショットキーダイオード D1、降圧コンバーター U3(ISL854102)、コイル L3 を経て +5V。右上の VUSB からショットキーダイオード D2 を通って同じ +5V へ

Arduino UNO R4 WiFi 回路図(ABX00087)の DC JACK・BUCK CONVERTER・USB SCHOTTKY の部分。 出典:Arduino SA、CC BY-SA 4.0#

ピンヘッダーの VIN は、DC ジャック(J5)と同じ VIN の線です。電気の通り道は次のように なっています。

VIN ピン / DC ジャック ──D1──> 降圧コンバーター U3 ──> +5V ──> マイコン・3.3 V レギュレーター
USB-C の VBUS ─────────D2─────────────────────────> +5V
  • D1、D2 はショットキーダイオード(PMEG6020AELRX)で、電流を矢印の向きにしか 流しません。+5V には 2 つの電源がダイオードを挟んでつながっていて、電圧の高いほうから 電気が入ります。

  • VIN に電圧があると、降圧コンバーター U3 が +5V を 5.0 V に保ちます。USB 側は D2 で 電圧が下がって約 4.7 V しか出せないので、D2 には逆向きの電圧がかかり、USB からは 電流が流れません。+5V から PC の USB へ流れ込むこともありません(D2 が止める)。

  • USB だけのときは、+5V が U3 の中を通って VIN 側へ漏れても D1 で止まるので、 USB からバッテリーや AC アダプターのほうへ流れることもありません。

  • VIN が 6 V より下がると U3 は 5 V を保てなくなりますが、USB を差していれば、 +5V が USB 側の約 4.7 V より下がった分を D2 から USB が補います。上の warning で AC アダプターのときに USB を差しておく理由です。

下側の配線#

膝のサーボのケーブルは、胴体の下を通して中へ入れます。ふたを閉めたあと、 下から見て次のようになっているか確かめてください。

組み上がった機体を下から見た写真。1 が四隅の膝のサーボ、2 がケーブルを胴体の中へ通す穴、3 がケーブルを留めるところ

下から見たところ。1:膝のサーボ(4 個)、2:ケーブルを胴体の中へ通す穴、 3:ケーブルを脚に沿わせて留めるところ#

脚を動かしたときにケーブルが引っ張られたり、挟まれたりしないよう、留めるところ(3)で ケーブルを脚に沿わせておきます。

書き込んで、校正する#

ここからは 歩行を学習させる(強化学習) と同じ流れです。違うのは、書き込むときの env と、校正の値を 書くファイルだけです。

  1. 書き込む。 校正する前のファームウェアは、サーボの角度を読むだけで、 目標の角度は送りません。

    $ uv run pio run -d 13_quadruped -e uno_r4_wifi_rcb4 -t upload
    

    起動するとシリアルモニタに、どの関節のサーボが RCB-4 の何番で見つかったかが 出ます。サーボ応答: 8 / 8 になっていることを確かめてください。

    FL_hip id 3 -> 右 #6
    FL_knee id 4 -> 右 #8
    ...
    サーボ応答: 8 / 8
    
  2. 脱力させる。 free を送ると全部の関節の力が抜けます。

  3. ゼロ点を測る。 機体を吊るし、4 本とも脚をまっすぐ真下に伸ばして raw を 送ります。関節ごとのパルス(中央が 7500)が出るので、それを include/quad_calib_rcb4.h の QUAD_RCB4_ZERO に書きます。

  4. 向きを確かめる。 股だけを動かして足先を後ろへ振り、raw の値が増えるか 減るかを見ます。膝も同じように確かめます。ゼロ点より 減った 関節は QUAD_RCB4_SIGN を -1 にします(左の脚が -1、右の脚が +1 になるはずです)。

  5. QUAD_RCB4_CALIBRATED を 1 にして、もう一度書き込む。起動するとすぐに 2 秒 かけて立ち姿勢へ動く ので、機体は吊るしたままにしてください。

  6. 吊るしたまま rl 0.06 0 を送り、4 本の脚が交互に足踏みすれば完成です。床に 下ろして歩かせるのは、そのあとです。

キーボードで歩かせる方法(quad_host.py serial)と、WiFi で歩かせる版 (-e uno_r4_wifi_rcb4_udp)は、 code/13_quadruped/README.md にあります。

KRS 版の歩行方策#

KRS 版には、Feetech 版とは別に学習した歩行方策があります。KRS-3302 のトルクは 0.54〜0.66 N·m(電源 5.9〜7.4 V)で、Feetech 版の STS3215(2.94 N·m)の 4 分の 1 以下です。 そのため、機体のモデル・関節の範囲(±135°)・質量(実測 610.8 g)をすべて KRS 版に合わせて、 最初から学習しました。観測には IMU(胴体の角速度と重力の向き)が入ります。

ブラウザで歩かせてみる#

歩行を学習させる(強化学習) と同じシミュレーションを、KRS 版の機体と方策で動かします。 歩く を押すと、「前進」と「旋回」の指令で歩きます。

KRS 版のシミュレーションを開く ↗

シミュレーション(64 台 × 10 秒)での成績です。

指令

実測

胴体の傾き(99 %)

前進 0.04 m/s

0.040 m/s

4.1°

前進 0.08 m/s

0.083 m/s

3.1°

前進 0.12 m/s

0.122 m/s

3.7°

後退 0.06 m/s

0.055 m/s

5.4°

旋回 0.4 rad/s(前進 0.08 m/s)

0.066 rad/s

4.2°

  • 対角の 2 本ずつが交互に接地するトロットで、4 本とも 1 秒に 3.2〜3.9 歩踏みます。

  • 胴体と膝は床に着きません。4 本とも浮く時間はほぼありません(0.1 % 以下)。

  • 関節は ±135° に対して 32° 以上の余裕があります。トルクは 99 % 値で 0.33 N·m 以下です (最大トルクの約 5 割)。

  • 旋回は苦手です。 外転の関節が無いので、左右の歩幅の差で曲がるしかなく、 指令の 2 割ほどしか回りません。

書き込む#

cd code
uv run pio run -d 13_quadruped -e uno_r4_wifi_rcb4_krs -t upload       # USB シリアル
uv run pio run -d 13_quadruped -e uno_r4_wifi_rcb4_udp_krs -t upload   # WiFi

方策は include/krs_quad_policy.h です。Feetech 版の arduino_quad_policy.h とは混ざりません。 home の姿勢は股 +53.9°、膝 −89.3°(胴体の底面が床から 0.13 m)で、Feetech 版とは違います。

警告

IMU が必要です。IMU の値は胴体の座標(x 前・y 左・z 上、水平で静止して重力が (0, 0, −1))で 方策に渡します。センサ基板の取り付けの向きが Feetech 版と違うときは、 src/quad_imu.cpp のチップから胴体への回転を、KRS の胴体に合わせてください。

学習に使った値のうち、次は実測していない仮定です。

  • サーボの位置ループのゲイン(kp 5.5 N·m/rad、kd 0.11)。学習では 0.5〜2 倍でばらつかせた

  • 指令が届くまでの遅れ(20〜40 ms)

  • 電池の位置と Arduino UNO R4 WiFi の質量(25 g)

学習のしかたは code/13_quadruped/rl/README.md の「KRS 版」にあります。

うまくいかないとき#

症状

確かめること

ics-manager が Connection is not open. のまま

アダプターの LED が赤(ICS モード)か。サーボを 1 個だけつないでいるか。macOS なら libusb、Linux なら上の new_id

起動時に一部の関節が 見つからない

そのサーボの ID と Baud Rate(1.25Mbps)を ics-manager で確かめる。ケーブルが奥まで差さっているか

1 本の脚だけ逆に動く

そのサーボの Reverse Mode が Enabled になっていないか(ics-manager の v で戻す)。QUAD_RCB4_SIGN の値

関節が止まらずに回り続ける

そのサーボの Rotation Mode が Enabled(連続回転モード)になっていないか(ics-manager の r で戻す)

関節が途中までしか曲がらない

ホーンを大きくずらして付けていないか。上の「サーボを真ん中に合わせてから、ホーンと脚を付ける」からやり直す

歩いている最中に Arduino がリセットする

バッテリーの電圧。6 V を切っていないか。AC アダプターなら USB ケーブルも差しているか、バッテリーに替えるとどうか

RCB-4mini に書き込まれたプロジェクトについて

RCB-4mini は、近藤科学の Heart to Heart 4 で書き込んだプロジェクトに「割り当て」られた サーボとしか話しません。ファームウェアは起動時に、見つからない関節のサーボを自分で 割り当てるので、Heart to Heart 4 でプロジェクトを作り直す必要はありません (RCB-4mini の RAM に書くだけで、中に保存されたプロジェクトは書き換えません)。

出典#