A processor-implemented method for controlling buoyancy of an underwater vehicle having a first reservoir and a second reservoir separated by a movable plunger, wherein the movable plunger forms a shared boundary between the first reservoir and the second reservoir, wherein the movable plunger is configured such that an increase in volume of the first reservoir results in a decrease in volume of the second reservoir, and further such that an increase in volume of the second reservoir results in a decrease in volume of the first reservoir, the method being performed by one or more processors configured to execute computer program instructions, the method comprising:
- receiving a flow signal conveying information associated with a flow of one or more media in the first and second reservoirs;
- controlling, using one or more processors, transfers of the one or more media between the first and second reservoirs, and changing the volumes of the first and second reservoirs by moving the movable plunger, wherein changing the volumes of the first and second reservoirs causes a change in buoyancy of the underwater vehicle, and wherein the controlling and changing are based on the flow signal.