I’m making a rover and I need to use GPS RTK.
In France we have a free RTK network (Centipède), so to acces them from the rover I need to get mobile connexion, such as 4G connexion.
I’m searching from several days the righ architecture, but doesn’t find a architecutre WITHOUT Mission Planer / Qgroundcontrol for connecting to NTRIP caster.
My goal is only rover + pixhawk + F9P + 4G connexion, no connexion via Telemtry to Mission Planer during Mission.
I would like to make this architecture : F9P > PixHawk > RPI > 4G Connexion
But I dosen’t find how I can send the RCTM3 frame from RPI to PixHawk.
I think mavproxy is overkill if used only for RTCM and sometimes, at least in my case, it has been very very unstable and shutting down RTCM for no reason.
Been using str2str for nearly 2 years now with no probs at all, very reliable.
Figured MAVProxy might be a readymade solution that is well documented. I’ve used ser2net on a Raspberry Pi as a much lighter weight solution with a great deal of success, as well.
Serial RTCM3 → R Pi → ser2net → network connection → companion or GCS computer → autopilot
Perhaps I’m thinking a bit too complex, though. With an onboard companion and a cell connection, it could connect directly to the NTRIP server and then output over UART to the autopilot.
Ah ok. I was talking about str2str, part of rtklib. Can connect to a cors and stream connection out. So it is ideal for 4g connected raspberry.
Really takes 5 minutes to setup on a raspberry.
(i am about half way trough your lua video tutorial. Really nice, thanks).
just for clarification : in all case, the computing of the RTCM3 frame is made IN the GPS F9P module ?
(it’s not my use case, but just to clarify : So when we send RTCM via Telemetry, pixhawk just transfer the frame to the F9P and then F9P return corrected position ?)
thank you for this topic, it has been really helpful for me to understand how to use RTKLIB properly ! I just have a question for my understanding: I set str2str has proposed by Corrado_Steri on my computer and I receive the information from the Ntrip server.
To get proper positioning I need one str2str which request RTCM data to the Ntrip server and one str2str which send the position in NMEA from the GNSS device to the Ntrip server ?
RTK Base Station (Rpi):
Serial RTCM3 → RPi → str2str → rtk2go.com
Rover companion computer: rtk2go.com → Ntrip module in Mavproxy → mav message → ardurover on pixhawk
I want to take rtk2go.com out of the loop. The RTK base station and the Rover companion computer are on the same network.
If I don’t want to use rtk2go.com, how could I send corrections (available as serial rtcm3 on the RTK base station computer) to the ardurover on Pixhawk on my rover? The ntrip mavproxy module seems to require an ntrip caster, i.e. it doesn’t seem like it could connect to a tcp port on the base station.
How did you implement “companion computer → autopilot” above?
@Yuri_Rage@jimovonz
Couldn’t I just write a python program running on the companion computer which (a) reads the data stream from the RTK Base Station using tcp/ip (using a simple tcpip server on the base station) and (b) sends that data onwards using GPS_RTCM_DATA?? Do I need to parse this data stream at all (for example, recognize the RTCM messages and break the stream up so that I only send 1 rtcm message per GPS_RTCM_DATA message)?
something like this:
def send_rtcm_data(mav, rtcm_data):
flags = 0
length = len(rtcm_data)
data = rtcm_data[:180] # Ensure data is no more than 180 bytes
message = mavlink.MAVLink_gps_rtcm_data_message(flags, length, data)
mav.send(message)
Unless I sorely misunderstand the architecture, that command will create a server that casts your correction data and allows client connections. MAVProxy is the client.
Yes, I get that. But the only reason for the above syntax to ever work would be to create a local (LAN) connection to the data stream.
If it doesn’t work as was supposed by a user on another forum (whose link I’ve long since lost), make a feature request to support TCP/UDP RTCM3 streams in MAVProxy. It seems like a sorely missing feature.