🚘RTK台車のプログラム🚘
◆RTK台車とは◆
卒業研究で製作している ”自律走行マイコンカー” のことを ”RTK台車” と呼んでいます。
RTK(Real Time Kinematic)とは、高精度な位置情報測位技術のことで、スマートの農業になどに代表される自動化技術に応用されています。
◆ページの概要◆
このページでは、プログラムの入手方法や導入手順のほか、RTK台車の制御理論について紹介します。
◆開発環境◆
本ページの説明では、以下のような環境を想定しています。
- OS:Windows 10 (64bit)
- Arduinoプログラム:Arduino IDEにより開発
- Pythonプログラム:VS CodeにPython用拡張機能を追加して開発
◆機器の接続方法◆
ここでは、RTK受信機やArduinoマイコン、PC周辺機器の接続方法について説明します。そのほかの機器の接続や機体の制作については、RTK台車の作り方 のページを参照してください。
それぞれの機器は、下図を参考に接続を行ってください。
◆RTK測位に使用するソフトウェア◆
RTK測位を使用して位置情報を取得するためには、u-center, strsvr というソフトウェアを使用する必要があります。strsvrは、RTKLIBに含まれるソフトウェアの1つです。ソフトウェアの役割についてまとめると次のようになります。
- u-center ⇒ 受信衛星や出力センテンス、基地局の設定を行う。
- strsvr ⇒ 基地局と移動局間のデータ転送。データストリームの中継や分流を行う。
<参考文献>
ソフトウェアのセットアップ方法については、以下のpdfファイルを参照して行ってください。
◆プログラムの導入手順◆
それでは、プログラムを入手する手順について説明します。RTK台車を走行させるためには、PC用とArduino用(マイコンボード用)の2つのプログラムを使用します。
~プログラムの入手~
- Githubのページ にアクセスします。
- ページ中央の「Code>Donload ZIP」から、ソースコードダウンロードします。
プログラムのダウンロード・解凍が出来たら、次にプログラムを動かす(実行する)準備をします。
~プログラムの導入(Arduino側)~
- Arduino IDEをインストールし、起動します。
- USBケーブルで、PCとArduinoマイコンを接続します。
- daisha_Arduino.ino を開き、プログラムをArduinoマイコンに書き込みます。
— 補足 —
マイコンボードにプログラムが書き込めないときは、COMポートの番号が選択されていない場合があります。そのような場合はArduino IDEの「ツール>シリアルポート」から、接続されているArduinoマイコンのポート番号を選択してください。
*COMポート番号の調べ方*
- コントロールパネルを開く
- 「ハードウェアとサウンド」の「デバイスとプリンタの表示」をクリックします。
- Arduino マイコンのポート番号を確認します。
~ プログラムの導入(PC側)~
- VS CodeにPython 環境を整えます。※この環境の構築方法は、こちら の記事が参考になりました。
- 補足 を参考にArduino のCOMポート番号を調べます。
- daisha_PC.py(PC側のPythonプログラム)をVS Codeで開きます。
- 112行目のCOMポート番号を、2で調べた番号に書き換えます。
- strsvrでTCP Client Options を開きます。
- 「Server Address」 と 「Port」 の内容を確認します。
- 115行目の(ソケット通信の)アドレスとポート番号を、6で調べたものに書き換えます。
◆プログラムの実行方法◆
RTK台車は、PC と Arduino側 のプログラムを同時に実行することで走行します。プログラムを実行するタイミングがポイントになるので、ここで説明したいと思います。
~プログラム実行前の準備~
RTK測位の準備
strsvr を起動しておき、正しく基地局と通信が出来ていることを確認してください。また、RTK台車のプログラムは、Fix解 が得られないと走行を開始しないようになっています。そのため(電波の届きにくい室内のような場所ではなく)見通しの良い、屋外の広い場所で走行させることがおすすめです。
経路上の点を測定
RTK台車が直線経路を走行するためには、開始地点と目標地点の位置座標が必要です。ここでは、RTK測位を用いて経路上の位置座標を測定する手順について説明します。
- Position_measurement.py を開きます。
- 122行目のCOMポートを daisha_PC.py と同じ数字に書き換えます。
- RTK台車を経路の開始地点に持っていきます。
- プログラムを実行します。
- 少し待ちます。
- 緯度・経度の位置座標の平均値が表示されるので、その値を route.txt に上書きします。(始点の部分)
- 4~6 の手順を繰り返して中間点と目的地点の位置座標も測定します。
~プログラム実行手順~
- 初めに、Pythonプログラム(daisha_PC.py) を実行します。
- VS Codeのコンソール上に、”計測開始” と表示されるのを待ちます。
- 表示を確認した直後に車体側の電源を入れ、 Arduinoマイコンを動かします。
- 3までのステップを完了したら、RTK台車が磁気コンパスのキャリブレーション(初期方位の決定など、角度測定の準備動作を行っている)が始まります。
- キャリブレーション完了後、車体が動き始めます。
◆台車側の制御プログラムについて◆
本研究のRTK台車は、経路からのずれ量と車体の角度を用いて直線走行を行っています。ずれ量は、RTK測位から得た位置情報から計算を行っています。角度は、電子コンパスから得ることができます。詳しい走行原理は、以下の RTK台車の自律走行原理 を参照してください。
◆卒業研究論文◆
詳しい走行原理については以下の卒業研究論文を参照してください。
◆ その他の実験動画 ◆
◆トラブルシューティング◆
症状 | 原因 | 対処 |
---|---|---|
位置情報が受信できない | PC がインターネットに接続されていない | PC を Wi-Fi 等を用いてネットワークに接続する |
基地局の電源が入っていない | 基地局の電源を入れる | |
アンテナが受信機に接続されていない | アンテナの断線、コネクタの接続を確認する | |
Arduinoにプログラムが書き込めない | USBポートのドライバエラー | トラブルシューティングに従ってドライバ更新 |
USBデバイスとしてArduinoが正しく認識されていない | USBを再接続または,PC再起動 | |
RTKのモジュールがセンサとして認識される(コントロールパネル→デバイスとプリンターにてCOMポートが確認できない) | 接続した際に,用途とは違うドライバがインストールされる | 新しいドライバをダウンロードして,インストールしなおす(http://www.geosense.co.jp/html/gijo_f9p_connect1.html) |
include文や、import文の行でエラーが出る | ライブラリが追加されていない | Arduino IDE、VS Code のそれぞれで、必要なライブラリを追加する |
strsvrでデータが転送されない | 基地局の電源が入っていない | 基地局用PCの電源を入れる、または再起動する |
RTKの受信機と評価ボードが接続されていない | コネクタが確実に接続されていることを確認する | |
走行中に全く動かなくなる | バッテリーの電圧が不足している | バッテリーを充電する |