Numerical Optimization
cuRobo implements a few numerical optimization solvers. All solvers in cuRobo take in a rollout class
that will take as input [batch, horizon, dof]
actions and output [batch, horizon]
cost. Even
when running optimization over 1 seed, cuRobo internally uses 4 parallel line search scales to find
the best step direction. Check curobo.rollout.arm_base.ArmBase
for an example implementation
of the rollout class and curobo.opt.newton.newton_base.NewtonOptBase
for an implementation
of gradient descent.
cuRobo enables chaining solvers together so that solution from 1 solver can used as the seed for
another solver. This is done in the curobo.wrap.reacher.ik_solver.IKSolver
and
curobo.wrap.reacher.trajopt.TrajOptSolver
, where a random seed is optimized with MPPI before
sending to LBFGS as seen in the below graph.
The steps inside the optimization solver is illustrated for reference. #cccccc blocks indicate running rollout for 1 trajectory in the batch and green blocks refer to the cost terms.