Comparing a uBlox F9P with a M8P with RTK

I tried both survey-in every time and typed-in coordinates in the base station. Same result.

It must be your survey in positions causing the error.
Set your base on a point, measure the height of the antenna. Do a survey in. Thensubtract the measure up to the antenna. This is the elevation of your point on the ground. Then when you do your checks, on the base use the same XY and adjust your Z based in your new measure up.

Hi Tridge,
Are you up for one to one help regarding the ardusimple getting a fix then connecting to my pixhawk
If so Id be happy to do a team view session
Thanks in advance

@tridge, @ktrussell nd any one here who tried to use f9p u-blox for base and rover setup, please help us to continue with this chat. I have Ardusimple simpleRTK2B planning to use as a base and Ardusimple simpleRTK2Blite planned to be used as a rover(Drone), both have f9p u-blox module, have you tried to connect f9p base with rover via mission planner gcs to send rtcm correction to the rover for rtk, how can it be done? Am expecting the correction to be sent via telemetry radio to the drone. Am expecting the result to be way more precise that the least modulesā€¦

@Bornlove Our rover setups typically involve 3 x F9P modules - one as a basestation, one as a moving baseline base and one as a moving baseline rover. This gives us accurate position and heading. We have multiple setups like this. We have also used various combinations of Swiftnav Piksi Multi/Duro Inertial/F9P along with CORS corrections

1 Like

It seems that most people do use Mission Planner to inject RTCM3, but I am using a separate radio communication between base and rover so I have not looked into exactly how it is done, but it is very common.

1 Like

I have two F9P modules from ArduSimple working as rover and base (not moving base). The RTCM3 corrections are going through Mission Planner MAVLink injection. I use one medium range radio link between the base and mission planner and another long range radio to the rover. I had to turn off UBLOX messages from the base to get RTK to work properly. The base had message overflow issues with UBLOX messages turned on otherwise either in the GPS unit or the radio. Never did figure it out.

The other problem I ran into was radio and GPS BAUD rate. If you click ā€œauto configureā€ in the RTK section of Mission Planner, it will configure the base module for 115200 BAUD. If the radio doesnā€™t already match that, you will get garbage from a GPS you thought was working. Its best to setup everything to 115200, radios and all.

Once you have the GPS and radios configured properly, no UBLOX message and for whatever BAUD you want, make sure when you use Mission Planner that ā€œauto configureā€ is not checked. Otherwise it will just blow those settings away when it connects to the base GPS.

2 Likes

@jimovonz how is your setup looks like, I would like to learn from your setup coz I know only base rover, I havenā€™t tried that moving baseline base and moving baseline rover, I am curious to learn your setup. And your application is for Drone or you are using as a ground survey? My focus is on drone applications.

@ktrussell yep for users of Ardupilot and px4 Flight Controller Stacks, with Mission planner, this can be done, I donā€™t know about QGround Controller if it has that feature, what is your approach and what is your radio to communicate with your rover. Is Drone your application for RTK?

We use Mission Planner for Drone application and RTCM3xx correction is sent to the drone via Mavlink command for the drone to get the position.

@Vincent_Miceli that is interesting, your setup nearly approaching to my setup, but mine is this way; Base station (Not moving one) is connected to Ground control station running Mission planner for those correction messages from the base to get into the rover via, what am stack to the configuration for the mission planner to get those messages from the base for it to be able to send them to the rover via telemetry. If you have any idea please helpā€¦

And when comes to the issue of compass, myself i have been using Here+ antenna that has compass to connect with 12c in mission planner. What about f9p heading determination or this is the same as @jimovonz said :thinking:?

Are you asking how to use Mission Planner to inject RTK corrections? Its fairly simple. In Mission Planner press Control F and then select Inject GPS. Pick the serial port and BAUD rate of your connected GPS. Make sure you have M8P/F9P autoconfig selected. Mission Planner will do the rest.

@Vincent_Miceli I have been using Mission Planner Version 1.3.69 that didnā€™t show F9P to the Interface as yours, i did an update to ver 1.6.72 and now i can see it, I appreciate and thanks so much, cheers.

My application is an autonomous zero-turn lawn mower. See https://www.youtube.com/playlist?list=PLIsYv3gzZOt9N9yZmpI_WYiMaBQ6HazOG but beware that I have changed a good many things since some of the older videos. One day I will create a full update of the current setup.

I am using Adafruit Feather M0 LoRa boards for communication between base and rover GPSes. Code here: https://github.com/ktrussell/Serial_to_LoRa.

2 Likes

Iā€™m going about it a bit differently. Using the XBEE 900 mhz (US) boards, I let the F9P/Ardusimple take care of themselves during flight in case something goes wrong. The plan is to use the modest compute capability on the XBEEā€™s (or companion computer/Teensy) to feed the ultra-fine data to the cube via MAVLINK (maybe) so the Cube can self-correct in flight. The Cube has comms with ground control anyway. HOWEVER, we MUST get the finer resolution GPS waypoints past the magic 7 decimal places that the Ardupilot software limits us to now. I donā€™t know where an official request is to be logged. The 2 centimeter level accuracy is not available in the data stream from the Cube to ground or vice-versa unless this has already been corrected in the Ardupilot software.

2 Likes

@skypuppy1 I have been doing some work on getting better accuracy from Ardupilot. We are bumping up against the accuracy limits of the current system with our rovers so I have been investigating what exactly it is that is in the way of improvements. The ā€˜7 decimal placesā€™ that you cite is one of those limitations. We use the Ublox F9P GNSS modules that offers the HPPOSLLH message which gives two extra digits of precision. I have added parsing of this message and extended the ā€˜Locationā€™ object by adding two additional uint8 fields to contain these extra digits. I have also modified a number of the Location methods too utilise this extra information. My tests so far indicate that the EKF is receiving and consuming this higher resolution data. The next step is to provide an interface to allow the extra resolution to be provided for specifying waypoint locations.

4 Likes

I have managed to add the extra precision to the WPs by using the two bytes available in param1 of the MAV_CMD_NAV_WAYPOINT command. We have ā€˜rolled our ownā€™ path planning tool that uploads WPs using mavros so adding the extra precision bytes to param1 was pretty straight forward. Testing using SITL looks like I have at least not broken anything but it may be a few days before I can get time on a machine to test for real. Sitting outside with a Pixhawk and a F9P with an RTK fix definitely shows the increased precision when looking at the position data being consumed by the EKF. Instead of seeing the +/- 0.011 resolution of the current position, I can see +/- 0.0001 fluctuating the +/-~2mm that I would expect from the GNSS

4 Likes

@tridge Thank you for your great work. I have a question about GPS yaw. for now if you want to use the GPS yaw, Youā€™ll need two F9P, and you wonā€™t be able to use the RTK function, cause the uart2 is used to transfer RTCM between two F9P? and also I noticed the ublox just released a new moudle called F9H which basically is F9P but without position data output, Itā€™s only output the heading data.but allow you keep the RTK function available. How to set up if you want use the F9H on ardupilot? I mean Itā€™s definitely not a GPS, Itā€™s only deliver heading informations.

you donā€™t need to use uart2 for the RTCM transfers, they can go between the two GPS modules via the autopilot, sharing the link.
Also, you can use RTK positioning on the base GPS in the vehicle. If you inject RTCM into ArduPilot it will pass it onto the base GPS, which will allow for a global RTK solution.

I am very skeptical about this providing any benefit in a real flight of an aircraft.
Reporting 2mm precision is very different from actually achieving 2mm accuracy.
Sitting still on the ground I see a lot more than 1cm changes in altitude and position from a F9P with a RTK fix.

@tridge - I too am sceptical that many would benefit from such changes - especially those flying aircraft. I have no recent experience on Ardupilot controlled aircraft - all my work has been in 2D on the ground using Ardurover. The precision I quoted was purely to illustrate the effect of the changes to the code I made and was not meant to imply any specific degree of improvement in the results achievable using Ardupilot. I do believe that as a general rule, the resolution of the underlying representation of our sensor data should be at least an order of magnitude better than the sensors themselves in order to maximise fidelity. Unfortunately I have not had the opportunity to test these changes in isolation to better determine the real world effect, but in conjunction with other changes, I have managed to reliably get < 2cm cross track error on straights where as with the default setup can only achieve < 5cm.

Great post for F9P RTK.
Thank you so much.

Iā€™m thinking that I need to stop and hover at the photo/sampling points for the precision, at least initially. Then, start in-motion tests to find the precision limits while moving ā€“ if there are any. :slight_smile: