Dynamic voltage for openloop control

I have been testing out all the modes for driving my rovers hoverboard wheels, openloop mode gives the smoothest handling for tank steering, its like all the motors are locked together. The problem is open loop uses a lot of power since your essentially running it at full power at all times. Velocity mode just isn’t as smooth and responsive and requires a lot of tuning to get close.

So rather than using PID in velocity mode what about using openloop but with dynamic voltage control? Basically we know what angle motor should be relative to the magnetic field so what about controlling the voltage based on how far behind the motor has got from where it should be. My thought is that if load is applied to the motor its position will start to lag the magnetic field.

If the difference could be measured using hall sensors then the difference could be used to calculate the voltage so that it tries to keep the motor from cogging by increasing the voltage when it needs it and also keep the voltage down when it’s not needed to stop motors and controllers overheating.

Another way would be to just ramp up the voltage each time it slips, like each cog doubles the voltage until it starts turning then wind it back down as it rotates.

The only thing I can think of that would stop this working is that possibly the hall sensors aren’t high enough resolution or am I missing something obvious?

Try using angle mode and advancing the target positions by your desired velocity, similar to how openloop velocity does it. The motion will be “steppy” with hall sensors, so get some high resolution encoders on it if possible. MT6835 is my favorite.

You could also try SmoothingSensor with closed-loop velocity mode. Or possibly angle mode, but it might get twitchy as the estimated angle changes as it slows down when approaching the target.