we are working on a robotic mark which is supposed to hold position on a sail boat race course. We are using a pixhawk/Ublox setup with a two engine platform (skid steering) and Ardupilot.
I have worked through a thread on DYIDrones on the same topic, but it seems like this specific function of holding a position still hasnt yet been introduced. The suggestion has been to use the Loiter function and set the radius small enough…
Any ideas on how well this will work or if we need to work on a new function.
Looks like Loiter uses WP Radius to begin with.
Yeah, copy that. We will give that a go and see what happens.
The functionality is extremely simple. If the boat is blown or drifts off course from a current and goes outside the WP_RADIUS it simply engages the motor and drives back to the waypoint.
Grant, thanks for the input. We will give it a go this weekend and let you know how it went. Any comment on how small of a radius you can set it at? Will be interesting to see how well the robot can keep its position and what the motors will do. Ideally we want to stay in one spot (tolerance TBD) with the least amount of power usage…
So its not super smart. If you make the WP_RADIUS (10cm for instance) small the boat will drive to the waypoint, cut the motor, drift outside of WP_RADIUS almost immediately and then engage the motor again and drive the boat back to the waypoint and it will all happen again.
I’m guessing what you want is station keeping where the boat engages the motor in forward and reverse continually and using the rudder keeps the boat on top of the waypoint. That’s not what this is. We haven’t added that code to ArduPilot yet.
Is this functionality applicable to a single motor with rudder setup? I need the boat to keep hitting a waypoint, but it can drift as much as 50m before needing to motor back to the approximate gps coordinate.