Our team has recently switched our bot to swerve for an offseason (Rainbow Rumble) and our bot drains our battery very quickly. Each battery lasts for about 2-3 minutes. Is there any way we could limit motor power draw or is that something inherent in swerve?
Thank you guys for any help.
The configuration for Sparkmaxes or Falcon500s have the ability to limit current. But it can heavily impact performance. But 2-3mins is enough for a FRC match
2-3 minutes of match usage, or 2-3 minutes of sitting there? The former should just be assumed for FRC bots, the latter is bad.
I can’t speak programming wise but I can give some physical advise on how to keep power draw down.
Grease your parts. This will reduce the amount of friction between everything and will reduce the amount of torque needed for the motors to move the bot which will help reduce power draw
Make sure your batteries, battery leads and chargers are good. When we first tested our swerve we had corrosion on some battery leads which wouldn’t allow us to draw enough current from our batteries. Using new battery leads made a decent difference.
This is just for building swerve bots in general try to keep them weight light
Just make sure everything is assembled correctly and nothing is over tighten to make sure no unnecessary friction is there
Look at the Driver Station Logs to see which circuits are drawing most power. If one motor is drawing more power than the others, then you should investigate. If all the power is going to the drive motors roughly equally, then current limiting is probably your only option. If you don’t see significant current draw, then the problem may be between the battery and the power distribution.
You’re probably using pre-built swerve modules, but you should double-check your gear ratios.
Make sure all the power connections are solid and use appropriate gauge. Is any of your power wiring getting hot? Carefully touch all the wires after running hard for several minutes. Consider doing a frame isolation test.
The elephant in the room: you MUST set a current limit on your swerve motors. If you don’t you can brown out the bot in a heartbeat. Use your favorite calculator to get close, then drive to firm it up. More current is NOT more-better if you brown out!
Next up: if your motors are fighting each other or oscillating then they will draw LOTS of power.
Yes. Another good thing to try is running the robot on blocks (perhaps after switching the code to use robot-oriented control) to check that the wheels are working together.
How heavy is your robot and was is the gear ratio of the drive? Are you running REV or SDS swerve?
We are running L3’s SDS on Falcons and using new batteries this season. Usually get about 10-15 minutes of full on drive practice before we drain batteries down to about 12VDC from fully charged of about 12.7VDC.
It is also important to check your battery resistance. A good battery (0.015 Ohms) should be able to run possibly even 80A per motor, but a battery with higher resistance like 0.02 Ohms may not be able to.
Another thing to take a closer look at would be battery brand and weight. We had a ton of issues with brownouts and current draw, before discovering that our batteries had a weight range of 11-13.2 pounds, with varying levels of success. For our team, interstate batteries are a competition no-go with the difference in performance being immense compared to duracell. We were able to switch from having the battery life of one match to being able to run for 7-8 minutes.
Limiting current and making sure motors are not fighting each other is def a priority however.
This is about the same amount of time ours lasts.
FWI, our MK4i/NEO swerve robot didn’t seem to be particularly hard on batteries, we ran practice for over 10 minutes and demo driving for way longer than this, many times. Check the not fighting thing (including making sure your modules are aligned well), the wiring, and especially, the current draw data.
Thanks for all the suggestions. We have a meet tomorrow and I’ll look into the logs and see if any of the motors are fighting each other. Thank you guys so much.
Everybody in FRC just wants to get the robots and and running
Glad to help out!
To add to this, we’ve observed issues where a modules steering motor can fail mid-match, but then be fine again the next time we power up the robot.
Recently we had a match where we were able to dig through the logs and match up the time stamps for the start of higher current draw in the logs to the match video where the issue started immediately after going over the cable track “bump”, which lead us to believe one of the modules had bound up after that interaction. As soon as weight was taken off the wheels (when the robot was picked up, we believe the module re-seated itself and the issue resolved (hence why it didn’t show up in testing afterwards.
Something to watch for anyways.
This was something that we experienced a lot with early iterations of our pods. We found that while avoiding the wire run was nice, leaving some room for the azimuth to wiggle up and down a slight amount helped tremendously with this issue, giving a path for the wheel to ‘reset’ as you said above. Having greased gear connections, and doing regular cleanings helped a ton as well. The amount of carpet fuzz and other garbage that can sneak it’s way in was astounding, and doing these cleanings helped longevity and quality of bearings and gears.
This ended up being the main problem. We changed the current limit and we get about 5-6 minutes per battery which is much better than it was (It wasn’t even getting through a full match). Thank you guys so much.
Glad to help out!
And we -really- appreciate knowing what the problem ended up being! Very valuable feedback!
Nuttle, what did you set your current limiting to? We set ours to 80 in the REV client for both steer and drive motor controllers. Waiting to test the outcome.
Normally, the limit is 40A for drive and 30A for steering I believe. May or may not be right, but its what I’ve heard
80A is way too high imo