Esempio n. 1
0
def dmpTrain(q, qd, qdd, dt, nSteps):
    params = dmpParams()
    # Set dynamic system parameters
    params.alphaz = 3 / (nSteps * dt - dt)
    params.alpha = 25
    params.beta = 6.25
    params.Ts = nSteps * dt - dt
    params.tau = 1
    params.nBasis = 50
    params.goal = np.asarray(q[:, -1])  # np.asarray([0.3, -0.8])

    # Daniel: This should actually be Psi, right?
    Phi = getDMPBasis(params, dt, nSteps)

    # Compute the forcing function
    ft = 1 / params.tau ** 2 * qdd - 1 / params.tau * (0 - qd) \
         - params.alpha * params.beta * (params.goal.reshape(2, 1) - q)  #

    # Learn the weights
    sigma = 10**-12
    params.w = np.linalg.inv(Phi.transpose().dot(Phi) + sigma ** 2 * np.identity(Phi.shape[1])).dot(Phi.transpose()) \
        .dot(ft.transpose())

    params = dmpParams()
    # Set dynamic system parameters
    params.alphaz = 3 / (nSteps * dt)
    params.alpha = 25
    params.beta = 6.25
    params.Ts = nSteps * dt
    params.tau = 1
    params.nBasis = 50
    params.goal = q[:, -1]

    Phi = getDMPBasis(params, dt, nSteps)

    # Compute the forcing function
    a = qdd / params.tau**2
    b = params.alpha * params.beta * (params.goal[:, np.newaxis] - q)
    c = params.alpha * qd / params.tau
    ft = a - b + c

    # Learn the weights
    sigma = 10**-12
    N, M = Phi.shape
    pseudo_inv = np.linalg.inv(Phi.T @ Phi + sigma**2 * np.eye(M, M))
    params.w = pseudo_inv @ Phi.T @ ft.T

    return params
Esempio n. 2
0
def dmpTrain(q, qd, qdd, dt, nSteps):

    params = dmpParams()
    #Set dynamic system parameters
    T = dt * nSteps - dt
    params.alphaz = 3 / T
    params.alpha = 25
    params.beta = 6.25
    params.Ts = T
    params.tau = 1
    params.nBasis = 50
    params.goal = np.array([[0.3, -0.8]])
    sigma = 1e-8

    Phi = getDMPBasis(params, dt, nSteps)
    print("Phi: ", Phi)

    #Compute the forcing function
    ft = qdd / (params.tau**
                2) - params.alpha * (params.beta *
                                     (params.goal.T - q) - qd / params.tau)
    #Learn the weights
    sigma = 1e-8
    pseudo_inv = np.linalg.inv(
        (np.dot(Phi.T, Phi) + sigma * np.eye(Phi.shape[1])))
    params.w = np.dot(np.dot(pseudo_inv, Phi.T), ft.T)

    return params
Esempio n. 3
0
def dmpTrain(q, qd, qdd, dt, nSteps):
    # shape of q, qd, qdd is (2, 1499)
    # nSteps = 1499
    params = dmpParams()
    #Set dynamic system parameters
    params.alphaz = 3 / (nSteps * dt)
    params.alpha = 25
    params.beta = 6.25
    # params.Ts     = nSteps * dt
    params.tau = 1
    params.nBasis = 50

    # Phi is the basis functions phi(z)
    Phi = getDMPBasis(params, dt, nSteps)

    # Parameters need to compute forcing function.
    a = params.alpha
    b = params.beta
    t = params.tau
    g = params.goal

    # Compute the forcing function
    ft = np.zeros(shape=(1499, 2))
    for i in range(nSteps):
        ft[i, :] = qdd[:, i] / np.square(t) - a * (b * (g - q[:, i]) -
                                                   qd[:, i] / t)

    #Learn the weights
    params.w = np.matmul(np.linalg.pinv(Phi), ft)

    return params
Esempio n. 4
0
def simSys(states, dmpParams, dt, nSteps):
    Phi = getDMPBasis(dmpParams, dt, nSteps)

    for i in range(nSteps - 1):
        qdd = dmpCtl(dmpParams, Phi[i, :].transpose(), states[i, ::2],
                     states[i, 1::2].transpose())
        # raw_input()
        states[i + 1, 1::2] = states[i, 1::2] + dt * qdd
        states[i + 1, ::2] = states[i, ::2] + dt * states[i, 1::2]

    return states
Esempio n. 5
0
def simSys(states, dmpParams, dt, nSteps):

    Phi = getDMPBasis(dmpParams, dt, nSteps)

    for i in range(nSteps - 1):
        # TO-DO: implement the dmpCtl() function, to get the y_dd(same symbol as the exercise)
        # y_dd = t^2( a(b(g-y)-y_d/t) + fw(z))
        qdd = dmpCtl(dmpParams, Phi[i, :].transpose(), states[i, ::2],
                     states[i, 1::2].transpose())
        #raw_input()
        states[i + 1, 1::2] = states[i, 1::2] + dt * qdd
        states[i + 1, ::2] = states[i, ::2] + dt * states[i, 1::2]

    return states
Esempio n. 6
0
def dmpTrain (q, qd, qdd, dt, nSteps):

    params = dmpParams()
    #Set dynamic system parameters
    params.alphaz =
    params.alpha  =
    params.beta	 =
    params.Ts     =
    params.tau    =
    params.nBasis =
    params.goal   =

    Phi = getDMPBasis(params, dt, nSteps)

    #Compute the forcing function
    ft =

    #Learn the weights
    params.w =

    return params