SHISEIGYO-1 を改良 APモードでパラメータ調整 ーリアクションホイールへの道37ー
以下で1軸 姿勢制御モジュール SHISEIGYO-1の製作例をまとめたレシピを販売しております。
上記レシピのサンプルコードでは各種パラメータをコードに書き込んでいるため、調整が容易ではありませんでした。
2軸 姿勢制御モジュール SHISEIGYO-2ではコントローラにM5Stack CORE2を用いているためタッチパネルでパラメータ調整できるように改良を施しました。
SHISEIGYO-1はM5 ATOM Matrixを用いていますので、ここではAPモードでM5 ATOMに接続してブラウザでパラメータを調整できるようにしました。
目次
APモード
M5 ATOM Matrix (ESP32-PICO) をアクセスポイントにして、スマホやPCをWiFi接続してブラウザでパラメータ調整できるようにしました。
ブラウザには起き上がりボタンと各種パラメータ調整が表示されます。
参考
サンプルコード
サンプルコードは以下でダウンロードできます。
zipファイルでダウンロードされますので解凍してご使用ください。
https://shop.homemadegarbage.com/products/make/shiseigyo-1-AP/SHISEIGYO-1_Ap.zip
動作
使用方法
- 改良版サンプルコードを書き込んだSHISEIGYO-1を起動
- スマホもしくはPCのWiFi接続設定でM5 ATOMに接続
サンプルコードではSSID:SHISEIGYO-1、パスワード:passwordとしています。
- ブラウザページにアクセス
サンプルコードではIP:192.168.22.1
- GetUpボタンで起き上がり動作、各種パラメータ調整は-/+クリックで実施
パラメータは電源OFF後も保持されます。
起き上がり動作
今回の改良で左右の起き上がり時の起き上がり直前の最大回転速度を左右それぞれ独立で指定できるようにしました (rotMaxL, rotMaxR)。
回転速度は0~1023で指定でき、0に近づくほど高速になります。
IDRS (倒立角動的再調整システム)
倒立後のモータ回転速度をフィードバックして、逐一 倒立ターゲット角度を調整する手法 IDRS を導入しました。
SHISEIGYO-1にもInverted angle Dynamic Readjustment System (IDRS) を搭載してみた。
非常にいいですね。#リアクションホイールへの道 pic.twitter.com/GTF7yniyDG
— HomeMadeGarbage (@H0meMadeGarbage) December 4, 2020
IDRSを使用しない場合はコードの変数IDRSを0にしてください(デフォルトは3.0)。
おわりに
今回の改良でSHISEIGYO-1のパラメータ調整が容易になりました。
WiFI設定やパラメータの追加などいろいろアレンジしてご使用ください。
HomemadeGarbage 様
いつも楽しく拝見させていただいております。
SHISEIGYO-1_Jr の発表と同時に、レシピを購入し、ブラシレスモーター他を手配しました。
ブラシレスモーターが入荷したので、早速組み立てを行い、M5 ATOM のテストを行ったところ、
error: suggest parentheses around ‘&&’ within ‘||’ [-Werror=parentheses]
となってしまいます。
本テキストのサンプルコードでも同様のエラーとなってしまいますが、何が原因でしょうか。
アドバイスの程お願い致します。
ご購入いただき誠にありがとうございます。
Arduino IDEをご使用でしょうか?
IDEのバージョンとボードマネージャの設定など
詳細教えていただきたくよろしくお願いいたします。
HomemadeGarbage 様
お手数をおかけします。
Arduino IDE のバージョンは、1.8.13
ボードマネージャー:” M5Stick-C ”
Upload Speed: ” 1500000 ”
Partition Scheme: ” 初期値 ”
Core Debug Level: ” なし ”
ライブラリーは、
Kalman Filter 1.0.2
FastLED 3.3.3
を使用しています。
ありがとうございます。特に問題なさそうですね。
私のコード以外は問題なく書き込みできているのでしょうか?
HomemadeGarbage 様
答えになっているかわかりませんが、「 M5StickC で倒立振子 」のコードはコンパイルできています。
エラーメッセージの後の項目をもう少し説明しますと、
if(GetUP == 1 && kalAngleY 0) {
となっています。
エラーメッセージの訂正です。
if(GetUP == 1 && kalAngleY 0) {
他のコードの書き込みは問題ないとのこと承知いたしました。
if(GetUP == 1 && kalAngleY 0) {
が何を指しているのか理解できないのですが
こちらでも調査進め、わかり次第報告させていただきます。
HomemadeGarbage 様
書き込みができました。
if(GetUP == 1 && kalAngleY 0){
のところにエラーが出ていたので、
if(GetUP == 1 && kalAngleY 0){
と書き換えたところ、コンパイルに成功しました。
お騒がせしまして申し訳ありません。