Power Budget and Runtime
Introduction
The power budget is the starting point for robot power system design. By precisely accounting for the power consumption of each subsystem, you can determine battery capacity, DC-DC specifications, thermal solutions, and accurately predict runtime.
Subsystem Power Reference
Computing Platforms
| Platform | Typical Power | Peak Power | Notes |
|---|---|---|---|
| Arduino Uno | 0.2W | 0.5W | 5V/50 mA |
| ESP32 | 0.5–1W | 1.5W | Higher with WiFi enabled |
| STM32F4 | 0.1–0.5W | 0.8W | Depends on clock and peripherals |
| Raspberry Pi 4B | 3–6W | 7.5W | Depends on load |
| Raspberry Pi 5 | 4–8W | 12W | Newer, more powerful but more power-hungry |
| Jetson Nano | 5–10W | 10W | 5W/10W dual modes |
| Jetson Orin Nano | 7–15W | 15W | 7W/15W dual modes |
| Jetson Orin NX | 10–25W | 25W | 10W/15W/25W modes |
| Jetson AGX Orin | 15–60W | 60W | 15W/30W/50W/60W modes |
| Intel NUC (i7) | 15–45W | 65W | x86 platform |
Motors and Actuators
| Type | Typical Power (per unit) | Peak Power | Notes |
|---|---|---|---|
| SG90 micro servo | 0.5–1W | 2W | No-load 0.1W |
| MG996R servo | 2–5W | 10W | Peak at stall |
| 25 mm geared DC motor | 2–10W | 20W | Depends on load |
| BLDC (drone) | 50–200W | 400W+ | Depends on throttle |
| Quadruped single joint motor | 10–50W | 100W+ | Go2: 12 joints |
| Stepper motor NEMA17 | 5–15W | 20W | Draws power even when holding |
Sensors
| Sensor | Typical Power | Interface | Notes |
|---|---|---|---|
| IMU (MPU6050) | 0.02W | I2C | 3.3V/6 mA |
| Ultrasonic (HC-SR04) | 0.075W | GPIO | 5V/15 mA |
| IR ranging (VL53L0X) | 0.02W | I2C | Low power |
| Single-line laser ranging | 0.5–1W | UART/I2C | TFmini, etc. |
| 2D LiDAR (RPLiDAR A1) | 2–3W | UART | Motor spinning |
| 2D LiDAR (YDLIDAR X4) | 2W | UART | Low cost |
| 3D LiDAR (Velodyne VLP-16) | 8–10W | Ethernet | High-end |
| 3D LiDAR (Livox Mid-360) | 8–10W | Ethernet | Mid-range |
| USB camera | 0.5–1.5W | USB | Depends on resolution |
| Intel RealSense D435i | 2–3W | USB3 | Depth + RGB + IMU |
| OAK-D | 2.5–4W | USB3 | Integrated AI acceleration |
| GPS module | 0.1–0.5W | UART | NEO-6M, etc. |
Communication Modules
| Module | Typical Power | Notes |
|---|---|---|
| WiFi (ESP32) | 0.5–1W | Higher during transmission |
| Bluetooth (BLE) | 0.01–0.05W | Low-power Bluetooth |
| 4G LTE module | 1–3W | SIM7600, etc. |
| 5G module | 3–8W | High bandwidth |
| LoRa | 0.1–0.5W | 0.5W during transmission |
| 2.4 GHz RC receiver | 0.05–0.1W | FlySky, etc. |
Other
| Component | Typical Power | Notes |
|---|---|---|
| LED strip (30 LED/m, 0.5 m) | 2–5W | WS2812B |
| Fan (40 mm) | 0.5–2W | Cooling |
| Speaker/buzzer | 0.1–1W | |
| OLED display | 0.05–0.1W | SSD1306 |
| 7" LCD touchscreen | 2–4W | Raspberry Pi DSI display |
Power Budget Worksheet
Template
| Subsystem | Component | Quantity | Unit Power (W) | Total Power (W) | Duty Cycle | Avg Power (W) |
|---|---|---|---|---|---|---|
| Compute | Jetson Orin NX | 1 | 25 | 25 | 80% | 20 |
| Motors | BLDC joint motors | 4 | 30 | 120 | 50% | 60 |
| Sensors | RealSense D435i | 1 | 3 | 3 | 100% | 3 |
| Sensors | 2D LiDAR | 1 | 2.5 | 2.5 | 100% | 2.5 |
| Sensors | IMU | 1 | 0.02 | 0.02 | 100% | 0.02 |
| Communication | WiFi module | 1 | 1 | 1 | 100% | 1 |
| Display | OLED | 1 | 0.1 | 0.1 | 50% | 0.05 |
| Cooling | Fan | 2 | 1 | 2 | 70% | 1.4 |
| Total | 153.62 | 87.97 |
Duty Cycle Explanation
The duty cycle reflects the average load of a component during actual use:
- 100%: Always running at full load (sensors, communication)
- 50–80%: Intermittent full load (compute platforms, motors)
- <50%: Occasionally used (display, LEDs)
Average power calculation:
Efficiency Loss Analysis
DC-DC Conversion Efficiency
Actual battery power draw must account for conversion efficiency:
| Conversion Path | Efficiency \(\eta\) | Load Power | Battery-Side Power |
|---|---|---|---|
| 24V → 5V (Jetson) | 90% | 20W | 22.2W |
| 24V direct drive (motors) | 95%* | 60W | 63.2W |
| 24V → 12V (LiDAR) | 92% | 2.5W | 2.7W |
| 24V → 5V (sensors) | 90% | 5W | 5.6W |
| 24V → 3.3V (MCU) | 88% | 0.5W | 0.57W |
| Total | 88W | 94.3W |
*Motor driver efficiency
Wire Losses
Long cables introduce resistance, causing voltage drops and power losses:
Where \(\rho\) is copper's resistivity (\(1.68 \times 10^{-8}\ \Omega \cdot m\)), \(L\) is wire length, and \(A\) is cross-sectional area.
Example: 1 m long, 0.5 mm² copper wire carrying 5A:
Runtime Estimation
Basic Formula
Practical Estimation Example
Assuming a 6S 4P 18650 battery pack (Samsung 30Q):
- Voltage: \(6 \times 3.6V = 21.6V\)
- Capacity: \(4 \times 3.0Ah = 12.0Ah\)
- Energy: \(21.6V \times 12.0Ah = 259.2Wh\)
- Usable energy (80% depth of discharge): \(259.2 \times 0.8 = 207.4Wh\)
Battery-side average power consumption 94.3W (including efficiency losses):
Runtime by Operating Mode
| Operating Mode | Estimated Power | Runtime |
|---|---|---|
| Standby (sensors on, motors off) | 30W | 6.9 h |
| Low-speed cruising (motors 50% load) | 60W | 3.5 h |
| Normal operation | 94W | 2.2 h |
| Full-speed motion (motors full load) | 150W | 1.4 h |
| Peak (all subsystems at max) | 200W+ | <1 h |
Power Optimization Strategies
Hardware Level
- Choose high-efficiency DC-DCs: Synchronous rectification Buck can reach 95%+
- Dynamic voltage regulation: Adjust motor drive voltage based on load
- Power zoning: Completely power off unused subsystems (MOSFET switch control)
- Choose low-power components: E.g., use ESP32 instead of a WiFi dongle
Software Level
-
Compute platform power modes: Jetson can switch power profiles at runtime
# Jetson Orin check current mode sudo nvpmodel -q # Switch to 15W mode sudo nvpmodel -m 2 -
On-demand sensor activation: Turn off LiDAR when 3D point cloud is not needed
- Reduce sampling rates: Lower camera frame rate during slow movement
-
CPU/GPU frequency scaling: Reduce frequency under light loads
# Jetson set to power-saving mode sudo jetson_clocks --store sudo jetson_clocks --restore # Restore -
WiFi power saving mode:
# Enable WiFi power saving sudo iw dev wlan0 set power_save on
Algorithm Level
- Reduce unnecessary inference: Run object detection only when motion is detected
- Model quantization: INT8 inference saves ~50% power compared to FP32
- Edge compute offloading: Offload heavy computation tasks to a server via WiFi
- Adaptive perception: Adjust algorithm precision based on scene complexity
Power Monitoring
Hardware Monitoring
| Solution | Accuracy | Cost | Suitable For |
|---|---|---|---|
| INA219 (I2C power meter) | ±1% | $3 | Single-channel precise monitoring |
| INA3221 (3-channel) | ±1% | $5 | Multi-channel simultaneous monitoring |
| Shunt resistor + ADC | ±2–5% | $1 | Simple, low cost |
| USB power meter | ±2% | $10 | Testing USB devices |
INA219 measurement principle:
Software Monitoring (Jetson Platform)
# Check Jetson power consumption
sudo cat /sys/bus/i2c/drivers/ina3221x/*/iio:device*/in_power*_input
# Using tegrastats
sudo tegrastats --interval 1000
# Using jtop (recommended)
pip install jetson-stats
sudo jtop
Power Logging
import time
import board
import busio
from adafruit_ina219 import INA219
i2c = busio.I2C(board.SCL, board.SDA)
ina = INA219(i2c)
with open("power_log.csv", "w") as f:
f.write("time_s,voltage_V,current_mA,power_mW\n")
start = time.time()
while True:
t = time.time() - start
v = ina.bus_voltage
i = ina.current
p = ina.power
f.write(f"{t:.2f},{v:.3f},{i:.1f},{p:.1f}\n")
time.sleep(0.1)
References
- NVIDIA Jetson Power Management: developer.nvidia.com
- Texas Instruments: Power Budget Calculator Tools
- INA219 Datasheet (TI)
- "Low-Power Embedded System Design"