I had an idea today about a simple way to get RTK GPS into the blue boat and just wanted to check in advance if there are any fundamental flaws in this plan.
In short here’s the idea:
Use a Sparkfun Facet GPS and mount that on/in the BlueBoat.
Send the corrections to the Facet via bluetooth using an android phone running SW Maps. Mount the phone inside one of the hulls so it can travel around with the boat and stay in bluetooth range. (Maybe power it as well for long trips)
Setup the facet for NMEA output on the data port.
Route the corrected NMEA data from the Facet to the Serial5 port on the Navigator.
Bingo - RTK accuracy.
My questions are:
Will this work?
Does the internal GPS on the boat use both I2C and serial lines and would sending only serial NMEA be a problem? I see it’s using Serial 5 +12C and all the leads are present.
Is the default 230400 baud from the Facet the right speed for the navigator?
Should I be using one of the other serial ports and leaving the internal GPS alone? If so, how can I tell the blueboat to use the alternative fix data?
I just did a quick try of this and it isn’t showing a fix on the GPS int mavlink inspector in BlueOS. It could be a tx/rx issue (I suffer from tx/rx dyslexia) or a baud issue or something else. I don’t want to spend a lot of time if this is a bad idea from the get go.
Also is there a way to inspect the NMEA data that the boat is getting in blueOS?
Cheers.
I think the Facet spits out a ton of different NMEA strings which might mess things up. If you connect to Bluetooth and go through the settings you can select exactly which strings and at what baud rate they are streaming at. I would use GPGGA and GPRMC for a start.
Connect the navigator to either Qgroundcontrol, or mission planner and search for the parameter for the serial port you’re connecting the Facet data line to and ensure it is at the same baud rate.
Next I would try getting corrected GPS streams from the phone in Bluetooth and connect the data lines directly to a PC and check on putty that they are coming in correctly.
Next connect the data line to the Navigator. In mission planner if you click control-F it opens an advanced menu which I think has some NMEA inspection options where you can verify that it has a RTK fix.
I configured my autopilot to use the RTK gps first if it was available, and to fail over to the internal gps if RTK wasn’t working. I was able to navigate to within a few centimeters of the desired track. It was a little tricky setting up the NTRIP stream on the Raspberry Pi, but it can be done. Ardusimple also sells an LTE board that makes it really easy to get NTRIP to the GPS as long as you have cell service.
I’d definitely recommend looking at the Emlid Reach M / M2 units (L1 or L1/L2 respectively). Very easy to integrate, onboard logging for PPK if NTRIP corrections fail. Can easily do LORA corrections from base station if preferred. Can run straight off the 5v fused rail. Full control over which nmea sentences are pushed, supports BT, serial and udp / tcp outputs. PPS output if required. Not found anything we couldn’t do with these units - both UAV and USV based.
The reason I’m looking at using the Sparkfun facet is because we have one on the shelf and I’d like to test it as proof of concept before considering alternative hardware.
The data port on the Facet is outputting the following NMEA sentences:
$GAGSV;$GBGSV;$GLGSV;$GNGST;$GPGSV; $GNGGA;$GNRMC. I’ll try reducing this to just RMC and GGA as per Johann’s suggestion but I wonder if the issue is something else.
Also, I want to be able to troubleshoot this via BlueOS and not directly to the navigator via QGC. I’ll setup a serial bridge in BlueOS and make sure I’m seeing the sentences on the Navigator serial port as a test.
I still don’t see an answer to my questions. If I start with the internal GPS connected, I can see the positions on the mavlink inspector, but then if I remove the cable, it still streams positions which I suspect is because it is using the INS input.
Maybe a better way to test this would be to leave the internal GPS as-is and somehow use the corrected NMEA from the facet on a different serial port. I just don’t see how this is possible via BlueOS. In fact there’s no reference to the GPS anywhere that I can see on BlueOS and no way I can see to add a second one. Any assistance on configuring GPS NMEA on BlueOS would be appreciated.
Not sure if I understood correctly so it may or not be what you are looking for… but if you have a constant communication link between the boat and QGC you can also connect a base GPS on your PC, I use F9P and USB port, and QGC route the correction to the boat. At least this is working with ardusub. I did not test this yet with navigator and blueboat.
I have parsed my sparkfun facet sentence for pi and combined with ping. Hint you can get the facet to connect to ntrip and wifi. If you go through usb on the CH370 port.
Hello Matthew
We want to use our emlid M2 on BlueBoat, I can transmit GNSS data on the serial3 port. But I can’t configure the driver to use the 2nd GPS when RTK is available.
Can you help me?