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.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.