EECE 5554 Robotics Sensing and Navigation  /  Interactive demo

Battery runtime planner

Pick a pack and a mission for the robot. The script steps through the mission one second at a time: the load pulls power, the pack voltage sags under that current, and the charge drops. The run ends when the loaded voltage hits the BMS cutoff, which can happen long before the pack is empty.

Runs battery_runtime.pyLecture 06
Starting...

Pack

Cells in series (S)
Cells in parallel (P)
Cell capacity
Cell resistance

Conditions

State of health

Mission

Load profile
Mission length

Dark: pack voltage under load. Gray dashed: the voltage it would read at rest. Red dashed: the BMS cutoff. Blue: the end of the mission.

Power the robot draws. Short bursts make the voltage dips above.

Try this

  1. With the defaults, the patrol mission completes at 25 °C. Switch to −10 °C: the pack stops early with charge still inside, because the 320 W bursts sag below the cutoff.
  2. Stay at −10 °C and raise P from 3 to 4. More cells in parallel means less resistance and less sag.
  3. Still at −10 °C, switch to LiFePO4 with 8 cells in series. Its flat voltage curve stays above the cutoff longer, so less charge is left behind when it stops.
  4. Drop the state of health to 70%. An old pack has less capacity and more resistance: you lose runtime twice.

Notebook

Work with the same script in cells, like Jupyter, right here in the browser. Edit any cell and run it. Nothing is saved: Reset brings a cell back, and Download .ipynb keeps your edited version for VS Code or Jupyter.

Loading Python...
The Python script: battery_runtime.py

This is the script the page runs. Run it yourself with python3 battery_runtime.py.

battery_runtime.py