  Humanoid robots are machines built with an anthropomorphic shape. Despite
decades of research into the subject, it is still challenging to tackle the
robot locomotion problem from an algorithmic point of view. For example, these
machines cannot achieve a constant forward body movement without exploiting
contacts with the environment. The reactive forces resulting from the contacts
are subject to strong limitations, complicating the design of control laws. As
a consequence, the generation of humanoid motions requires to exploit fully the
mathematical model of the robot in contact with the environment or to resort to
approximations of it.
  This thesis investigates predictive and optimal control techniques for
tackling humanoid robot motion tasks. They generate control input values from
the system model and objectives, often transposed as cost function to minimize.
In particular, this thesis tackles several aspects of the humanoid robot
locomotion problem in a crescendo of complexity. First, we consider the single
step push recovery problem. Namely, we aim at maintaining the upright posture
with a single step after a strong external disturbance. Second, we generate and
stabilize walking motions. In addition, we adopt predictive techniques to
perform more dynamic motions, like large step-ups.
  The above-mentioned applications make use of different simplifications or
assumptions to facilitate the tractability of the corresponding motion tasks.
Moreover, they consider first the foot placements and only afterward how to
maintain balance. We attempt to remove all these simplifications. [continued]
