Open Source Robotics

A curated collection of high-quality open source robotics projects, tools, and software to propel the robotics community forward.

Energy tank

  • Also called: virtual energy tank, tank-based passivity
  • Category: Control › Force & interaction control
  • Tags: passivity, interaction-control, safety, teleoperation, impedance-control

A virtual energy store in a robot controller that tracks energy dissipated and injected, allowing non-passive control actions only while the tank holds energy so the system stays passive.

Definition

An energy tank is a virtual storage element added to a robot controller to keep the closed-loop system passive while still allowing control actions that are not passive on their own. Passivity means a system cannot release more energy than it has stored plus what it has been given, and a passive robot interacting with a passive environment, such as a person or a rigid surface, remains stable. Impedance control with constant stiffness and damping is passive, but many useful extensions are not: time-varying stiffness, force tracking, switching between tasks, learned policies and time-delayed communication in teleoperation can all inject energy and cause instability or unsafe motion.

The tank is a controller state, commonly written x_t with stored energy T = ½ x_t², coupled to the rest of the controller through a power port. Energy that the controller dissipates, for example through its damping term, flows into the tank, and energy required by the non-passive part of the controller is drawn from it. As long as the tank holds energy, the non-passive action is allowed; when the stored energy falls to a lower threshold, that action is switched off or scaled down and the controller falls back to passive behavior, which also keeps the tank state away from zero, where its dynamics become singular. An upper limit on stored energy stops the tank from building up a reserve large enough to release a dangerous burst later. Because robot, controller and tank together exchange energy with the environment only through the physical interaction port, the augmented system is passive by construction. The idea grew out of port-Hamiltonian modeling and passivity-based bilateral teleoperation and is now widely used in variable impedance control and physical human-robot interaction.

Energy tanks limit how much energy the controller can inject over time, but not how quickly. A full tank can still be emptied fast, so power, and with it peak force or speed, is bounded only indirectly through the tank limits. Choosing the initial energy, the thresholds and the refill policy is part of the design, and a budget that is too small makes the controller fall back to passive behavior often. Power-based safety layers and control barrier functions on energy or power are related approaches that constrain the rate of energy flow directly; the work on aerial vehicles in physical interaction listed below proposes a power-based layer for this reason.

Why it matters

Robots that touch people and their surroundings need controllers that adapt, learn or track forces, and many such changes break the stability guarantees of classical interaction control. Energy tanks give a simple, general way to keep a passivity guarantee while allowing these behaviors, which has made them a standard safety element in physical interaction, teleoperation and variable impedance control.

Key applications

  • Variable impedance and variable stiffness control
  • Bilateral teleoperation with communication delay
  • Physical human-robot interaction with adaptive or learned controllers
  • Force tracking and contact tasks on manipulators and aerial robots
  • Task switching and prioritized control without loss of passivity

In practice

A collaborative arm runs impedance control and must stiffen when carrying a part and soften when a person guides it by hand. Raising the stiffness while the arm is deflected adds energy to the virtual spring, which can break passivity. The team adds an energy tank: the damping term of the impedance controller fills it, and every increase in stiffness draws the corresponding energy from it. They choose an initial budget and an upper limit, and log the tank level during tests. When an operator repeatedly pushes the arm while the stiffness profile is ramping up, the tank drains to its lower threshold, the stiffness change pauses, and the arm continues with its last impedance until damping has refilled the tank.

Common misconceptions

  • An energy tank directly limits force or speed — it limits energy over time, and a full tank can still release energy quickly, so power is bounded only indirectly
  • A passive controller is safe in every sense — passivity guarantees stable interaction with passive environments, not that contact forces, speeds or workspace limits stay within safe values
  • The tank is a physical component — it is a virtual state inside the controller software with no hardware counterpart
  • A larger tank is always better — a larger stored budget allows larger non-passive actions and bigger energy releases, which weakens the safety benefit

Who should know this

  • Interaction and impedance control engineers
  • Teleoperation system developers
  • Physical human-robot interaction researchers
  • Aerial manipulation and contact inspection engineers

Related technologies

  • Passivity-Based Control
  • Port-Hamiltonian Systems
  • Variable Impedance Control
  • Time-Domain Passivity Control
  • Control Barrier Functions

Related terms

  • Impedance Control
  • Admittance Control
  • Physical Human-Robot Interaction
  • Teleoperation
  • Control Barrier Function
  • Safety Filter

Related projects

  • SO-101 Open Robot Arm: 6-DOF robot arm for teleoperation and AI robotics research
  • XLeRobot: Practical dual-arm mobile home robot for $660 with <4hrs assembly
  • DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
  • Mobile ALOHA: Bimanual mobile manipulation with 4 robot arms on a wheeled base for teleoperation
  • GEAR-SONIC: NVIDIA's whole-body controller for the Unitree G1, trained to track any human motion
  • OpenArm: 7DOF humanoid arm for physical AI research in contact-rich environments

This website requires JavaScript to function properly. Please enable JavaScript to explore our collection of open source robotics projects.