M5StackのNTRIPプログラムを稼働実験しました。WiFI経由で文京区のCQ出版のNTRIPサーバーからRTCMデータを受信してF9PdでRTK測位実験ができました。
※スキーの運動軌跡測定には、RTKがぴったりであることが判ってきました。
精密な運動軌跡ばかりでなくスキー板のHeading角度も判るので、進行角と板Heading角度
の差をとると板の横滑り角が取得できるので、スキーターンの評価ができる画期的なセンシング
技術であることが判りました。
※2022年2月更新
最新作のSkiTurnAnalyzerのデモ動画
※2021年3月18日追記 1年で開発はどんどん進んでます。海外勢より一歩先行ってます。
海外RTKボードメーカーのHPでスキー測定の紹介用にRTK SkiTurnAnalyzer[STA]の
記事を作りました。RTKでスキーターンの軌跡と速度とheading角を測定できることを
世界にアピールしてます。欧州からのアクセスが多いので英語版で紹介してます。
【STA】RTK Ski Turn Analyzer[STA] Introduction <for DIY>
※2021年3月2日追記
RTK始めて1年経過して、スキーターン軌跡の精密計測に成功しました。
加速度センサでは、難しいモーション測定が簡単に可能になる点が素晴らしいです。
棒にアンテナつけて振り回して遊んでいて、スキーも測定できると判りました。
●結果
自宅前庭で、アンテナを手でもって振り回してみました。
下の楕円が勢いよく手で振り回した軌跡です。
サンプリング5Hz、ucenterへUSBシリアル出力230400bpsです。
基準局が169km離れたCQ出版NTRIPサーバーです。
この時の精度が4cm前後で、動かすと4~6cmまで振れます。
交信OKな衛星数(黄緑)20~24個で時々FIXします。
●測定キットをお盆に載せた
RTK測位実験は、屋外に持ち運びしないと測位できないので、頻繁に基板とアンテナとPCを持ち運ばないといけません、未だ、実装基板になってないのでちょっと動かすと基板が浮いてしまう状態で危ないので、一枚板に
強力粘着テープで固定して運ぶことにしました。
移動局からUSBケーブルが2本とアンテナケーブル1本がでてくるので
絡み合わないように段ボールを切って固定板を作ってあります。
アンテナも5mあるので、ループで固定して運びます
●動作確認したプログラム
動作確認したプログラム、オリジナルのNTRIPを受信するサンプルプログラムは、下記でちょっとだけ、自分用に変更してあります。
トラ技2019年10月号付録第四章
「Wi-FiマイコンESP32とキットで作るポータブルRTK局」
という記事を学びながら、いじってみました。
RTK関連で有名な茨城高専の岡本修教授の研究室の方が投稿された記事みたいです。記事とプログラムの公開に感謝します。
#include <NTRIPClient.h>
/*
* NTRIP client for Arduino Ver. 1.0.0
* NTRIPClient Sample
* Request Source Table (Source Table is basestation list in NTRIP Caster)
* Request Reference Data
*
* M5Stack=>SErial TX#17 SimpleRTK2lite
*/
//#include <ESP8266WiFi.h> //Need for ESP8266
#include <WiFi.h> //Need for ESP32
#include “NTRIPClient.h”
#include”M5Stack.h”;
const char* ssid = “*************”;//自分のWIFIルーターssid
const char* password = “*************”;//自分のWIFIルーターのパスワード
int n=0;
int nbyte;
char* host = “160.16.134.72”;//CQ出版のNTRIPサーバーIP番号
int httpPort = 80; //CQ出版のport 80 is default port of NTRIP caster
char* mntpnt = “CQ-F9P”;//”CQ出版のマウント名ntrip caster’s mountpoint”;
char* user = “guest”;//CQ出版のサーバー接続IDは “guest” です。set “ntrip caster’s client user”;
char* passwd =”guest”;//CQ出版のサーバーパスワードは”gusest”です。”ntrip caster’s client password”;
NTRIPClient ntrip_c;
void setup() {
M5.begin();
// put your setup code here, to run once:
Serial.begin(115200);
Serial2.begin(115200,SERIAL_8N1,16,17);//*******(baudrate,config,RX,TX)*******
delay(10);
Serial.print(“Connecting to “);
//M5.Lcd.print(“Connecting to “);
Serial.println(ssid);
// M5.Lcd.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
//Serial2.print(“.”);
// M5.Lcd.print(“.”);
}
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
Serial.println(“Requesting SourceTable.”);
if(ntrip_c.reqSrcTbl(host,httpPort)){
char buffer[512];
delay(5);
while(ntrip_c.available()){
ntrip_c.readLine(buffer,sizeof(buffer));
Serial.print(buffer);
//M5.Lcd.print(buffer);
}
}
else{
Serial.println(“SourceTable request error”);
//M5.Lcd.print(“SourceTable request error”);
}
Serial.print(“Requesting SourceTable is OK\n”);
//M5.Lcd.print(“Requesting SourceTable is OK\n”);
ntrip_c.stop(); //Need to call “stop” function for next request.
Serial.println(“Requesting MountPoint’s Raw data”);
//M5.Lcd.print(“Requesting MountPoint’s Raw data”);
if(!ntrip_c.reqRaw(host,httpPort,mntpnt,user,passwd)){
delay(15000);
ESP.restart();
}
Serial.println(“Requesting MountPoint is OK”);
// M5.Lcd.print(“Requesting MountPoint’s Raw data”);
}
void loop() {
// put your main code here, to run repeatedly:
while(ntrip_c.available()) {
n++;
char ch = ntrip_c.read();
Serial2.print(ch); //binary
if (Serial2.available() > 0){nbyte=Serial2.read();}
Serial.print(nbyte,HEX); //これうまく動いてない
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(10, 10);
M5.Lcd.println(nbyte);
//Serial2.print(ch,HEX);//monitor
// M5.Lcd.print(ch,HEX);
}
} |
●以後
屋外運動の軌跡を精度よくとれそうな感触ですので、本格的な精度評価の準備をはじめます。やることたくさんあるので、12月末までにおえて、1月からスキー場でスキーターンの軌跡が精度よく測定できることを目標に進めます。
※2021年2月追記
1年経過して、1セット増設して2セットを左右スキーの取り付けてスキーターンの詳細な軌跡と角度、速度、高度などを瞬時に測定できる小型システムを開発しました。板の動きを細かく観察できてスキー動作の解析が進んできてます。RTKカテゴリーhttp://shinshu-makers.net/shinshu_makers/?cat=37
【RTK2021】RTKモニターにコマ送り機能追加<板の動きがよく判る>
※2020年2月追記
スキーターン 精密な位置と横滑り角の測定に成功しました。
単なる緯度経度測位でなくMovingBase法という2個のアンテナ間の3次元座標をミリ単位で測定できる
技術がUBLOX F9Pに搭載されてます。これを活用すると運動の軌跡とベクトルが正確に測定できることが
わかりました。いろいろな屋外運動につかえそうなので、学会とか研究者には朗報です。
【L-RTK】MovingBaseでスキー滑走測定した<MBは凄い技術だ>