モーションコントローラ検討2 ー二足歩行ロボットへの道5ー
前回はオリジナルのコントローラを製作してESP-Nowでのロボット上半身同期制御の実現を確認しました。
今回は下半身も追加して全身制御を目指します。
目次
コントローラ 下半身 配線
問題発生
配線が終わったので、前回同様にESP-Nowで二足歩行ロボットと通信しようと思たのですが。。。
ESP32はWiFi使用しながらACD2ピン(IO2, IO4, IO12~15, IO25~27)が使えないことを忘れておりました。
WiFiを使うとなるとESP32のADC1ピンの4個もしくは6個のピンしか使えないですよね。。
UDP通信
仕方ないのでESP-Nowの使用はあきらめてコントローラをUSBケーブルでPCに接続しシリアルでデータ送信して、
UDPで二足歩行ロボットに送信して動かしてみました。
全身コントローラでけた。
でもね
難しい。。。#とってもロボットくん pic.twitter.com/RYd5uULBVa
— HomeMadeGarbage (@H0meMadeGarbage) July 11, 2021
歩行動作にも挑戦しましたが、UDPですと高速送信できないのでなかなか厳しいです。
こんなやり方で二足歩行ロボットのことが理解できるのか疑問に思うようになってきた。#とってもロボットくん pic.twitter.com/Uj6JVnYt7J
— HomeMadeGarbage (@H0meMadeGarbage) July 11, 2021
ESP-Now
どうしてもESP-Nowを使用して高速通信がしたいのでコントローラにADCモジュールの使用を検討しました。
以下のI2Cでデータ取得できる4入力のACDモジュールを使ってみました。
ちょうどAmazonで3個セットが販売されていました。
ADCモジュールの使用により多くのIOピンは必要なくなったので、マイコンにはM5StickCを採用し4ピンコネクタでモジュールと接続しました。
ADCモジュール3つはADDRピンの接続をそれぞれ変えて (GND, SDA, VDD)、I2Cアドレスを変えて使用しました (0x48, 0x4A, 0x49)。
M5StickCを採用したことで内蔵バッテリが使えるのでコントローラが完全無線になりました。
動作
ADCモジュール(ADS1115)のライブラリとして以下を使用しました。
https://github.com/adafruit/Adafruit_ADS1X15
ESP-Nowでコントローラから二足歩行ロボットに角度データを送信します。
UDPの時より早い通信が実現でき制御もスムーズになりました。
M5StickC 間をESP-Nowで通信#とってもロボットくん
むかし子が赤ちゃんだったころ、こうやって足動かしてやったら大爆笑のウケをいただけてたなぁ。。 pic.twitter.com/mHH3EY2FLD
— HomeMadeGarbage (@H0meMadeGarbage) July 14, 2021
歩行動作
スムーズな通信が可能になったため歩行動作もなんとかできました。
スマート人形浄瑠璃#M5Stack #M5StickC #ESPnow#とってもロボットくん pic.twitter.com/DFVpthWWGY
— HomeMadeGarbage (@H0meMadeGarbage) July 15, 2021
起き上がり
起き上がり動作#とってもロボットくん pic.twitter.com/PcoXukccMh
— HomeMadeGarbage (@H0meMadeGarbage) July 15, 2021
腕を1cmほど伸ばしています。
おわりに
ここではオリジナルのコントローラを製作してESP-Nowでの同期制御で全身動作を確認できました。
次回は動作の記録や調整、そして再生を目指したいと思います。
それでは次の道でお会いしましょう!