fc2ブログ

安価に作る倒立2輪ロボットの紹介 その5

その5 ソフトウェアについて

今回応用させて頂いた基本ソースは、6年前に倒立2輪ロボットの製作を始めた頃に出会ったサインスマート社の
セルフバランシングロボットです。教材的なキットとして販売されていますが、WiFiモジュールが技適認証外のため
残念ですが国内で使えません。そこで、マイコンをArduinoから技適対応の通信機能を内蔵したESP系に置き換え、
BLYNK APPを使ってスマートフォンからリモコン操作が出来るようにしました。
参考にしたサインスマート社のページ  (現在は新しい機種が販売されています)

モータの取り付け方法を両面テープ止めからネジ止め式に変更しました。
M5StampPico_SBR_Top3.jpg

マイコンにESP32系を使うための変更
M5 Stamp PicoやM5 Stack Atom Liteを使うためには、基本ソースの変更が必要です。
また、リモコンに何を使うかによっても受信部やモータコントロール部が異なりますが、ここではその4で紹介の
BlynkAPPを使った場合に合わせたコードの変更を記します。

1)ライブラリーのインストール
各リンクサイトからライブラリーのzipファイルをダウンロードしてArduinoIDEにインクルードしておきます。
インストール手順:ArduinoIDE⇒スケッチ⇒ライブラリーをインクルード⇒ZIP形式のライブラリーをインストール
①MPU6050-0.4.0.zip
mpu6050ライブラリー ダウンロードサイトへのリンク
②M5Atom-0.0.5.zip
M5Atom ライブラリー ダウンロードサイトへのリンク

2)ソースコードの変更
ソースコードが長いので下記ページを開きながら参照して下さい。
行番号&注釈付きソースコードを別ページに開きます。
主な変更点
①12行目:Blynk APPから取得したauth codeを記入します。
スマートフォンとWiFのペアリング時に56行目のデバイス名「M5Stamp_BLE」が表示されるのでペアリングします。
デバイス名は任意なので好みの名称に変更出来ます。
②70~80行目:ESP32系のPWM出力の設定です。(arduinoのanalogWriteに相当)
ここでは、8ビット0~255のPWM信号を扱います。
注意:使用するマイコン M5 Stamp PicoとM5 Stack Atom liteでは使用GPIO番号が異なります。
③93~102行目:BLYNK_WRITE(V0)の設定
Blynk APPで設定したV0のボタンスイッチ(トグル)です。
走路が滑らかなフローリングの場合やカーペットやマットなどの使用条件により、モータの出力を切り替えています。
④104~167行目:BLYNK_WRITE(V1)の設定
ジョイスティックからのx、y信号の値 0~±255を前後進と左右旋回及び停止信号に変換しています。
使い易くするためにx、y方向共に0~±100の間を不感帯としています。
⑤183~197行目:PIDの調整
ここでは、私が試したkp、ki、kdの値を記していますが、個体差が有るので微調整が必要です。
時間が掛かりますが、一番安定する値を求めて下さい。
⑥199~228行目: MotorControl
ジャイロセンサーの傾斜角度及びPID制御により得たOutput値とBlynkコントローラーから受信して得た
Run_Speed値及びTurn_Speed値の合計値を、左右のモータを動かすモータドライバーへ出力します。
ArudinoIDE用txtファイルを添付しましたコピーして貼り付けます。

3)調整のポイント
①静止せずに前後何れか決まった方向に進む場合は、20行目のAngle_offsetの値を0から少し±に変更すると
僅かに前後に動くがほぼ静止するポイントが有ります。
この調整が面倒な方は、ジャイロセンサーの取り付け方法をシーソー式とし、傾きを僅かに変えることにより静止
ポイントを簡単に見付けることが出来ます。但し調整後に動かないよう固定する構造が必要です。
②前項の⑤に記したPID制御の設定値ですが、kp、ki、kd各々にポテンションメータを置き、A/D変換した値により
調節するのが最良ですが、今回は省略しています。
どうしても必要な方は、スマートフォンのBlynkAPPにスライダーを3個追加してその値を利用する方法も有ります。
但し、一度値を求めたらその後は必要なく、固定値に戻せばよいので興味のある方はお試し下さい。
③前項③に記した走路によるパワーの切り替えですが、これもBlynkAPPにスライダーを2個追加することにより
連続した出力の変更が可能です。興味のある方はお試し下さい。

4)コントローラーとオペレーション
近年幼児期からスマホやゲーム機に親しむ子供が多く、スマホのジョイスティックの操作などお手の物だと思います。
しかし、後期高齢者の私は工作が得意なのにオペレーションが下手で子供達のように上手く操作が出来ません。
このバランシングロボットの欠点は少しスピードを上げると転倒します。これを転倒しないようにジョイスティックを
操作するのが大変難しく、練習が必要と痛感しています。

5)超安定バランシングロボットのお勧め
今回は安価にバランシングロボットを作るのが主題で、初めてのバランシングロボット体験とプログラムの勉強には
適材ですが、もっと安定した高性能のバランシングロボットを希望される方にはjjRobot社のB-Robot Evo2が
お勧めです。キットも販売されていますが、使用するマイコンが技適認証外なので国内で使うことが出来ません。
そこで、技適マークが付いたマイコンを使って作ったのが、昨年に紹介しましたM5 Stack ATOM Lite を使用の
B-Robot Evo2 Paradise Modelです。 このBlogのカテゴリー「倒立振子型ロボット」にてご覧頂けます。

前回参照:現在このバランシングロボットに使えるステッピングモーターが通常1個1500円以上しますが
4個セットで400円で販売されています。残り僅かです!興味のある方にはラストチャンスだと思います。
高速でも転倒し難く、海外では自作したB-Robot Evo2を持ち寄り、専用コースでレース競技も行われています。

次回紹介予定のNew Evo2
New Evo2は、上記の1個約100円のステッピングモータを使った簡易型紹介用モデルです。
ホイールやホイールフランジも市販品なのでCNC加工機が無くても作れるように設計しました。
New_Evo2.jpg

皆さまの参考になれば幸いです。
by Paradise

スポンサーサイト



テーマ : 電子工作
ジャンル : 趣味・実用

コメントの投稿

非公開コメント

プロフィール

CNC_Paradise

Author:CNC_Paradise
木工・彫刻・機械工作・電子工作が
大好きで自作のCNCを使って工作を
楽しんでます。

最新記事
最新コメント
月別アーカイブ
カテゴリ
何でも工作室
検索フォーム
RSSリンクの表示
リンク
QRコード
QR