  We present CineMPC, a complete cinematographic system that autonomously
controls a drone to film multiple targets recording user-specified aesthetic
objectives. Existing solutions in autonomous cinematography control only the
camera extrinsics, namely its position, and orientation. In contrast, CineMPC
is the first solution that includes the camera intrinsic parameters in the
control loop, which are essential tools for controlling cinematographic effects
like focus, depth-of-field, and zoom. The system estimates the relative poses
between the targets and the camera from an RGB-D image and optimizes a
trajectory for the extrinsic and intrinsic camera parameters to film the
artistic and technical requirements specified by the user. The drone and the
camera are controlled in a nonlinear Model Predicted Control (MPC) loop by
re-optimizing the trajectory at each time step in response to current
conditions in the scene. The perception system of CineMPC can track the
targets' position and orientation despite the camera effects. Experiments in a
photorealistic simulation and with a real platform demonstrate the capabilities
of the system to achieve a full array of cinematographic effects that are not
possible without the control of the intrinsics of the camera. Code for CineMPC
is implemented following a modular architecture in ROS and released to the
community.
