■2016/10/12(水)
これが、ロボット1号機です。
操縦は自宅のPCで、送られてくる動画(スマホ・アプリを流用)を見ながらの手動と、RTK NAVIによる緯度経度情報を用いたプログラミング(VB2013で開発)走行。
■主な仕様
・バッテリー リチウムイオン 12V20Ah(約10時間連続動作可能)
・スマホ Android2.3(中古):操縦のWiFi通信→ioio-OTG、動画転送
・シャーシー 4WD・ギアドモーター
・NAVI LEA-M8T(Rover)+LEA-M8T(Base)のRTK
・LEDヘッドライト 2基
・草刈り機 ホームセンター購入品を改造(12V動作)
・草刈り機過電流防止回路搭載
■操縦システム
自宅PCでの操縦システムの操作画面は、以下。
■プログラミング・走行
まだ、完成域とは言えませんがプログラミング走行の試験走行軌跡は以下です。
多少、右往左往しますがプログラムされたとおり自律走行します。
因みに、行ったり来たりのプログラムは、こんな感じのサブルーチンで実現してます。地球の座標系では、あまりに壮大すぎるので、私の実験場で扱いやすい座標系を定義して、行先のX,Y座標を指示してます。青の太線が10m間隔となっています。
'******************************************** '* GoToXY3 指定座標へ向かう '******************************************** Private Sub GoToXY(ByVal X As Double, ByVal Y As Double) Dim DCR, DCL As Double Dim d As Double = 0 Dim Ratio = 180 / 4 '45度もずれたらDCR,Lを0にする。 Dim Direction As Double Dim WaitTime As Long Dim xx, yy, ii2, kk2 As Double xdydtoxy(X, Y, Xx, Yy) 'xd=10,yd=10 xytoik(Xx, Yy, ii2, kk2) d = Distance(RTKlongitude, RTKlatitude, kk2, ii2) '目標座標までの距離 Direction0 = GetEarthAngle(RTKlatitude, RTKlongitude, ii2, kk2) TurnDirection(Direction0) Command(0) = "GoToXY" While (Command(0) = "GoToXY" And 0.5 < d) TankForward() Wait(2000) Direction0 = GetEarthAngle(RTKlatitude, RTKlongitude, ii2, kk2) Diff0 = RTKDiffCurToSet() If Diff0 < -5 Then TankLeftBrake() WaitTime = System.Math.Abs(Diff0) * 15 If 1000 < WaitTime Then WaitTime = 1000 End If Wait(WaitTime) ElseIf 5 < Diff0 Then TankRightBrake() WaitTime = System.Math.Abs(Diff0) * 15 If 1000 < WaitTime Then WaitTime = 1000 End If Wait(WaitTime) End If TextBox8.Text = WaitTime.ToString My.Application.DoEvents() d = Distance(RTKlongitude, RTKlatitude, kk2, ii2) '目標座標までの距離 End While TankStop() End Sub
★碁盤目走行
For y = 0 To 20 Step 5
For x = 5 To 20 Step 2
GoToXY(x, 35 – y)
GoToXY(x, 30 – y)
GoToXY(x + 1, 30 – y)
GoToXY(x + 1, 35 – y)
Next x
Next y
のようにGoToXYのサブルーンを使うと、極めてシンプルなプログラムで碁盤の目走行ができます。
因みに、自宅の庭のロータリー周回では、こんな感じです。
★自宅庭周回
Do
GoToXY(16.69, 65.64)
GoToXY(18.13, 53.83)
GoToXY(15.64, 53.04)
GoToXY(12.56, 54.48)
GoToXY(9.07, 57.04)
GoToXY(7.7, 60.32)
GoToXY(8.35, 63.43)
GoToXY(9.87, 66.68)
GoToXY(14.66, 65.9)
Loop
■RTK NAVI精度
以下が、約30分間のRTK NAVI測位結果です。
楽勝で±5cmに入っています。Base局もLEA-M8Tによる自前です。
■自前・電子基準点(Base)
自前電子基準点(2F物置小屋の屋根の上)を設置した時のデータです。国土地理院運営の最寄りの電子基準点とRTK Fixさせて、自前基準点の緯度・経度・高度を精密に測位して値を得ます。国土地理院の電子基準点のリアルタイム・データは高価ですが過去データは無料なので、後処理解析で行います。自前基準点の測位Rawデータを保存し、これと同時刻のデータを国土地理院・基準点からダウンロードし、後処理RTK Fixさせます(Real Timeとは言えませんが)。
Fix部分の時間は、あまり長くないですが、この時の測位ゆらぎは僅か、±1mm程度です。RTK Navi 凄い!!!
これで、得た測位データを使って、自前電子基準点として使っています。
■気になっていること
RTK組み込みのu-blox NEO-M8Pの実力は如何に?。モジュールは既に、巷に出回っているので、モチベーションのハードルを越えられたらやってみたい。RTKは既に実用済みなので、あまりモチベーションは上がらない(破格値¥3,628のLEA-6Tでも実験・実現済み) 。
もう一つは、電離層誤差を大幅改善するはずの、2周波みちびき衛星。こちらには、興味をそそられるが、まだモジュールが手に入らない。何社かが、開発中なので入手出来るようになったら、やってみたい。Base局無し(まだ全然勉強してないが、国土地理院のデータを基準とした測位補強L6信号の受信が必要?➡少し勉強してみた。期待していたが、がっかり。LEX信号経由で、電子基準点データをもらって、RTK or PPP測位するだけ+α?)に、数センチ精度が本当にだせるのだろうか?。
また、詳細は不明だがu-bloxが2018年までに、インターネットや衛星通信で補正情報提供を始めるとアナウンスしていますね。ユーザーが、Base局を用意するのを不要にすると言ってます(国土地理院がリアルタイムRawデータを無料開放すれば、と思う)。
★ROBOT1号機・システム構成
最終的に、試行錯誤の結果、システム構成は以下のようになりました。当初操縦は、スマホ・ioio-OTGでしたが、最終的には、ESP-WROOM02・Arduino Nano(今ならESP32・1個で可能)としました(問合せがありましたので、掲載しました)。
■サイト内リンク
Make: Japan | 高精度芝刈りロボット says:
[…] ロボット1号機 自律走行・作業・芝刈り等を目指して・超高精度CM級NAVI搭載 […]