rofunc.learning.RofuncML.utils#

1.  Module Contents#

1.1.  Functions#

quaternion_from_homo_matrix

Return quaternion from rotation matrix.

get_canonical

multi_timestep_matrix

fd_transform

Finite difference transform matrix

multi_timestep_fd_q

param rs:

list of std deviations of derivatives

param xi_dim:

param nb_past:

param dt:

return:

lifted_noise_matrix

Given a linear system with white noise, as in LQG,

lifted_transfer_matrix

Given a linear system

gu_pinv

create_relative_time

param q:

[list of int] List of state indicator. ex: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, …]

return time:

[np.array(nb_timestep,)] Phase for each of the timestep

align_trajectories_hsmm

align_trajectories

param data:

[list of np.array([nb_timestep, M, N, …])]

return:

angle_to_rotation

feature_to_slice

dtype_to_index

plot_model_time

homo_matrix_from_quaternion

Return homogeneous rotation matrix from quaternion.

plot_demos_3d

repro_plot

plot_model

plot_demos

train_test

repro_demo

1.2.  API#

rofunc.learning.RofuncML.utils.quaternion_from_homo_matrix(matrix, isprecise=False)[source]#

Return quaternion from rotation matrix.

If isprecise is True, the input matrix is assumed to be a precise rotation matrix and a faster algorithm is used.

rofunc.learning.RofuncML.utils.get_canonical(nb_dim, nb_deriv=2, dt=0.01)[source]#
rofunc.learning.RofuncML.utils.multi_timestep_matrix(A, B, nb_step=4)[source]#
rofunc.learning.RofuncML.utils.fd_transform(d, xi_dim, nb_past, dt=0.1)[source]#

Finite difference transform matrix

Parameters:
  • d

  • xi_dim

  • nb_past

  • dt

Returns:

rofunc.learning.RofuncML.utils.multi_timestep_fd_q(rs, xi_dim, dt)[source]#
Parameters:
  • rs – list of std deviations of derivatives

  • xi_dim

  • nb_past

  • dt

Returns:

rofunc.learning.RofuncML.utils.lifted_noise_matrix(A=None, B=None, nb_dim=3, dt=0.01, horizon=50)[source]#

Given a linear system with white noise, as in LQG,

\[\xi_{t+1} = \mathbf{A} (\xi_t + w_i) + \mathbf{B} u_t + v_i\]

returns the lifted form for noise addition, s_v, s_w,

\[\mathbf{\xi} = \mathbf{S}_{\xi} \xi_0 + \mathbf{S}_u \mathbf{u} + \mathbf{S}_v + \mathbf{S}_w\]
Returns:

s_u

rofunc.learning.RofuncML.utils.lifted_transfer_matrix(A=None, B=None, nb_dim=3, dt=0.01, horizon=50, sparse=False)[source]#

Given a linear system

\[\xi_{t+1} = \mathbf{A} \xi_t + \mathbf{B} u_t\]

returns the lifted form for T timesteps

\[\mathbf{\xi} = \mathbf{S}_{\xi} \xi_0 + \mathbf{S}_u \mathbf{u}\]
rofunc.learning.RofuncML.utils.gu_pinv(A, rcond=1e-15)[source]#
rofunc.learning.RofuncML.utils.create_relative_time(q, start=-1.0)[source]#
Parameters:

q – [list of int] List of state indicator. ex: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, …]

Return time:

[np.array(nb_timestep,)] Phase for each of the timestep

rofunc.learning.RofuncML.utils.align_trajectories_hsmm(data, nb_states=5)[source]#
rofunc.learning.RofuncML.utils.align_trajectories(data, additional_data=[], hsmm=True, nb_states=5)[source]#
Parameters:

data – [list of np.array([nb_timestep, M, N, …])]

Returns:

rofunc.learning.RofuncML.utils.angle_to_rotation(theta)[source]#
rofunc.learning.RofuncML.utils.feature_to_slice(nb_dim=2, nb_frames=None, nb_attractor=2, features=None)[source]#
rofunc.learning.RofuncML.utils.dtype_to_index(dtype)[source]#
rofunc.learning.RofuncML.utils.plot_model_time(model, demos, figsize=(10, 2), dim_idx=[1], demo_idx=0)[source]#
rofunc.learning.RofuncML.utils.homo_matrix_from_quaternion(quaternion)[source]#

Return homogeneous rotation matrix from quaternion.

>>> M = homo_matrix_from_quaternion([0.99810947, 0.06146124, 0, 0])
>>> np.allclose(M, rotation_matrix(0.123, [1, 0, 0]))
True
>>> M = homo_matrix_from_quaternion([1, 0, 0, 0])
>>> np.allclose(M, np.identity(4))
True
>>> M = homo_matrix_from_quaternion([0, 1, 0, 0])
>>> np.allclose(M, np.diag([1, -1, -1, 1]))
True
rofunc.learning.RofuncML.utils.plot_demos_3d(demos, figsize=(15, 5), angle=[60, 45])[source]#
rofunc.learning.RofuncML.utils.repro_plot(model, demos, save=False, tp_list=[], figsize=(3.5, 5))[source]#
rofunc.learning.RofuncML.utils.plot_model(model, demos, figsize=(8, 3.5), skill_name='temp', save=False)[source]#
rofunc.learning.RofuncML.utils.plot_demos(demos, data_dim, figsize=(8, 5))[source]#
rofunc.learning.RofuncML.utils.train_test(demos, demo_idx=0, nb_states=5, test=True, sensory=True, kbins=True, hmmr=True, nb_dim=3, nb_frames=2)[source]#
rofunc.learning.RofuncML.utils.repro_demo(model, hmmr, demos, demo_idx=0, start_point=None, plot_on=False)[source]#