  Humans manipulate various kinds of fluids in their everyday life: creating
latte art, scooping floating objects from water, rolling an ice cream cone,
etc. Using robots to augment or replace human labors in these daily settings
remain as a challenging task due to the multifaceted complexities of fluids.
Previous research in robotic fluid manipulation mostly consider fluids governed
by an ideal, Newtonian model in simple task settings (e.g., pouring). However,
the vast majority of real-world fluid systems manifest their complexities in
terms of the fluid's complex material behaviors and multi-component
interactions, both of which were well beyond the scope of the current
literature. To evaluate robot learning algorithms on understanding and
interacting with such complex fluid systems, a comprehensive virtual platform
with versatile simulation capabilities and well-established tasks is needed. In
this work, we introduce FluidLab, a simulation environment with a diverse set
of manipulation tasks involving complex fluid dynamics. These tasks address
interactions between solid and fluid as well as among multiple fluids. At the
heart of our platform is a fully differentiable physics simulator, FluidEngine,
providing GPU-accelerated simulations and gradient calculations for various
material types and their couplings. We identify several challenges for fluid
manipulation learning by evaluating a set of reinforcement learning and
trajectory optimization methods on our platform. To address these challenges,
we propose several domain-specific optimization schemes coupled with
differentiable physics, which are empirically shown to be effective in tackling
optimization problems featured by fluid system's non-convex and non-smooth
properties. Furthermore, we demonstrate reasonable sim-to-real transfer by
deploying optimized trajectories in real-world settings.
