Falcon velocity mode not going to the set speed

hi- this year we’re using the sds mk4i modules with falcon 550 drive motors, however we realized that the robot isn’t going as fast as it should be. we’ve verified that our target velocity (5mps) is getting to the motor controller set function, however the velocity that we’re reading back and seeing physically is only 3mps. we tried running the motor using phoenix tuner and were able to get the maximum 5mps. i don’t think it’s a pid issue since the graph just flatlines (not oscillating/overshooting/changing at all). i’ve looked through our motor config and ctre conversions and nothing seems out of place.


please let us know if anyone else has run into this issue or anything similar! thanks, team 102

Velocity control is greatly influenced by your feed forward term. Have you confirmed your feed forward gives you the velocities you want?

2 Likes

it’s basically impossible for a robot to achieve its theoretical free speed, usually its some fraction (80% ish, depending on weight). as a motor spins faster, it has less torque, and thus the robot has less acceleration. at the motor’s max rpm, it has basically no torque. the behavior you described sounds normal ngl

Does it work on blocks?

It looks like your f-term is zero. Have you tried setting that?

I recommend that you try to log more things, e.g. the actual values being passed to set(), the result of calling get() and getSelectedSensorVelocity().

I notice you have a current limit of 35A on your drive motors. Have you tried increasing that? Have you checked what current it’s reaching in the DS logs?

Thanks for all of the advice!
I hadn’t known that feedforward had such a big effect for velocity control. We reran sysid with all 4 motors this time and got larger kS and kV values which now let it go pretty much full speed. It does overcompensate a bit at higher speeds but I think we might just need to try the procedure again.