http://www.brokking.net/yabr_main.html
1ヶ月余し前、YouTubeにYABR(倒立バランシングロボット)が掲載されました。このロボットの安定した動きが目に留まり このロボットの制御を応用してライントレースが出来そうだと直感、倒立ロボットをライントレースに使うのは難しいが挑戦 してみました。 このページには動画及び回路図やSketch(ソフトウエアー)などが揃っていますので、電子工作に興味のある方なら 問題なく再現出来ますが、無線モジュール等は同じ部品を使うと日本の電波法に触れますのでご注意ください。 |
私は、以前に作ったB-ROBOTのフレームや部品を再利用するため、YABRとは外観をはじめマイコンやモータードライバー 等の主要部品が異なりますが、今迄の倒立ロボット製作の経験から充分に再現性が有ると判断して製作を進めました。 特にYABRでは、無線操縦用に中国製の安いシリアルトランシーバーモジュールを使ってますが、国内では使えません。 そこで、技術適合マークが付いたWiFiモジュールを使い、スマホやタブレットからリモート操作が出来るように変更しました。 注意:YABRのPID制御を正しく動作させるには、タイヤサイズ(直径51mm)を守ることです。大きく違うと不安定になります。 |
WABRと私のYABRの部品の違い | ||
部品名 | 本家YABR | YABRもどき |
マイコン | Arduino pro mini | Arduino NANO |
ステッピングモータードライバー | DRV8825 | A4988 |
ステッピングモーター | 35mm | 39mm |
ワイヤレスユニット | 2.4G wireless serial transceiver | Wifi module ESP8266-Wroom-02 |
リモコン・コントローラ | ニンテンドーヌンチャック | スマホまたはタブレット |
バッテリー | 11.1V 2200mAh Li-po Battery | 7.4V 920mA lithium-ion battery |
ロボット本体のArduinoとWiFiモジュールESP8266はお互いのRXDとTXDがクロス状態に繋がっていて、WiFiモジュールが 受信したスマホまたはタブレットからのOSC信号を受信し、ロボットを左右前後に移動します。 WiFiモジュールESP8266にはスマホまたはタブレットからのOSC信号を受信し、Arduinoに受け渡すためのSketchを書き込む 必要が有ります。ここからWiFiモジュールESP8266用Sketchのページが開きます。 WiFiモジュールESP8266のSketch書き込みについては、No.37:簡単に作れるNodeMCU基板の工作を参考にして下さい。 |
ロボット本体のマイコン(Arduino)に書き込むSketchは、先に紹介しましたJoop brokking氏のホームページから ダウンロード出来るのでArduino IDEを使って書き込みます。 尚、WiFiを使ってリモート操作する場合も本体側Sketchに変更がありません。但し、ライントレース機能を追加する場合は、 自分でSketchを変更する必要があります。 私は、Sketchの操縦部分を変更して基板に追加したスイッチにより、WiFiコントロールとライントレースを切り替えてますが TouchOSCにトグルボタンを追加してスマホから切り替えることも出来ます。 |
先に述べましたが、本家のYABRではシリアルトランシーバーモジュールを使って本体とニンテンドーのヌンチャックを通信 してロボットをリモート操作しますが、このモジュールは国内で使えません。替わりに技術適合マークの付いたWiFiモジュール ESP8266を本体に使い、コントローラ側のスマホまたはタブレットとWiFi通信してロボットをリモート操作します。 TouchOSCアプリ(有料)をインストールして使います。 |
模擬画面の上でマウスを右クリックすると部品が選択できます。ここでは表題を入れるlavelとxy padを選びます。 また、画面左側の設定を参考にValue RangeにFrom 0 To 127を入力とInvert Yにチェック入れます。 出来上がったらSave Asからファイルネームを付けてセーブし、スマホまたはタブレットに転送しますが、同期をとって WiFi転送する方法も有りますが、私はPCに直接スマホまたはタブレットをUSB接続して転送してます。 |
スマホ又はタブレットのOSにはiOS系とandroid系があります。私はandroid系のタブレットしか持ってないので android系のみの説明となります。 先ず、ロボットのハードウエア―が完成していてることとTouchOSCアプリがインストールされていることを前提とします。 ①ロボットの電源を入れスマホ又はタブレットの設定を開き、無線とネットワークのWiFiの項目を開きます。 ②利用可能なネットワークに「YABR-OSC」が表示されるはずです。 (先にWiFiモジュールESP8266に書き込んだSketchで設定したID「YABR_OSC」と任意のパスワード) ③表示されたYABR-OSCをタップするとパスワードが要求されるので入力して確定します。 ④パスワードが間違ってなければ正常に接続されます。 ⑤次にTouchOSCアプリを開くとSettngs画面が開くので一番上の項目OSCをタップします。 ⑥開いたOSC項目一番上のHostに192.168.4.1と入力、次のPortに8000と入力、その下のPortにも8000と入力、 その下のZeroconf NameにはYABR_OSCと入力、その下のlocalIP Addressに192.168.4.2が表示されればOK ⑦次に元のSettngs画面に戻り、Layout項目をタップし、2行目のAdd form File項目をタップし、次のimport layout画面 下部のDownload項目をタップします。 ⑧先のTouchOSCの編集で作ったOSCドキュメントファイルをスマホまたはタブレット転送してあれば、そのファイル名が 表示され、そのファイルを選択するとLayout画面に替わり、ここでそのファイルのチェックボタンをONにすると元の Settings画面に戻るので下部のDoneをタップするとOSCコントロール画面が現れ、XY-Padを使ってロボットの操作が 出来るようになります。 |
有料のTouchOSCは、機能が豊富で見た目のデザインが優れていますが、無料(ドネーション有り)のAndrOSCを 同じように使うことが出来ます。但し、各部品に表示するテキストの拡大や装飾機能が有りません。 使い方の説明が長いので別ページで表示しますが、ロボット操作などに簡単に応用出来て有用だと思います。 |
ライントレースの始めようと思ったのは、以前にAmazonでIRセンサーTCRT5000を10個170円で購入してたからです。 TCRT5000の出力をArduinoのアナログ端子に入力し、入力電圧を0~255の数値に変換、私はしきい値を100とし、100以上を 白、100以下を黒として白いパネルと黒いビニールテープを判定します。 ここでは3個のセンサーを使いラインを読んで います。 私には初めてのライントレースですが、初めはスピードが出過ぎて脱線しましたが、今は、ラインを外さずに 周回するようになりました。 しかし、カーブが続くと旋回信号が頻繁となり、前進信号が途切れがちになるためにスピードが落ちたり一時停止となり、 次に前進するまでに少し時間が掛かります。この問題を改善するが今後の課題です。 (周回の様子は動画の後半でご覧頂けます) |
ライントレースのコースは厚みが7㎜、大きさが900㎜×600㎜の白い発泡スチロール製パネルに電工用の 黒いビニールテープを張り付けて作りました。 |
如何でしたか?Joop brokking氏が企画されたYABRの基本Sketchを利用させて頂き、安心して国内で遊べるように 通信方法の変更やライントレース機能を追加しましたが、1ヶ月余しで何んとか発表出来るようになりました。 YABRに興味を持ち製作される方は、最初は基本機能から始め、完動後にライントレース等の付加価値を追加して ください。 最後までご覧頂き有難うございました。 興味のある皆様の参考になれば幸いです。 |