RTK Torch with PointPerfect MQTT (Deprecated) test results and Configuration printout

I put my RTK Torch in the front yard where the horizon is obscured by houses, trees, hills, etc. Perhaps not quite as obscured as my farm, but definitely not flat land like Iowa (I’m in East Tennessee)

I used SW MAPS and captured 7 points keeping the RTK Torch in the exact same spot for all data collection. I took three 60 point averages, three 200 point averages, and lastly (P7) one that went over 600 points but I didn’t notice screen capture died and stopped recording at 600. It might have been 1,000 readings averaged.

I had ChatGPT calculate the distances of the first 6 points from the 7th. Furthest point was 4.01cm away, and closes 1.03 CM

I think I have my accuracy and reliability as good as I can get it in remote and forested locations

I will post profile configuration as a message too.

Thoughts - Do I have settings right?? this seems to be well within that 2cm accuracy with PointPerfect MQTT Deprecated Corrections (No NTRIP available to me)

table with an left most column showing distance to P7 in centimeters:

Point Latitude Longitude Distance to P7 (m) Distance to P7 (ft) Distance to P7 (in) Distance to P7 (cm)
P1 35.6783221350 -84.2681977140 0.010335 0.0339 0.407 1.03
P2 35.6783221650 -84.2681976930 0.011485 0.0377 0.452 1.15
P3 35.6783220870 -84.2681976200 0.020286 0.0666 0.799 2.03
P4 35.6783219010 -84.2681975240 0.040119 0.1316 1.579 4.01
P5 35.6783219740 -84.2681976580 0.026251 0.0861 1.033 2.63
P6 35.6783220070 -84.2681978560 0.018414 0.0604 0.725 1.84
P7 35.6783221700 -84.2681978200 0.000000 0.0000 0.000 0.00

Printout of “Profile” #1 which was in use for data collection

The forum does something to [AT].com so there may be some lines which need correction

SparkFun RTK Torch v2.2
** Bluetooth SPP and BLE broadcasting as: Torch Rover-7CC2 **
Menu: Main

  1. Configure GNSS Receiver
  2. Configure GNSS Messages
  3. Configure Base
  4. Configure Ports
  5. Configure WiFi
  6. Configure TCP/UDP
    f) Firmware Update
    i) Configure Corrections Priorities
    p) Configure PointPerfect
    r) Configure Radios
    s) Configure System
    t) Configure Instrument Setup
    u) Configure User Profiles
    +) Enter Command line mode
    x) Exit
    u

Menu: User Profiles

  1. Select PPerfectTiltOFF ← Current
  2. Select (Empty)
  3. Select (Empty)
  4. Select (Empty)
  5. Select (Empty)
  6. Select (Empty)
  7. Select (Empty)
  8. Select (Empty)
  9. Edit profile name: PPerfectTiltOFF
  10. Set profile ‘PPerfectTiltOFF’ to factory defaults
  11. Delete profile ‘PPerfectTiltOFF’
  12. Print profile
    x) Exit
    12
    Select the profile to be printed (1-8): 1

sizeOfSettings=4000
rtkIdentifier=34
antennaHeight_mm=0
antennaPhaseCenter_mm=116.50
coordinateInputType=0
fixedAltitude=1560.0890
fixedBase=0
fixedBaseCoordinateType=0
fixedEcefX=-1280206.568
fixedEcefY=-4716804.403
fixedEcefZ=4086665.484
fixedLat=40.090294790
fixedLong=-105.185057610
observationSeconds=60
observationPositionAccuracy=5.00
surveyInStartingAccuracy=2.0
enablePrintBatteryMessages=0
shutdownNoChargeTimeoutMinutes=0
enableBeeper=1
bluetoothRadioType=2
sppRxQueueSize=2048
sppTxQueueSize=32
correctionsSourcesLifetime=30
correctionsPriority_External Radio=3
correctionsPriority_ESP-Now=4
correctionsPriority_LoRa Radio=5
correctionsPriority_Bluetooth=2
correctionsPriority_USB Serial=6
correctionsPriority_TCP (NTRIP)=1
correctionsPriority_L-Band=7
correctionsPriority_IP (PointPerfect/MQTT)=0
debugCorrections=0
debugEspNow=0
enableEspNow=0
espnowPeerCount=0
espnowPeer_0=00:00:00:00:00:00,
espnowPeer_1=00:00:00:00:00:00,
espnowPeer_2=00:00:00:00:00:00,
espnowPeer_3=00:00:00:00:00:00,
espnowPeer_4=00:00:00:00:00:00,
autoFirmwareCheckMinutes=1440
debugFirmwareUpdate=0
enableAutoFirmwareUpdate=0
serialGNSSRxFullThreshold=50
uartReceiveBufferSize=2048
debugGnss=0
enablePrintPosition=0
measurementRateMs=1000
navigationRate=1
gnssConfiguredOnce=1
gnssConfiguredBase=0
gnssConfiguredRover=1
debugHttpClientData=0
debugHttpClientState=0
debugMqttClientData=1
debugMqttClientState=1
mdnsEnable=1
mdnsHostName=rtk
debugNetworkLayer=0
printNetworkStatus=1
debugNtripClientRtcm=0
debugNtripClientState=0
enableNtripClient=0
*********** reference to RTK2go here

ntripClientCasterHost=rtk2go.com

ntripClientCasterPort=2101

ntripClientCasterUser=test@test.com

ntripClientCasterUserPW=
ntripClientMountPoint=bldr_SparkFun1
ntripClientMountPointPW=
ntripClientTransmitGGA=1
debugNtripServerRtcm=0
debugNtripServerState=0
enableNtripServer=0
enableRtcmMessageChecking=0
ntripServerCasterHost_0=rtk2go.com
ntripServerCasterHost_1=
ntripServerCasterHost_2=
ntripServerCasterHost_3=
ntripServerCasterPort_0=2101
ntripServerCasterPort_1=2101
ntripServerCasterPort_2=2101
ntripServerCasterPort_3=2101

ntripServerCasterUser_0=test@test.com

ntripServerCasterUser_1=
ntripServerCasterUser_2=
ntripServerCasterUser_3=
ntripServerCasterUserPW_0=
ntripServerCasterUserPW_1=
ntripServerCasterUserPW_2=
ntripServerCasterUserPW_3=
ntripServerMountPoint_0=bldr_dwntwn2
ntripServerMountPoint_1=
ntripServerMountPoint_2=
ntripServerMountPoint_3=
ntripServerMountPointPW_0=WR5wRo4H
ntripServerMountPointPW_1=
ntripServerMountPointPW_2=
ntripServerMountPointPW_3=
bluetoothInterruptsCore=1
btReadTaskCore=1
btReadTaskPriority=1
debugMalloc=0
enableHeapReport=0
enablePrintIdleTime=0
enablePsram=1
enableTaskReports=0
gnssReadTaskCore=1
gnssReadTaskPriority=1
gnssUartInterruptsCore=1
handleGnssDataTaskCore=1
handleGnssDataTaskPriority=1
i2cInterruptsCore=1
measurementScale=0
printBootTimes=0
printPartitionTable=0
printTaskStartStop=0
psramMallocLevel=40
rebootMinutes=0
resetCount=0
periodicDisplay=137975824388
periodicDisplayInterval=15000
autoKeyRenewal=1
debugPpCertificate=0
geographicRegion=0
lastKeyAttempt=1755715862
lbandFixTimeout=180
************** U-blox.[Com] reference here

pointPerfectBrokerHost=pp.services.u-blox.com

pointPerfectClientID=7f1CLIENT ID GOES HERE
pointPerfectCurrentKey=D9 KEY GOES HERE
pointPerfectCurrentKeyDuration=2419199999
pointPerfectCurrentKeyStart=175 KEY GOES HERE
pointPerfectDeviceProfileToken=
pointPerfectKeyDistributionTopic=/pp/ubx/0236/ip
pointPerfectNextKey=93FKEY GOES HERE
pointPerfectNextKeyDuration=2419199999
pointPerfectNextKeyStart=175KEY GOES HERE
pplFixTimeoutS=180
regionalCorrectionTopics_0=/pp/ip/us
regionalCorrectionTopics_1=/pp/ip/eu
regionalCorrectionTopics_2=
regionalCorrectionTopics_3=/pp/ip/kr
regionalCorrectionTopics_4=
pointPerfectService=5
profileName=PPerfectTiltOFF
enablePrintRingBufferOffsets=0
gnssHandlerBufferSize=4096
dynamicModel=0
enablePrintRoverAccuracy=1
minCNO=17
minElev=12
enablePrintRtcSync=0
dataPortBaud=115200
echoUserInput=1
enableGnssToUsbSerial=0
radioPortBaud=57600
serialTimeoutGNSS=1
disableSetupButton=0
enablePrintDuplicateStates=0
enablePrintStates=1
lastState=0
debugTcpClient=1
enableTcpClient=0
tcpClientHost=
tcpClientPort=2948
debugTcpServer=0
enableTcpServer=0
tcpServerPort=2948
tcpUdpOverWiFiStation=1
timeZoneHours=0
timeZoneMinutes=0
timeZoneSeconds=0
debugUdpServer=0
enableUdpServer=0
udpServerPort=10110
enableGalileoHas=0
enableImuCompensationDebug=0
enableImuDebug=0
enableTiltCompensation=0
constellation_BeiDou=1
constellation_Galileo=1
constellation_GLONASS=1
constellation_GPS=1
constellation_QZSS=0
messageRateNMEA_GPDTM=0.00
messageRateNMEA_GPGBS=0.00
messageRateNMEA_GPGGA=1.00
messageRateNMEA_GPGLL=0.00
messageRateNMEA_GPGNS=0.00
messageRateNMEA_GPGRS=0.00
messageRateNMEA_GPGSA=1.00
messageRateNMEA_GPGST=1.00
messageRateNMEA_GPGSV=1.00
messageRateNMEA_GPRMC=1.00
messageRateNMEA_GPROT=0.00
messageRateNMEA_GPTHS=0.00
messageRateNMEA_GPVTG=0.00
messageRateNMEA_GPZDA=0.00
messageRateRTCMBase_RTCM1001=0.00
messageRateRTCMBase_RTCM1002=0.00
messageRateRTCMBase_RTCM1003=0.00
messageRateRTCMBase_RTCM1004=0.00
messageRateRTCMBase_RTCM1005=1.00
messageRateRTCMBase_RTCM1006=0.00
messageRateRTCMBase_RTCM1007=0.00
messageRateRTCMBase_RTCM1009=0.00
messageRateRTCMBase_RTCM1010=0.00
messageRateRTCMBase_RTCM1011=0.00
messageRateRTCMBase_RTCM1012=0.00
messageRateRTCMBase_RTCM1013=0.00
messageRateRTCMBase_RTCM1019=0.00
messageRateRTCMBase_RTCM1020=0.00
messageRateRTCMBase_RTCM1033=10.00
messageRateRTCMBase_RTCM1042=0.00
messageRateRTCMBase_RTCM1044=0.00
messageRateRTCMBase_RTCM1045=0.00
messageRateRTCMBase_RTCM1046=0.00
messageRateRTCMBase_RTCM1071=0.00
messageRateRTCMBase_RTCM1072=0.00
messageRateRTCMBase_RTCM1073=0.00
messageRateRTCMBase_RTCM1074=1.00
messageRateRTCMBase_RTCM1075=0.00
messageRateRTCMBase_RTCM1076=0.00
messageRateRTCMBase_RTCM1077=0.00
messageRateRTCMBase_RTCM1081=0.00
messageRateRTCMBase_RTCM1082=0.00
messageRateRTCMBase_RTCM1083=0.00
messageRateRTCMBase_RTCM1084=1.00
messageRateRTCMBase_RTCM1085=0.00
messageRateRTCMBase_RTCM1086=0.00
messageRateRTCMBase_RTCM1087=0.00
messageRateRTCMBase_RTCM1091=0.00
messageRateRTCMBase_RTCM1092=0.00
messageRateRTCMBase_RTCM1093=0.00
messageRateRTCMBase_RTCM1094=1.00
messageRateRTCMBase_RTCM1095=0.00
messageRateRTCMBase_RTCM1096=0.00
messageRateRTCMBase_RTCM1097=0.00
messageRateRTCMBase_RTCM1104=0.00
messageRateRTCMBase_RTCM1111=0.00
messageRateRTCMBase_RTCM1112=0.00
messageRateRTCMBase_RTCM1113=0.00
messageRateRTCMBase_RTCM1114=0.00
messageRateRTCMBase_RTCM1115=0.00
messageRateRTCMBase_RTCM1116=0.00
messageRateRTCMBase_RTCM1117=0.00
messageRateRTCMBase_RTCM1121=0.00
messageRateRTCMBase_RTCM1122=0.00
messageRateRTCMBase_RTCM1123=0.00
messageRateRTCMBase_RTCM1124=1.00
messageRateRTCMBase_RTCM1125=0.00
messageRateRTCMBase_RTCM1126=0.00
messageRateRTCMBase_RTCM1127=0.00
messageRateRTCMRover_RTCM1001=0.00
messageRateRTCMRover_RTCM1002=0.00
messageRateRTCMRover_RTCM1003=0.00
messageRateRTCMRover_RTCM1004=0.00
messageRateRTCMRover_RTCM1005=0.00
messageRateRTCMRover_RTCM1006=0.00
messageRateRTCMRover_RTCM1007=0.00
messageRateRTCMRover_RTCM1009=0.00
messageRateRTCMRover_RTCM1010=0.00
messageRateRTCMRover_RTCM1011=0.00
messageRateRTCMRover_RTCM1012=0.00
messageRateRTCMRover_RTCM1013=0.00
messageRateRTCMRover_RTCM1019=0.00
messageRateRTCMRover_RTCM1020=0.00
messageRateRTCMRover_RTCM1033=0.00
messageRateRTCMRover_RTCM1042=0.00
messageRateRTCMRover_RTCM1044=0.00
messageRateRTCMRover_RTCM1045=0.00
messageRateRTCMRover_RTCM1046=0.00
messageRateRTCMRover_RTCM1071=0.00
messageRateRTCMRover_RTCM1072=0.00
messageRateRTCMRover_RTCM1073=0.00
messageRateRTCMRover_RTCM1074=0.00
messageRateRTCMRover_RTCM1075=0.00
messageRateRTCMRover_RTCM1076=0.00
messageRateRTCMRover_RTCM1077=0.00
messageRateRTCMRover_RTCM1081=0.00
messageRateRTCMRover_RTCM1082=0.00
messageRateRTCMRover_RTCM1083=0.00
messageRateRTCMRover_RTCM1084=0.00
messageRateRTCMRover_RTCM1085=0.00
messageRateRTCMRover_RTCM1086=0.00
messageRateRTCMRover_RTCM1087=0.00
messageRateRTCMRover_RTCM1091=0.00
messageRateRTCMRover_RTCM1092=0.00
messageRateRTCMRover_RTCM1093=0.00
messageRateRTCMRover_RTCM1094=0.00
messageRateRTCMRover_RTCM1095=0.00
messageRateRTCMRover_RTCM1096=0.00
messageRateRTCMRover_RTCM1097=0.00
messageRateRTCMRover_RTCM1104=0.00
messageRateRTCMRover_RTCM1111=0.00
messageRateRTCMRover_RTCM1112=0.00
messageRateRTCMRover_RTCM1113=0.00
messageRateRTCMRover_RTCM1114=0.00
messageRateRTCMRover_RTCM1115=0.00
messageRateRTCMRover_RTCM1116=0.00
messageRateRTCMRover_RTCM1117=0.00
messageRateRTCMRover_RTCM1121=0.00
messageRateRTCMRover_RTCM1122=0.00
messageRateRTCMRover_RTCM1123=0.00
messageRateRTCMRover_RTCM1124=0.00
messageRateRTCMRover_RTCM1125=0.00
messageRateRTCMRover_RTCM1126=0.00
messageRateRTCMRover_RTCM1127=0.00
httpPort=80
debugWebServer=0
debugWifiState=1
enableCaptivePortal=1
wifiChannel=1
wifiConfigOverAP=0
wifiNetwork_0SSID=Surveillance
wifiNetwork_0Password=*******
wifiNetwork_1SSID=Peanut
wifiNetwork_1Password=********
wifiNetwork_2SSID=
wifiNetwork_2Password=
wifiNetwork_3SSID=
wifiNetwork_3Password=
wifiConnectTimeoutMs=20000
outputTipAltitude=327680
useLocalizedDistribution=0
localizedDistributionTileLevel=5
useAssistNow=0
requestKeyUpdate=0
enableLora=0
loraCoordinationFrequency=910.000
debugLora=0
loraSerialInteractionTimeout_s=30
enableMultipathMitigation=1
debugSettings=0
enableNtripCaster=0
baseCasterOverride=0
rtkFirmwareVersion=v2.2
gnssFirmwareVersion=11833
gnssUniqueId=ff3bd4976a7d169b
otaRcFirmwareJsonUrl=
otaFirmwareJsonUrl=

Menu: User Profiles

  1. Select PPerfectTiltOFF ← Current
  2. Select (Empty)
  3. Select (Empty)
  4. Select (Empty)
  5. Select (Empty)
  6. Select (Empty)
  7. Select (Empty)
  8. Select (Empty)
  9. Edit profile name: PPerfectTiltOFF
  10. Set profile ‘PPerfectTiltOFF’ to factory defaults
  11. Delete profile ‘PPerfectTiltOFF’
  12. Print profile
    x) Exit

Interesting that P1 the first reading for 60 averaged points was the closest to the last reading P7 that was 600-1000 averaged points, and P2 also 60 points was second closest to P7. And P4 averaged for 200 points was furthest away. And again the Surveyor’s pole was not touched or moved for any of the readings at all, and first reading started after pole had been set and was in RTK FIX status for at least 3-5 minutes So much to learn….. I may try this again tomorrow but perhaps with 10 points all 200 averages and compare it to a first and last point with 1000+ averages……

1-4cm is well within the PointPerfect spec of 3-6cm accuracy. I think you’re there!

When dealing with GNSS and RTK specifically, I am not a fan of averaging to ‘get better accuracy’. The atmospheric conditions are changing (albeit slowly) over the hour that you may take an average. These, and a handful of other fluctuations will skew the average. Said differently, it is incorrect to assume that if you leave it for longer, the accuracy will get better.

1 Like

+1 to @sparky ‘s comments in general, but specifically for OSR.

But for discussion purposes (:nerd_face:)….. it’s worth noting that the particular correction service/product that @ChrisO is using is a hybrid PPP-RTK, and utilizes a SSR Model.

So in this special circumstance, we would expect longer occupation times to benefit the solution (due to the SSR Model only)….since a solution is a quick “watered-down” PPP mission using this particular service.

My expectation is that the “wiggle” in the compared solutions are a combination of the SSR Model’s (PPP-RTK) precision, and more importantly the multipath environment at that site as described.

Even for SSR positions, I feel there is more benefit to multiple points (short occupation times) spread out over time - verses comparing long averaged positions one after the other. “Dumping the Antenna” (force the GNSS chip to start over with the positioning) between solutions is also very beneficial. These methods are absolutely helpful when qualifying a RTK position using a typical OSR/RTCM correction.

TLDR: SSR is a different animal, but rarely discussed :slight_smile:

1 Like

When I actually get out to the woods and start marking the 36 calls along 3,000+ft of ridge line i will mark flags 1, 2, and maybe 3, meaning do the full distance of the ridge and mark all calls with Flags with #1, then when I have time repeat with flags all marked #2, and then one last time with #3 flags. And while doing that double check with my 330ft Milwaukee tape and Suunto KB-14 compass which is +/- 0.5 degrees (and NOAA Declination at the ridge of 5.64 West +/-0.36 continuing to shift west by 0.05 degrees west per year….. ) Ah, so simple to measure things….:sweat_smile: :rofl:

1 Like