I’ve got a dual-motor boat that is almost up and running, but I’m stuck trying to get it to reverse, and I could use some help. I can grab full logs, but I wanted to first check if I even have the right mental model for what I’m trying to do.
The two motors are mounted side-by-side, spread a bit apart, so differential thrust works great for steering. I have the output channels set up as ThrottleLeft and ThrottleRight. I can steer and drive around forwards in manual mode without issues. At zero throttle, I can tank-steer just fine using the ‘rudder’ input. Of note, rudder control at 0 throttle works to spin a motor in reverse. This isn’t an issue of reversing ESC’s - that’s working fine.
I have a spring-return right stick on my controller, and I’d like to map the up/down of that stick to forward/reverse throttle. (I won’t use this in all modes, but I found it works super well for slow maneuvers while docking)
I’ve got my controller to output 1000 us at full “down” on the stick, and 2000 us at full “up”. What I’m getting right now is a throttle range from 0% to 100% forward. I’d like this to instead map from 100% reverse to 100% forward.
So my question:
Is this a setup that other people are doing? Using <1500us throttle axis to reverse a boat?
I think I need some kind of “Neutral throttle means 0%” setting, instead of “neutral throttle means 100%”, but I really thought that would be default already for tank steering. I have all my RC3_MIN, RC3_TRIM, etc. set to the defaults, and I’m definitely getting values of 1000-2000 in Ardupilot on the throttle channel.
Any obvious parameters I should learn about? Am I approaching this all wrong?
Notes:
In case it matters, FRAME_CLASS is set to ‘boat’.
I’ve also tried setting my receiver up to use a separate channel for “go in reverse”, and to use controller-side mapping to flip that ‘go-in-reverse channel’ when the throttle stick is below neutral. I couldn’t figure out how to set up a channel as a reverse-throttle switch though, and this seems like an ugly hack.
One quirk that might factor into this: I’m using the new ExpressLRS Mavlink-RC mode, which (as I understand it) shows up as MAVLink2 data for the RC input for Ardupilot. I don’t think that’s affecting things though, since I’m seeing the full range on RC3 coming into the system.