Rover Hold/Delay At Waypoint

I'm currently testing a rover setup that I need to have go to a waypoint, hold position at that waypoint for a period of time, then simply continue on it's mission. I have looked through this group, as well as through the ardupilot forums, and can't seem to find a definitive answer. It looks like other people have attempted this sometime ago with no success...or at least they didn't update their posts to reflect it.

So, I've gone through virtually every chain of events I can think of in Mission Planner, and can't seem to get anything to make the rover hold it's position. Whether I use a loiter command, a combination of do and nav commands, etc...just nothing seems to want to hold the rover at a waypoint. I do realize some of these commands may not be for a rover, but I wanted to exhaust every option. What makes it even more confusing is that on the rover ardupilot wiki page that explains all the commands (here), it specifically says this under the waypoint definition...

param1DelayHold time at mission waypoint in decimal seconds (Copter/Rover only)

 

My assumption is that I should be able to simply input a time in that first parameter box to make it hold. But it just doesn't work. I've tried different combinations of numbers, decimal places, etc...but still nothing. I believe that this parameter may have been changed in the software at some point, because that box doesn't even indicate that it's for time anyway.

I even went as far as trying to setup my Pixhawk for a quadcopter, helipcopter, or plane...but I just can't seem to program it to work successfully on a ground vehicle. I'm currently just using a 10th scale vehicle from ECX if that makes any bit of difference. And really setting it up as some different type of vehicle really isn't ideal either.

If anyone has any input as to how to make this work, I'm open to any suggestions. A huge thank you in advance for any help!

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

Join diydrones

Email me when people reply –

Replies

  • Developer

    I have been PM'd a few questions on this functionality so I thought I'd answer here in case the information is useful to everyone.

    The latest firmware build of the source code is always available at

    http://firmware.diydrones.com/Rover/latest/

    For instance if your hardware is a Pixhawk this is the link you would use.

    http://firmware.diydrones.com/Rover/latest/PX4/APMrover2-v2.px4

    If your using MissionPlanner you can go into InitialSetup and select "Load custom firmware" and you should be able to upload it. 

    If you use this you are on the bleeding edge - no promises your rover won't be random ;-)

    The loiter time in seconds is stored as a uint16_t which means you can have a maximum of 65535 seconds of loiter.  This is 1092minutes or about 18 hours.

    To clarify my comment on "fast rovers" the code as it is right now means if the rover rolls past the waypoint (no matter how far) NOTHING will happen/change.  It will continue to wait its loiter time and then navigate to the next waypoint.  Hope that's clear.

    Rover does not currently implement the LOITER functionality like Plane does.  You cannot specify a loiter point and have the rover circle around it.

    I'm more then happy to answer any other questions.

    Thanks, Grant.

    • Hello,

      I am a beginer in this Rover stuff, so please be patient with me...

      I use Mission Planner to adjust my Pixhawk's settings, but not to plan missions as I am not taking the computer out to the shore, so if I wanted my boat to loiter in a spot by "adding a specific loiter command and radius parameter so a radius of 0 means "loiter on this spot and go back if you drift off"";

        1) How would I program the Pixhawk so it would have this capability?

        2) How could I activate that "mode" with a switch while I am out on the water?

        3) Could it be made to hold the position that the boat had when the switch was turned on?

      Thanks

      Sportjet

    • Developer

      All these things are possible but the software doesn't support these functions at the moment.  You can load an auto mission onto the boat which includes a wait at waypoint (param1 of the waypoint in seconds).  When you go into auto mode and it gets to this waypoint it will wait for the specified period of time.

      Thanks, Grant.

    • I see

      Thanks,

      Sportjet

  • Developer

    Hi all.  I've fixed this and have the pull request in.

    https://github.com/diydrones/ardupilot/pull/2609

    It should be merged into master in the next day or so and available in the next Rover release.

    Thanks, Grant.

    • Hi Grant,

      Regarding this loitering mode for rover, is it active mode (drift compensation) or just passive mode (stop motors and do nothing)?

      Is it for boat application... :)

    • Developer

      Its currently passive as you say.  The difficulty is fast rovers, no breaking and turning circles.  So a fast rover hits a waypoint and ardupilot throttle's down but the rover keeps rolling.  It roll's past the waypoint far enough that its outside the wp_radius parameter setting so if we have active mode it then starts up again, hits max speed really quickly, struggles to turn around tight enough to get back to the waypoint so its all over the place.  If it does get within the wp_radius again it will stop, roll too far and the process will start again.

      I can change it and fast rover users who want to loiter will need to set the wp_radius far enough so it doesn't roll outside of it.  I was thinking I would wait until I have put better breaking controls (once we hit the waypoint and want to loiter, jam on the breaks) in but I could do it now.  I'll see what the other Dev's think.

      Thanks, Grant.

    • Ok Grant, priority to rovers users.

      Do you think is it possible, in futur, to have a specific arduboat firmware/developpment?

      Regards,

    • Developer

      Its not a priority so much as a feature improvement process.  We put something simple in first, see what people want and enhance it accordingly.  There are a couple of way's to do what you want.  For instance adding a specific loiter command and radius parameter so a radius of 0 means "loiter on this spot and go back if you drift off" and any value greater then 1 means circle this point at that Radius.  I could do what you prefer but then that doesn't help some of the rover users.  So we are trying to make everyone happy.

      I don't want to make separate firmware for boat and rover unless there is a need for significant code divergence due to large differences.  Separating them would then mean extra overhead in producing and testing both moving forward and that is time we simply don't have.  Unless we get more developers of course :-D

      Thanks, Grant.

  • Developer

    I've confirmed its a bug in Rover.  Setting Param1 of a WAYPOINT to a time in seconds should stop the Rover at that waypoint for the specified period of time but its not working.  I've just raised an issue and assigned it to myself to resolve.

    https://github.com/diydrones/ardupilot/issues/2594

    Thanks, Grant.

This reply was deleted.