double_pendulum.utils
Subpackages
Submodules
double_pendulum.utils.cmaes_controller_par_optimizer
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)