Example #1
0
        acc = dx[rmodel.nv:] / dt
        u = pinocchio.rnea(rmodel, rdata, a2m(xp[:rmodel.nq]),
                           a2m(xp[rmodel.nq:]), a2m(acc))
        m.differential.calc(d.differential, init.X[-1])
        contactJ = d.differential.contact.J
        f = np.dot(np.linalg.pinv(contactJ.T[:6, :]), u[:6])
        u -= (np.dot(contactJ.transpose(), f))
        init.U.append(np.array(u[6:]).squeeze().copy())
init.X.append(conf.X_init[-1])
# ---------------Display Initial Trajectory--------------
if conf.DISPLAY:
    robot.initDisplay(loadModel=True)
if conf.DISPLAY:
    for x in init.X:
        robot.display(a2m(x[:robot.nq]))
        # sleep(0.005)
# ----------------------

ddp = SolverDDP(problem)
ddp.callback = [CallbackDDPVerbose()]  # CallbackSolverTimer()]
if conf.RUNTIME_DISPLAY:
    ddp.callback.append(CallbackSolverDisplay(robot, 4))
ddp.th_stop = 1e-9
ddp.solve(maxiter=1000, regInit=0.1, init_xs=init.X, init_us=init.U)
# ---------------Display Final Trajectory--------------
if conf.DISPLAY:
    for x in init.X:
        robot.display(a2m(x[:robot.nq]))
        # sleep(0.005)
# ----------------------
Example #2
0
x0 = m2a(np.concatenate([q0, v0]))

# Setting up the 3d walking problem
lfFoot = 'lf_foot'
rfFoot = 'rf_foot'
lhFoot = 'lh_foot'
rhFoot = 'rh_foot'
walk = SimpleQuadrupedProblem(rmodel, lfFoot, rfFoot, lhFoot, rhFoot)

# Setting up the walking variables
comGoTo = 0.1  # meters
timeStep = 5e-2  # seconds
supportKnots = 2

# Creating the CoM problem and solving it
ddp = SolverDDP(walk.createProblem(x0, comGoTo, timeStep, supportKnots))
# ddp.callback = [ CallbackDDPVerbose() ]
ddp.th_stop = 1e-9
ddp.solve(maxiter=1000,
          regInit=.1,
          init_xs=[rmodel.defaultState] * len(ddp.models()))

# Checking the CoM displacement
x0 = ddp.xs[0]
xT = ddp.xs[-1]
q0 = a2m(x0[:rmodel.nq])
qT = a2m(xT[:rmodel.nq])
data0 = rmodel.createData()
dataT = rmodel.createData()
comT = pinocchio.centerOfMass(rmodel, dataT, qT)
com0 = pinocchio.centerOfMass(rmodel, data0, q0)