double_pendulum.utils

Subpackages

Submodules

double_pendulum.utils.cmaes_controller_par_optimizer

class double_pendulum.utils.cmaes_controller_par_optimizer.swingup_loss(simulator, controller, t_final, dt, x0, integrator, goal, goal_accuracy, bounds, repetitions=1, loss_weights=[1.0, 0.0, 0.0])

Bases: object

rescale_pars(pars)
unscale_pars(pars)
class double_pendulum.utils.cmaes_controller_par_optimizer.traj_opt_loss(traj_opt, goal, bounds, repetitions=1, loss_weights=[1.0, 0.0, 0.0])

Bases: object

rescale_pars(pars)
unscale_pars(pars)

double_pendulum.utils.csv_trajectory

double_pendulum.utils.csv_trajectory.concatenate_trajectories(csv_paths=[], with_tau=True)
double_pendulum.utils.csv_trajectory.load_Kk_values(csv_path)
double_pendulum.utils.csv_trajectory.load_trajectory(csv_path, with_tau=True)
double_pendulum.utils.csv_trajectory.load_trajectory_full(csv_path)
double_pendulum.utils.csv_trajectory.save_trajectory(csv_path, T=None, X=None, U=None, ACC=None, X_meas=None, X_filt=None, X_des=None, U_con=None, U_fric=None, U_meas=None, U_des=None, K=None, k=None)
double_pendulum.utils.csv_trajectory.trajectory_properties(T, X)

double_pendulum.utils.optimization

double_pendulum.utils.optimization.cma_optimization(loss_func, init_pars, bounds, save_dir='outcmaes/', sigma0=0.4, popsize_factor=3, maxfevals=10000, tolfun=1e-11, tolx=1e-11, tolstagnation=100, num_proc=0)
double_pendulum.utils.optimization.scipy_par_optimization(loss_func, init_pars, bounds, method='Nelder-Mead', maxfevals=10000)
double_pendulum.utils.optimization.solve_least_squares(loss_func, xb0, bounds, maxfevals)

double_pendulum.utils.pcw_polynomial

class double_pendulum.utils.pcw_polynomial.FitPiecewisePolynomial(data_x, data_y, num_break, poly_degree)

Bases: object

Gets data and number of break points and fit cubic segment polynomials to each section of data. data_x: a numpy array x data, usually time, that we want to fit polynomial to it data_y: y data that we want to fit polynomial to it

create_section_poly()

This function takes the splitted data(x, y) and return 2 lists - list of the x-data to be fitted to the setion data - list of the fitted value

determin_poly()
end_time()
get_value(value)
split_data(data)

Takes the original data and return a list of splitted arrays

start_time()
class double_pendulum.utils.pcw_polynomial.InterpolateMatrix(T, X, num_break=40, poly_degree=3)

Bases: object

get_value(value)
class double_pendulum.utils.pcw_polynomial.InterpolateVector(T, X, num_break=40, poly_degree=3)

Bases: object

get_value(value)
double_pendulum.utils.pcw_polynomial.ResampleTrajectory(T, X, U, dt, num_break=40, poly_degree=3)
double_pendulum.utils.pcw_polynomial.poly1(t, A, B)
double_pendulum.utils.pcw_polynomial.poly2(t, A, B, C)
double_pendulum.utils.pcw_polynomial.poly3(t, A, B, C, D)

double_pendulum.utils.plotting

double_pendulum.utils.plotting.plot_figures(save_dir, index, meas_time, shoulder_meas_pos, shoulder_meas_vel, shoulder_meas_tau, elbow_meas_pos, elbow_meas_vel, elbow_meas_tau, shoulder_tau_controller, elbow_tau_controller, shoulder_filtered_vel=None, elbow_filtered_vel=None, shoulder_des_time=None, shoulder_des_pos=None, shoulder_des_vel=None, shoulder_des_tau=None, elbow_des_time=None, elbow_des_pos=None, elbow_des_vel=None, elbow_des_tau=None, shoulder_fric_tau=None, elbow_fric_tau=None, error=None, show=True)
double_pendulum.utils.plotting.plot_timeseries(T, X=None, U=None, ACC=None, energy=None, plot_pos=True, plot_vel=True, plot_acc=False, plot_tau=True, plot_energy=False, pos_x_lines=[], pos_y_lines=[], vel_x_lines=[], vel_y_lines=[], acc_x_lines=[], acc_y_lines=[], tau_x_lines=[], tau_y_lines=[], energy_x_lines=[], energy_y_lines=[], T_des=None, X_des=None, U_des=None, X_meas=None, X_filt=None, U_con=None, U_friccomp=None, ACC_des=None, save_to=None, show=True, scale=1.0)

double_pendulum.utils.urdfs

double_pendulum.utils.urdfs.generate_urdf(urdf_in, urdf_out, mass=[0.5, 0.6], length=[0.3, 0.2], com=[0.3, 0.2], damping=[0.1, 0.1], coulomb_fric=[0.0, 0.0], inertia=[0.054, 0.025], torque_limit=[6.0, 6.0], model_pars=None)
double_pendulum.utils.urdfs.remove_namespaces(tree)

double_pendulum.utils.wrap_angles

double_pendulum.utils.wrap_angles.wrap_angles(x)
double_pendulum.utils.wrap_angles.wrap_angles_diff(x)
double_pendulum.utils.wrap_angles.wrap_angles_top(x)