What happens when the system loses GPS?

Does anyone know how the Ardupilot software, specifically the rover branch, handles loss of GPS or severely degraded signal quality?

Let's say you've instructed your rover to go from waypoint 1 to waypoint 2 and that course has it driving through a tunnel.  Does the system stop the rover when GPS signal is lost?  Or does it attempt to use the IMU to try to determine how far it has traveled?

If it's the latter, IMU accelerometers are pretty noisy to be numerically integrated to give you slow speed distance changes.  How is that noise filtered?

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • Admin

    Hi All,

    This is a response from Tridge, our programmer:

    "The Rover code currently does dead-reckoning using the compass and the last groundspeed it got from the GPS and tries to continue the mission. That works well for short GPS outages, but will start to degrade quite quickly.
    At the moment there is no GPS failsafe setting, so you can't ask it to enter HOLD mode on GPS loss. We should add that as an option, perhaps as FS_GPS_ENABLE=0/1.
    Cheers, Tridge"

    Regards,

    TCIII ArduRover2 Developer

  • Well, I've been ponder possible solutions.

    1) Double-integrate accelerometer data.  Sounds great on paper but the problem is that a rover's acceleration is going to be pretty small (in my case, less than 0.2 g).  So what I'm seeing is that the signal-to-noise ratio is far too low to extract clean acceleration data.
    2) Wheel-encoder odometry.  Easy enough to implement but there are two cases where the result would get thrown off.  The first is if the surface you're driving on is bumpy such as a field with clumpy grass or hand-sized rocks.  The second case would be a slippery surface such as smooth concrete or sand.  The effects get worse with increased speed.
    3) Optical flow.  I've played around with PXFlow device using some very wide angle lenses.  Now while I can clearly see the device giving me flow data, I haven't been able to get consistent measurements out of it.  My test rig for this is a small board with four fixed-axis casters on them and a 12-inch stalk on which the sensor is mounted.  Rolling the platform a known distance on a table and I get very different results depending on how fast I roll it.  In addition, fluorescent lighting drives the device nuts.

    So, I'll probably go with wheel-encoders in lieu of anything else.  But my question still stands: What does the Ardurover software do when it loses GPS?  I keep searching for block diagrams, flow charts, algorithm walkthroughs, etc. without much success.

  • Admin

    @Nikola,

    Here is a first response from Robert Lefebvre, there may be more over the course of the day:

    I don't believe Rover has inertial nav at all, so it would run on GPS only.  Driving through a tunnel would be extremely bad, and I'm sure it would have to be done manually.  It would be really good to add INAV to Rover, and I believe it would work just fine.  My experience with tradheli seems to show that the INAV system doesn't have a big problem with strong low-frequency vibrations.  They don't affect it as much as you'd think.  Seems it's easier to integrate them out than the high frequency "white noise" from a multi-rotor.

    Still, driving through a long tunnel would be tricky.  I think you would have to have a special mode or input for "tunnel mode", which would essentially shut off the GPS.  If you were talking about driving through a round tunnel, it might be better done by "feel".  ie: try to sense when you start driving up the wall, and turn to center again.
     
    Regards,
    TCIII ArduRover2 Developer
  • Admin

    @Nikola,

    I have started a discussion on the Google Groups drones-discussion forum to answer your question. I should have an answer by the end of the day.

    Regards,

    TCIII ArduRover2 Developer

  • ArduPilot etc don't just integrate accelerometers. You might search for "DCM algorithm". The algorithm used comes from MatrixPilot and represents state as a Direction Cosine Matrix and iteratively updates and error-corrects the values in clever ways to estimate heading. It uses gyros, accelerometers, magnetometers. I don't remember if it uses wheel encoders or not. I would expect ArduRover runs from other sensors if GPS is out, but I don't know. Best bet is to check the source code. Hopefully one of the ArduRover folks will chime in. I have never used it but have looked at some of the ArduPilot/IMU/Rover code and have done my own rover from scratch.

This reply was deleted.