予算3万円でつくる BLDC 2足歩行ロボット 第4号
ー2足歩行ロボット完成ー

Home > 電子工作 > 予算3万円でつくる BLDC 2足歩行ロボット 第4号ー2足歩行ロボット完成ー
すき 0
うんこ 0

前号では股関節ユニットを完成させて、機体傾きによる制御を楽しみました。

予算3万円でつくる BLDC 2足歩行ロボット 第3号ー股関節を楽しむー

 

本号ではこれまでに製作した左足と股関節ユニットに加えて右足を追加製作してロボットを完成させます。

 

AudiostockでBGM・効果音を販売中!

はじめに

ここからいよいよ2足歩行ロボットを完成させます。

まずは右足を製作します。
その後にこれまで製作した左足と股関節を結合させてロボットを組みます。

本号では完成させたロボットのモータをPS4コントローラで動かすまでを紹介いたします。

ロボット基本構成

本ロボットのCAN通信システム構成は以下の通りです。

本ロボの中枢コントローラとなるATOM Matrix で股関節のモータ角度と各足の位置座標を指定します。
さらに足からはヒザモータのトルクをATOMに送信します。

PS4コントローラとATOMをペアリングしてロボ操作を実施します。

 

右足製作

まずは残りのパーツとなる右足を組み立てます。

必要部品

  • BLDCコントローラ MKS ESP32 FOC V2.0 :1個

      
  • BLDC 5010 360KV:2個

     
  • 磁気エンコーダ AS5600:2個

      
  • その他
    10mm以上のねじスペーサ:4個
    M2ナット:6個
    M2 12mm なべネジ:4本
    M2 14mm なべネジ:2本
    M2 20mm なべネジ:6本
    M2 25mm なべネジ:2本
    M3ナイロンネジ:2本
    M3ナット:2個
    M3 5mm なべネジ:8本
    M3 6mm なべネジ:16本
    M3 14mm なべネジ:2本
    M3 18mm なべネジ:1本
    M3 20mm なべネジ:1本
    M3 25mm なべネジ:5本
    M3 30mm なべネジ:1本

Arduinoコード

右足用のコードです。あらかじめMKS ESP32 FOC V2.0に書き込みます。
足座標からIKでモータ回転位置を算出してFOCで制御します。
ブラウザアプリでパラメータ調整し、CAN通信で足座標を受信・トルクデータ送信します。

環境バージョンは前回と同様です。
 Arduino IDEバージョン:ver. 1.8.19
 ESP32ライブラリ:ver. 2.0.13
 SimpleFOCライブラリ:ver. 2.3.3

 

モータの基本制御はFOC回転位置制御であり第2号のコードとほぼ同様です。
ここではPS4コントローラ制御を廃止して外部からCAN通信で足座標を指定してるの主な差分となるCANのコードを中心に説明します。

L. 5 ESP32のTWAIドライバでCAN通信を実施します。

L. 57~68 CAN送信関数
 ID 0x212でモータのトルク(負荷電流)を送信

L. 333~422 core0動作
 ESP32 デュアルコアのcore0でWiFI、CAN通信を実行します。

 通信のIOはMKS ESP32 FOC V2.0の外部コネクタの一つを使用します
  TX:IO 17、RX:IO 16とします (L. 336, 337)。

 伝送速度は 1Mbps固定 (L. 348)
 受信は角度指定値のID 0x122のみ通すようにフィルタリング (L. 350~355)

 CANで足座標(x, z)を受信 データID:0x122 (L. 409~416)
 CANでモータトルクを送信 (L. 418)

L. 542~547 SimpleFOCモータ初期化動作
  エンコーダオフセット(zero_electric_angle)とモータ回転方向(sensor_direction)をコメントアウトしてます。
 モータ接続後にオフセット値と回転方向を確認してコメントアウトを外して再度書き込んでください。

L. 579, 588 モータ回転
 モータはCAN通信で指定された足座標からIK換算された角度 (angel)とブラウザアプリによる微調整 (angleOffset)で回転します。

 下腿ヒザモータ(M0)のトルクを検知 (L. 586)

3Dモデル

右足は左足のミラー対象で構成は全く同じです。
非対称部品でまだ公開していないデータを以下で販売しています。
zipファイルでダウンロードされますので解凍してご利用ください。

[予算3万円でつくる BLDC 2足歩行ロボット] 第4号用 3Dモデルデータ

 

データには3個のstlファイルがあります。 1個づつ印刷してください。

右足組み立てに必要な3Dプリントパーツを以下にまとめます。

STL 数量 掲載号
cover 1 第2号
motorFix 1 創刊号
boardFix 1 第2号
gearFix 2 創刊号
gear10 2 創刊号
gear56-70-R 1 創刊号
gear56-R 1 第4号
leg1 1 創刊号
leg2-R 1 第4号
leg3 1 第2号
leg4-R 1 第4号
leg5 1 第2号
leg6 1 第2号
leg7 2 第2号
leg8 1 第2号
leg9 1 第2号
leg10 1 第2号
leg11 1 第2号
foot 1 第2号
M2-52 10 創刊号
M2-102 2 第2号
M2-149 1 第2号
M2-152 1 第2号
M3-55 1 第2号
M3-102 1 第2号
M3-155 2 第2号
M3-178 1 第2号

 

上記パーツで左足とミラー対象となるように創刊号、第2号を参照して組んでください 。
これまでと同様にモータのエンコーダオフセット処理や初期位置を考慮したギア固定&微調整を実施してください。

 

左足用Arduinoコード

左足もCAN通信で足座標を受信・トルクデータ送信するよう以下を書き込みます。
エンコーダオフセット値は前回コードの値を引きついで書き込んでください (L. 543, 546)。

 

ほぼ右足のコードと同様です。
 CAN ID:0x211で下腿モータのトルク(負荷電流)を送信
 CAN ID:0x121で足座標(x, z)を受信

 

CANボードを足に実装

足にCANコントローラボードを載せます。

CANコントローラボードを加工します。
4ピン GHコネクタケーブルをMKS ESP32 FOC V2.0のコネクタに対応するようにCANコントローラボードに配線します。

 

以下の図のように右足、左足にCANコントローラボードを両面テープで固定してコネクタをMKS ESP32 FOC V2.0につけます。

 

股関節加工

股関節のMKS ESP32 FOC V2.0のコードは前回の第3号のまま使用します。

ロボ完成に向けて股関節の加工を実施します。

必要部品

  • LiPoバッテリ用配線コネクタ

     
  • 電源用スライドスイッチ

     
  • ねじ
    M3 6mm なべネジ:2本
    M2 8mm タッピングネジ:4本

電源周り加工

LiPoバッテリからスイッチを介して股関節・足のMKS ESP32 FOC V2.0 に給電します。

以下のように配線加工

 

モータには大きめの電流が流れるので太めの配線材を使用しました。

電源線は股関節用は10cm、足用は20cmくらいにしました。

 

atomCover.stlに加工したスイッチをねじ止め (M3 6mm なべネジ:2本)。

 

atomCover.stlに革などで取っ手を付けると便利です。
ここではタッピングネジ (M2 8mm:4本)でねじ止め

 

atomCover.stlをユニットに戻して、股関節用電源配線をMKS ESP32 FOC V2.0に接続して加工完了です。

 

ロボ組立て

足と股関節を組み合わせてロボットを完成させます。

必要部品

  • LiPoバッテリ 3セル 11.1V:1個

     
  • 足底用クッション シールフレックスモールド 5X20mmX2m巻 SFM-009

     
  • ねじ
    M3 20mm なべネジ:12本

組立て

股関節ユニットのbody3.stlを取り外して、足にねじ止めします (M3 20mm なべネジ:6本ずつ)。

 

足をbody3.stlを介して股関節に取り付けます。
電源配線をそれぞれの足のMKS ESP32 FOC V2.0に接続します。

 

足の底にクッションとしてシールフレックスモールドを貼り付けます。

 

LiPoバッテリをスペーサで作った空間にはめて両面テープで固定します。
固定後バッテリ用コネクタに接続 (スイッチがOFFになっていることを確認してください)。

 

足のCANコントローラボードを以下のように結線します。
CANH, CANLピン同士を配線接続します。

CANネットワークでは両端のみに終端抵抗120Ωを載せる必要がありますが、ここでは特にケアせずにすべてのボードに終端抵抗を載せたままにしています。
気になる方はケアしてください。

 

以上で組み立て完了です。

 

ATOM用Arduinoコード

ATOM Matrixにロボット用コードを書き込みます。
前号のIMUによる股関節制御に加えてPS4コントローラでも足や股関節を操作できるようにします。

環境バージョンはこれまでと同様で以下の通りです。
 Arduino IDEバージョン:ver. 1.8.19
 ESP32ライブラリ:ver. 2.0.13
 M5Atomライブラリ:ver. 0.1.3
 Kalman Filter Library :ver. 1.0.2
 PS4Controllerライブラリ:ver. 1.1.0

 

L. 25 ロボの足の初期座標を指定
 前後 x0 = 10mm、高さz0 = 99mm

重心の兼ね合いでx0 = 10mmとして少し前に出しています。
足の初期位置調整の際は x0 =  0mm、z0 = 99mmにして実施してください。

L. 66~109 CAN送信関数
 ID 0x121で左足座標を送信 (L. 66~79)
 ID 0x122で左足座標を送信 (L. 81~94)
 ID 0x123で2個のモータの回転位置角度を送信 (L. 96~109)

L. 112~290 core0動作
 ATOM Matrix デュアルコアのcore0でLED表示と傾斜角検知、股関節ロール軸CAN送信を実行します。

L. 292~478 ブラウザアプリ表示設定
 APモード接続時の各パラメータ設定用の表示を記述しています。 
 足の初期座標 (x0,  z0)と股関節ロール軸PDパラメータ、IMU傾斜角オフセット調整を実施

L. 482~516 setup関数
 PS4コントローラ接続のために Bluetooth Mac Addressをシリアル出力しています。 (L. 485~488)

L. 519~561 loop関数
 PS4コントローラでロボの足を操作
  左スティック 左右:足前後 左右で逆に動かして体をひねります
  左スティック 上下:足高さ
  右スティック 左右:股関節ロール

書き込み

ATOM Matrixに書き込む際にはモータに給電しないようにATOMの電源ラインは外してください。

 

ボードは”M5Stack-ATOM”を選択
PS4Controllerライブラリのサイズが大きいのでPartition Schemeは”No OTA (Large APP)”を選択

 

2足歩行ロボット HM-01 完成

ついにロボが完成しました。
今更ですがこのロボの名前は”HM-01″と申します。

スイッチをONすると初期化後にモータが初期位置に設定されます。

モータが初期位置 (-π : -180°)から大きくズレていると 一周回った状態で初期化して過電流が流れることがあるので、極力初期位置に近い状態で起動するようにしてください。

HM-01

全長:約 25 cm
重さ:訳 1.1 kg

 

ブラウザアプリ

各コントローラ (ATOM Matrix, MKS ESP32 FOC V2.0)はWiFiでブラウザからもろもろ調整できます。

 

PS4コントローラ

PS4コントローラとATOM Matrix をペアリングすることでコントローラのアナログスティックでロボットを動作させます。

ATOM Matrix 起動時に Bluetooth Mac Addressをシリアル出力させています。
アドレスを控えてコントローラと接続します。

 

PS4コントローラとESP32のペアリング方法の詳細は以下を参照ください。

 

PS4ペアリング後にはアプリによるWiFi接続ができませんので、両方実施したい場合はWiFiアプリ接続後にBluetoothコントローラペアリングしてください。

 

動作

PS4コントローラで足を動かします。

 

 

演習問題

1-パラメータ調整

ブラウザアプリやコードを修正するなどして足座標や各PIDパラメータ値を変更して動作にどう影響するのか体験してみよう。

パラメータ調整で過制動などで発振すると過電流でMKS ESP32 FOC V2.0のパワートランジスタが壊れる可能性がありますので十分ご注意ください。

2-動作検討

ここではPS4コントローラのジョイスティックでロボの足動作を楽しみました。

次回は足踏みや歩行動作を紹介しますが、ぜひ前もって考えてみてください。
ATOM Matrixの足座標やロール軸 CAN通信送信データを組み合わせて動作を構築します。

 

おわりに

本号ではついに2足歩行ロボット HM-01 を完成させました。
PS4コントローラによる足動作でBLDCの応答性の良さやポテンシャルを感じ取っていただけたと存じます。

次回はロボットの歩行動作を楽しみたいと思います。

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください