How do i reduce the max thruster rotation speed in AUTO mode?

I am looking at ways to change the onboard parameters of my BlueROV2 Heavy R4 such that the motors spin at about 10% of their max thrust. In BlueOS’s Autopilot Parameters screen, I have tried changing:

MOT_SPIN_MIN/MAX/ARM

MOT_PWM_MIN/MAX

I then soft reboot and try both manual and autopilot, but the motors spin at their original speed. Can someone please identify what is missing from this workflow? Thanks!

Also:
I am using Ardupilot 4.5.3 (STABLE), an A50 Water Linked DVL, and BlueOS version 1.4.0-0-gbb3d81c5

Additionally, I tried SERVO#_MIN/MAX/TRIM which didn’t work

Try MOT_PWM_MIN and MOT_PWM_MAX

Yeah I tried those, didn’t work even after reboot

Ultimately my goal is to get it to move much slower in AUTO mode, if that helps

If you set MOT_PWM_TYPE to “Servo”, you should be able to invdividually set the SERVOn_MIN/MAX parameters to limit the motors.

Right @EliotBR ? My memory isn’t great

My recollection is that ArduCopter and derivatives (including ArduSub) currently ignore the SERVOn_MIN/MAX parameters entirely for outputs assigned as motors, which I believe we’ve discussed combination approaches for previously (e.g. using the tighter limit if both are specified, or using the servo config as an override of the general motors one).

Incidentally, I did try to check the code for that a couple of days ago, which from what I could tell didn’t reference the servo number in its checking of limits (which implies it’s just using the general motor limits), but it’s always possible I’m missing some other application of them elsewhere in the codebase :man_shrugging:

Thanks for the ongoing help. Is reducing max thruster speed documented anywhere in the BlueROV or ArduSub/ArduPilot documentation? Most of the solutions I tried just didn’t do anything, so it leads me to think that I was missing something critical. If it’s not possible as of now that’s OK – but I just want to prevent my AUV from crashing into a wall too hard in AUTO mode.

Not in any comprehensive way, at least that I’m aware of. This is the most relevant documentation I could find, but that’s a common page that hasn’t yet been updated to properly cover Sub, and it doesn’t meaningfully focus on limiting motor output ranges.

ArduSub 4.5 should support using MOT_PWM_MIN/MAX for controlling the limits, so if that’s not working in AUTO mode then that’s a bug.

I also think the servo limit parameters should be respected, but that’s more open to interpretation, and may require a special motor type designation to work (see below).

Beyond that, it would definitely work to build your own firmware and scale down the thrust contribution factors in the frame, but that’s a lot of effort for something that should definitely be controllable via parameters.

Looking into this, the MOT_PWM_TYPE description seems to imply that setting the value to PWMRange (8) should allow controlling output ranges based on the SERVOn_MIN/MAX params, although I couldn’t find where that applies in the code, and from the release notes of other firmware variants it seems to have been implemented in 4.6, which would require using a Dev release of ArduSub (or build it from the master branch) to have any hope of the feature working.

Hi @cda -
To add onto Eliot’s response, you can also change the speed that Auto mode is trying to navigate between waypoints at, via the WPNAV_SPEED parameters… by default it is 1 m/s, which is quite fast!

1 Like

This is helpful – will look into this. Thanks!

@EliotBR I found the PR I was thinking about!

2 Likes

Fair enough. Checking the merged commit, it seems to have been included as part of 4.6 releases. That said, it does seem to have been cherry-picked into a 4.5 backport for Sub, so is also available in ArduSub-4.5.3 :man_shrugging: :slight_smile: