View on GitHub

ラジドリ用ジャイロGyroM5

M5StickCで自作するオープンソースのラジコン二駆ドリフト用ステアリングジャイロ

日本語 English

GyroM5

ラジコン画像


DEMO

GyroM5搭載のタミヤ製RCカー(SU-01シャーシ)がRWDドリフト走行するデモ動画です。

https://user-images.githubusercontent.com/64751855/117535983-a1d76280-b033-11eb-9f59-ec6aaef0b9b0.mp4

Features

GyroM5(v1/v2ファームウェア)は、以下のユニークな特徴を備えています。 PID制御は、汎用的なフィードバック制御アルゴリズムであり、パラメータ4個の調整により自由度の高いセッティングが可能です。

Requirement

GyroM5の利用に必要なハードウェアの要件を列挙します。

M5StickCやワイヤハーネス部品は、Amazon等のネット通販で入手可能です。

Usage

GyroM5の使い方(本体準備、初期設定から通常利用の流れ)を概説します。 RCユニットとの接続方法、M5StickCの起動方法、制御パラメータの調整方法は後半を参照ください。

本体準備

  1. 手持ちのパソコンにArduino IDE(開発環境)をインストールする
  2. Arduino IDEの開発ボード設定をESP32/M5StickC向けに変更する
  3. パソコンとM5StickC開発ボードをUSBケーブルで接続する
  4. ファームウェアGyroM5Stick.inoをArduino IDE経由でM5StickCへ書き込む
  5. GyroM5(M5StickC)をRCカーに固定(LCD画面が上向き)してRCユニットと接続する

初期設定

  1. RCユニットの電源を入れる
  2. GyroM5のHOME画面が出るの水平状態、RC無操作で待つ
  3. GyroM5の操舵エンドポイントを設定する
  4. GyroM5のPID制御パラメータを設定する(初期値:KG=50、KP=50、KI=30、KD=10)
  5. RCカーを走らせて、必要によりPID制御パラメータを微調整する

通常利用

  1. RCユニットの電源を入れる
  2. GyroM5のHOME画面が出るのを水平状態、RC無操作で待つ
  3. RCカーを走らせて、必要によりPID制御パラメータを微調整する

Note

GyroM5の詳しい解説を記します。

接続方法

GyroM5利用時のM5StickCの入出力ピン(GPIO端子)とRCユニット(受信機、サーボ)端子との接続方法は下記の通りです。

GyroM5-hardware

M5StickC in/out RCユニット
G26 in RC受信機CH1のシグナル端子
G36 in RC受信機CH3のシグナル端子
G0 out RCサーボCH1のシグナル端子
GND in RCアンプBECのマイナス端子
5Vin in RCアンプBECのプラス端子

ワイヤハーネス(接続ケーブル)は、CH1入出力用にRCサーボ用のコネクタ付き延長ケーブル1本を中央で切断して、8ピンヘッダ(オス)とハンダ付けすれば完成です。

GyroM5-wireharness

ゲイン調整用にCH3入力を利用する場合、信号線(単線)のみ受信機CH3とG32を接続すれば機能します。 なおCH3をジャイロに接続しない場合、ジャイロはPID制御の静的なパラメータ表のみ参照します。

ジャイロ搭載

信号の電圧レベルに関しては、M5StickC側が3.3Vなのに対して、RCユニット側が通常5.0V以上と高くなる点に十分ご注意ください。 テスト環境(タミヤ製TRE-01、HobbyWing製QuicRUN-1060)では、直結で問題なく動いていますが、許容範囲内でも保証範囲外と思います。 たとえばRCユニット側の電圧レベルが6Vを超える場合、レベルコンバータを省略するとM5StickCが破損(不可逆に故障)する恐れがあります。

M5StickCのGPIO端子は、プログラムにより自由に変更できますが、G0端子を入力用に使うことは避けたほうが良いです。 G0端子は、内部的にプルアップされており、電源投入時にG0端子がLowレベルだとM5StickCが起動しないことがありました。 G0端子が出力用の場合、相手側の端子が入力用のハイインピーダンスとなるので、この問題を回避できるようです。

起動方法

GyroM5は、RCユニットの電源と連動して起動、停止します。

ただしM5StickCは、電源管理に不具合が残っており、素直に起動しない場合があります。 原因は、電源管理チップAXPの不具合、内蔵バッテリの電圧低下、GPIOピンの電圧レベル等に起因するそうです。 キーワード「M5StickC 起動しない」のGoogle検索で、複数の対処方法が見つかりますので、トラブル解決の参考にしてください。

自分のテスト環境でも、起動に失敗する場合が起きましたが、M5StickCのワイヤハーネスを取り外してUSB給電すると高確率で起動します。 M5StickC関連ブログ記事に「G0と3V3を直結してUSB給電すれば起動」や「電源投入時のG0電圧に応じてリセット動作」等の記載があります。 内蔵バッテリの充電不足を除いた場合、電源投入時点のGPIOピン(おそらくはG0ピンの)電圧によりM5StickC起動の成否が決まるようです。

なおジャイロ起動に成功後、電源オフ操作は不要です。 GyroM5プログラムは、5Vin端子でBEC電圧の低下を検出すると電源をオフします。

画面遷移

GyroM5Stickは、5種類の画面状態を遷移します。状態遷移は、ボタン[A]、[B]操作及びタイムアウト時に発生します。

GyroM5-state

画面 遷移 解説
WAIT RC受信機の起動 ジャイロ起動後、RC受信機からPWM信号を受信するまで待機
INIT タイムアウト CH1ニュートラル位置、IMUバイアスのサンプリング(この間、送信機操作や車体振動がNG)
HOME ボタン[A],[B] PID制御状態(RCユニット入出力、PID制御グラフなど)の表示
WIFI ボタン[A] WiFiアクセスポイント兼WWWサーバとなりスマートフォン等の要求に対応
ENDS ボタン[B] CH1エンドポイントの設定

WiFi機能を利用する場合、GyroM5のボタン[A]を押してください。GyroM5は、WIFIモードに入るとWiFiアクセスポイント兼WWWサーバとして機能します。 スマホからGyroM5のWiFiアクセスポイントへ接続後、LCD画面のIPアドレスまたはQRコードで指定されるURLを開くと以下の画面が表示されます。 なおWiFi接続に成功後、画面表示に失敗する場合は「モバイルデータ通信を一時的にOFF」にしてください。 モバイルデータ通信がONの場合、スマホによりインターセット接続が有効でないWiFi通信へルーティングしません。 この画面から各種パラメータの設定機能、走行データのダウンロード機能を利用できます。 パラメータの設定後、GyroM5は通常のPID制御モード「HOME」へ自動復帰します。

GyroM5-wifi-link

調整方法

GyroM5チューニング時の参考情報として、制御アルゴリズムを解説します。

制御アルゴリズム

GyroM5は、汎用的なフィードバック制御アルゴリズムのPID制御(下図はWikipediaから引用)を利用します。

PID_wikipedia

PID制御における目標値r、出力値yおよび操作量uとRCカー(Plant/Process)の関係は以下のとおりです。

つまりRC受信機(送信機)からのCH1入力rを車体ヨーレートyの目標値と解釈して、 両者の偏差eをゼロに近づけるフィードバック制御により、サーボへのCH1出力uを自動調整します。

INTは積分演算子、DOTは微分演算子を意味します。

フィードバック制御の結果、グリップ走行時はニュートラルステアに近い回頭性、ドリフト走行時はヨーレートの安定性を期待できます。

制御パラメータ

PID制御のパラメータ(Kg、Kp、Ki、Kd)は、走行コンディションにより調整すべきであり、LCD画面で確認&変更できます。 PID制御の整数値(大文字)は、数値を0〜100に規格化しており、PID制御の実数値(小文字)との関係は以下の通りです。

テスト用RCカーの場合、設定値「KG=50、KP=60、KI=30、KD=10」程度でドリフト走行できました。 なお特別な設定値「KG=KI=KD=0、KP=50」は、制御なし「入力を出力へスルー:u=r」と同じです。

試験環境

作者のようにSU-01シャーシでRWDドリフト走行を試みる人は少ないと思いますが、 参考までにテスト用RCカー、ユニット及びジャイロ搭載例の写真と諸元を記します。

シャーシ表側

項目 型番
シャーシ タミヤ製SU-01
ボディ タミヤ製ジムニーウイリー(SJ30)
タイヤ TOPLINE製Mシャーシ用ドリフトタイヤ
送信機 タミヤ製ファインスペック2.4GHz
受信機 タミヤ製TRE-01
アンプ タミヤ製TRE-01
サーボ ヨコモ製S-007
バッテリ 7.4V LiPo 1100mAh
モータ ノーマル370型DCモーター

ドリフト走行に関連する注意点を列挙します。

シャーシ裏側

Roadmap

RCカー用ジャイロ自作を通して、気付いた改良アイデアなどを列挙します。 いずれ対応したいと思いますが、趣味で開発しているので、いつ対応できるか分かりません。 ご自身で改良にチャレンジすれる際の参考になれば幸いです。

M5StickCは、WiFi/Bluetoothを備える点、外部GPIOが5本ある点、6軸IMUを備える点、割り込み処理できる点から、 ほとんどの改良案はハードウェア的には実現可能と思いますので、あとはソフトウェアつまりアイデア次第だと思います。

Author

作者は、コロナ禍で屋内遊びをさがす中、初代グラスホッパー(笑)以来めっちゃ久しぶりにRCカーキット(小型のタミヤSU-01シャーシ)を購入しました。 購入後、RCカー系YouTubeチャンネルを見て、子ども時代に存在しなかったドリフト用RCカー(通称、ドリラジ)の動きに興味を持ちました。 ツルツルのタイヤで横滑りさせながらRCカーを走らせるアレです。 ドリフト用RCカーは、ジャンルとして確立しており、たとえばヨコモYD-2のように専用設計で完成度の高い製品が存在します。 純粋にRCカーのドリフト走行を楽しみたければ、ドリフト専用のシャーシやジャイロ製品を入手するのが最短コースです。

自分の場合、ドリラジの存在に気付いたのがRCカーキット購入後だったこと、 どんなRCカーでも上手く制御できればドリフト走行(を安定化)可能と信じていたことから、 タミヤ最安(実売価格≒4K円)のSU-01シャーシを自作ジャイロで制御してドリフト走行にチャレンジしました。 やや回り道しましたが、ほぼノーマル(舵角を増やしただけ)のSU-01シャーシでドリフト走行できました。

RCカー用ジャイロの自作は、プログラムやパラメータの変更によりRCカーの走行特性を変えられるので楽しい開発でした。 RCカー好きの人なら自作ジャイロの操縦性を楽しみつつ、プログラミングや制御アルゴリズムを習得する良い素材(STEM教育の素材)と思います。 趣味でRCカーやプログラミングを楽しむ若い人が増えて欲しいとの願いから、開発したRCカー用ジャイロGyroM5のソースコードを公開します。 この記事を参考に、部品を集めてGyroM5を再現する人、改造して「オレ専用ジャイロ」を開発する人、が出てくれば自分はハッピーです。

(^_^)


Reference

RCカー用ジャイロGyroM5の開発にあたり、参考にした資料などを列挙します。 「元気っ子さん」は、初心者に親切なラジコン屋さんで、作者がGyroM5搭載カーの試験走行、ヨコモYD-2の体験走行等でお世話になっています。

ホビー用RCカー関連

ドリフト走行の理屈

ソフトウェア関連

ハードウェア関連

以上