(Translated by https://www.hiragana.jp/)
GitHub - hshin-git/GyroM5: Turning your M5Atom/M5StickC into steering assist gyro for radio-controlled drift car.
Skip to content

Turning your M5Atom/M5StickC into steering assist gyro for radio-controlled drift car.

License

Notifications You must be signed in to change notification settings

hshin-git/GyroM5

Repository files navigation

日本語にほんご | English

GyroM5

  • GyroM5は、ドリフトRCカーのステアリングジャイロを開発かいはつボードM5AtomMatrix / M5StickC自作じさくするためのオープンソースソフトウェアです。
  • 本格ほんかくてきなPID制御せいぎょアルゴリズムの採用さいようにより、ステアリングのアシスト機能きのうたか自由じゆう設定せっていできます。
  • M5AtomMatrixにファームウェアGyroM5Atom.inoをインストールしてRCユニットと接続せつぞくすれば完成かんせいです。
  • M5StickCにファームウェアGyroM5Stick.inoをインストールしてRCユニットと接続せつぞくすれば完成かんせいです。

ラジコン画像


DEMO

GyroM5搭載とうさいのタミヤせいRCカー(SU-01シャーシ)がRWDドリフト走行そうこうするデモ動画どうがです。

GyroM5.mp4

Features

GyroM5(v1/v2ファームウェア)は、以下いかのユニークな特徴とくちょうそなえています。 PID制御せいぎょは、汎用はんようてきなフィードバック制御せいぎょアルゴリズムであり、パラメータ4調整ちょうせいにより自由じゆうたかいセッティングが可能かのうです。

  • フィードバック制御せいぎょ機能きのう
    車体しゃたいヨーレートを目標もくひょう近付ちかづけるように操舵そうだかく自動じどう制御せいぎょ(PID制御せいぎょ)します。
  • 制御せいぎょパラメータ設定せってい機能きのう
    フィードバック制御せいぎょのパラメータをスマホから設定せっていして保存ほぞんできます。
  • リモートゲイン調整ちょうせい機能きのう
    フィードバック制御せいぎょのパラメータをCH3からリモート調整ちょうせいできます。
  • エンドポイント設定せってい機能きのう
    ステアリング角度かくどのエンドポイントを設定せっていして保存ほぞんできます。
  • スマートフォン連携れんけい機能きのう(v2)
    WiFi通信つうしんによりスマートフォン経由けいゆでジャイロ設定せってい可能かのうです。
  • サーボ周波数しゅうはすう可変かへん機能きのう(v2)
    サーボようのPWM周波数しゅうはすうとPID制御せいぎょ周期しゅうきを50Hzへるつ〜400Hzへるつ範囲はんい変更へんこうできます。
  • 走行そうこうデータ表示ひょうじ機能きのう(v2)
    PID制御せいぎょデータ(目標もくひょう入出力にゅうしゅつりょく)をLCD画面がめんにグラフ表示ひょうじできます。
  • 走行そうこうデータ保存ほぞん機能きのう(v2)
    WiFi通信つうしんによりPID制御せいぎょデータをCSVファイルでダウンロードできます。
  • 鉛直えんちょく方向ほうこう検出けんしゅつ機能きのう(v2)
    起動きどう鉛直えんちょく方向ほうこう自動じどう検出けんしゅつするので、ジャイロのシャーシ固定こてい方向ほうこう制約せいやくがありません。
  • 時刻じこく表示ひょうじ機能きのう(v2)
    現在げんざい時刻じこくをLCD画面がめん表示ひょうじできます。

Requirement

GyroM5の利用りよう必要ひつようなハードウェアの要件ようけん列挙れっきょします。

  • ホビーようRCカー 
    標準ひょうじゅんてきなRCユニットを搭載とうさいして、受信じゅしんとステアリングようサーボを3せん(-+S)で接続せつぞくするRCカーです。
  • 標準ひょうじゅんてきパソコン
    Arduino IDEをインストールでき、USBインターフェイスをそなえるスケッチようパソコンです。
  • M5StickC
    LCD解像度かいぞうどひくほうが"M5StickC"です。たかほうの"M5StickC Plus"ではありません。
  • ワイヤハーネス部品ぶひん
    サーボ延長えんちょうケーブルを1ほん、オスがたピンヘッダを1個いっこ(8ピン以上いじょう使つかいます。
  • ハンダ機材きざい
    ワイヤハーネスのてに使つかいます。

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

  • 「HOME」が、ホーム画面がめんとなり、この状態じょうたいからボタン[A]で「WIFI」へ、ボタン[B]で「ENDS」へ遷移せんいします。
  • 「WIFI」は、WiFiアクセスポイントけんWWWサーバとなり、スマートフォンとうのWWWクライアントの要求ようきゅう対応たいおうします。
  • 「ENDS」は、ステアリングCH1のエンドポイント(ステアリングようサーボ角度かくど上下じょうげげん)を設定せっていします。
  • 状態じょうたい場合ばあい、ボタン操作そうさ画面がめん表示ひょうじしてあるか、操作そうさのタイムアウトでホーム状態じょうたい「HOME」へもどります。
画面がめん 遷移せんい 解説かいせつ
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)の関係かんけい以下いかのとおりです。

  • 目標もくひょう: r = ch1_in = RC受信じゅしんからのCH1入力にゅうりょく
  • 出力しゅつりょく: y = kg*wz = RCカーの車体しゃたいヨーレート
  • 操作そうさりょう: u = ch1_out = RCサーボへのCH1出力しゅつりょく

つまりRC受信じゅしん送信そうしん)からのCH1入力にゅうりょくrを車体しゃたいヨーレートyの目標もくひょう解釈かいしゃくして、 両者りょうしゃ偏差へんさeをゼロにちかづけるフィードバック制御せいぎょにより、サーボへのCH1出力しゅつりょくuを自動じどう調整ちょうせいします。

  • 偏差へんさ: e = r - y = ch1_in - Kg*wz
  • 操作そうさりょう: u = PID(e) = Kp * (e) + Ki * INT(e) + Kd * DOT(e)

INTは積分せきぶん演算えんざん、DOTは微分びぶん演算えんざん意味いみします。

フィードバック制御せいぎょ結果けっか、グリップ走行そうこうはニュートラルステアにちかかいあたませい、ドリフト走行そうこうはヨーレートの安定あんていせい期待きたいできます。

制御せいぎょパラメータ

PID制御せいぎょのパラメータ(Kg、Kp、Ki、Kd)は、走行そうこうコンディションにより調整ちょうせいすべきであり、LCD画面がめん確認かくにん変更へんこうできます。 PID制御せいぎょ整数せいすう大文字おおもじ)は、数値すうちを0〜100に規格きかくしており、PID制御せいぎょじつ数値すうち小文字こもじ)との関係かんけい以下いかとおりです。

  • 角速度かくそくど"wz"は(ラジアン/びょう単位たんい:
    慣性かんせいセンサ(IMU)計測けいそくをセンサ感度かんどおうじて物理ぶつりりょう変換へんかんした数値すうちです。
  • 入出力にゅうしゅつりょく"ch1"は16ビットすう(0〜64k):
    PWMパルスはば(0ms〜20ms=1000ms/50Hzへるつ)をしめす16ビットすう(0〜2^16-1)です。
  • 観測かんそくゲイン: Kg = KG/20.0
    おおきくするとヨーレートに敏感びんかんとなり、ステアリングりょうたいする目標もくひょうヨーレートはちいさくなります。
  • 比例ひれいゲイン: Kp = KP/50.0
    おおきくするとカウンタステアりょうおおくなりますが、おおきすぎるとハンチングします。
  • 積分せきぶんゲイン: Ki = KI/250.0
    おおきくするとカウンタステア応答おうとうおそくなりますが、最終さいしゅうてき偏差へんさらせます。
  • 微分びぶんゲイン: Kd = KD/5000.0
    おおきくするとカウンタステア応答おうとうはやくなりますが、おおきすぎるとハンチングします。

テストよう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モーター

ドリフト走行そうこう関連かんれんする注意ちゅういてん列挙れっきょします。

シャーシ裏側

  • シャーシにかんしては、ステアリングようナックルとシャーシの干渉かんしょう部分ぶぶんけずりステアリング角度かくどを45ぐらいまでやしました。
  • サーボにかんしては、ファインスペック付属ふぞくのTSU-03だと制御せいぎょおくれてハンチングしたので、ある程度ていど高速こうそくなサーボが必要ひつようです。
  • モータにかんしては、ノーマルだとLiPoバッテリとわせないと、スピードがたときにトルク不足ふそくでドリフト移行いこうむずかしいです。
  • タイヤにかんしては、駆動くどうけい非力ひりきなので、なるべくすべりやすいタイヤがいです。

Roadmap

RCカーようジャイロ自作じさくとおして、気付きづいた改良かいりょうアイデアなどを列挙れっきょします。 いずれ対応たいおうしたいとおもいますが、趣味しゅみ開発かいはつしているので、いつ対応たいおうできるかかりません。 ご自身じしん改良かいりょうにチャレンジすれるさい参考さんこうになればさいわいです。

  • パラメータ設定せっていのスマホ対応たいおう(v2対応たいおう) 
    スマホのGUI画面がめんからジャイロ設定せってい(PIDゲインとう)を複数ふくすう管理かんりして変更へんこう可能かのうとする。
  • パラメータ調整ちょうせい完全かんぜん自動じどう
    車体しゃたい路面ろめんやタイヤにおうじたPIDゲインの最適さいてき強化きょうか学習がくしゅうなどで完全かんぜん自動じどうする。
  • スロットル制御せいぎょのアシスト
    ドリフト走行そうこう安定あんていには、ステアリングとスロットルの同時どうじ制御せいぎょ必要ひつようです。
  • 加速度かそくどセンサの有効ゆうこう利用りよう
    ヨーレートと水平すいへい加速度かそくどから車体しゃたいスリップかく推定すいていしてトラクション制御せいぎょ高度こうどする。
  • ジャイロ固定こてい方向ほうこう自動じどう検出けんしゅつ(v2対応たいおう
    鉛直えんちょく方向ほうこう起動きどう自動じどう検出けんしゅつして車体しゃたいヨーレート成分せいぶん決定けっていする。
  • PWM入力にゅうりょく方式ほうしき改良かいりょう(v2対応たいおう
    PWM入力にゅうりょくにブロック方式ほうしき関数かんすうpulseIn(...)を廃止はいしして方式ほうしきへと変更へんこうする。
  • 外部がいぶ電源でんげんとの完全かんぜん連動れんどう(v2対応たいおう
    M5StickCの内蔵ないぞうバッテリーを無効むこうして、RCアンプBECの給電きゅうでんのみでオン/オフ動作どうささせる。
  • 走行そうこうデータの記録きろく分析ぶんせき(v2対応たいおう
    走行そうこうデータをSDカードとう記録きろくして事後じご分析ぶんせきできるようにする(M5StickCからM5Stackへ変更へんこう?)。
  • サーボ周波数しゅうはすう可変かへん機能きのう(v2対応たいおう
    サーボPWM周波数しゅうはすうをパラメータで変更へんこう可能かのうとする。

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カー関連かんれん

ドリフト走行そうこう理屈りくつ

ソフトウェア関連かんれん

ハードウェア関連かんれん

以上いじょう