Hi, I am building a custom USV, with an over-actuated design. It has 4 thrusters at 90 degrees to each other, so that it can move forward, backward, and laterally as well as yaw. So far I have been using the ArduSub firmware as it supports this frame, however as I am going forwards I need greater support for GPS and autonomous functions that Ardusub does not have.
Is it possible to build a frame configuration for ArduRover that would support this and how would I go about that?
Thanks so much.
The “omnirover” has recently been added to Rover which lays the foundations for this. Also we have this PR from the author of the omnirover code to make it more general purpose. So one approach would be to build on this PR.
Another alternative is to modify AP_MotorsUGV.h/.cpp to add:
- add a new has_xxxx() method which detects whether the vehicle is of the new type by checking the SERVOx_FUNCTION parameters.
- add new output_xxxx() method which sets the outputs based on the higher level steering, throttle and lateral values
So far “lateral” is only used in a couple of more manual modes but we expect the autonomous modes will use it eventually as well.
Hi sorry, perhaps a stupid question, how can I download the pull request?
We’ve got some info on using git here on the developer wiki and here is a link to Ammar’s code.
Because Ammar has done most of the work, if you had a picture of the vehicle he might be able to add support as part of that PR.
I can imagine that it has 4 thrusters in either a plus (+) or X configuration (a bit like a quadcopter) but this doesn’t seem to be enough to me because I can’t imagine how the yaw control would work. Maybe it’s something like one of these?
It is an X configuration, though really theres no big difference. The + configuration is essentially same, just rotated 45 degrees.
Ok, I think Ammar is going to extend his PR to cover your frame. If he does that and we send you a binary could you test it for us? Are you using a Pixhawk board of one of the others we support? (sorry, that’s a subtle plug to try and get the word out that we support a lot more than just the Pixhawk).
I updated the PR with the X and Plus configs.
I am also interested in this x type of frame and the + type.
I have tried ardusub on a test boat sometime ago with good results, but as mentioned above the limits of no Rcin limited and non functioning auto mode limited its potential.
I got the current Omni rover frame going but my form factor wasn’t the best
So didn’t work that well, you really need a short wide boat for that config.
So I’m available as a beta tester if needed.
What I did find handy in the ardusub format is the stablized mode, which basically holds the last yaw angle/heading for you as you drive.
It made general steering much easier as they can be quite slippery to drive otherwise.
Thanks Randy and Ammar for your efforts, rover has been moving along great last few months.
I’m working on something similar for rover (will probably be called Simple mode) that will maintain the initial arming heading when no steering is applied, otherwise you’ll be able to steer normally. It’s coming along good so far so hopefully I can finish it up soon.
That’s wonderful! I will be happy to try it out. I probably wont be able to test it in the water until next week but I will certainly test it on the bench.
I’ve created another discussion here with some details on the setup for the new frame types that Ammar has added support for in Rover-3.5.