MMT TE Modeling Reproduction
Reproduce the analytical equation surface from MMT_TEModeling.
The script implements the numbered equation groups from Yang et al.,
A modelling approach for kinematic equivalent mechanism and rotational
transmission error of RV reducer. The included command-line entry point runs
a small RV-80E demonstration with transparent equivalent-error values.
The demo is an executable equation-chain check, not a claim of exact figure reproduction. Exact figure reproduction requires the reducer-specific cycloidal contact geometry and measured component errors for every sample.
- class scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.ReducerParameters(z1=10, z2=38, z4=39, z5=40, module_mm=1.75, pressure_angle_rad=0.3490658503988659, pin_pitch_radius_mm=77.5, crank_eccentricity_mm=1.5, pin_radius_mm=4.0)[source]
Bases:
objectStore fixed reducer geometry for the analytical model.
- Parameters:
z1 (int)
z2 (int)
z4 (int)
z5 (int)
module_mm (float)
pressure_angle_rad (float)
pin_pitch_radius_mm (float)
crank_eccentricity_mm (float)
pin_radius_mm (float)
- z1
Sun gear tooth count.
- Type:
int
- z2
Planetary gear tooth count.
- Type:
int
- z4
Cycloidal gear tooth count.
- Type:
int
- z5
Pin gear tooth count.
- Type:
int
- module_mm
Involute gear module in millimeters.
- Type:
float
- pressure_angle_rad
Working pressure angle in radians.
- Type:
float
- pin_pitch_radius_mm
Pin gear pitch circle radius.
- Type:
float
- crank_eccentricity_mm
Crankshaft eccentricity.
- Type:
float
- pin_radius_mm
Pin radius.
- Type:
float
- z1: int = 10
- z2: int = 38
- z4: int = 39
- z5: int = 40
- module_mm: float = 1.75
- pressure_angle_rad: float = 0.3490658503988659
- pin_pitch_radius_mm: float = 77.5
- crank_eccentricity_mm: float = 1.5
- pin_radius_mm: float = 4.0
- property carrier_radius_mm: float
Return the sun-to-planet-center distance used by the demo.
- property sun_base_radius_mm: float
Return the sun gear base radius for the equivalent involute link.
- property planetary_base_radius_mm: float
Return the planetary gear base radius for the equivalent link.
- property normal_link_length_mm: float
Return an involute normal-link length used by the demo geometry.
- property whole_machine_ratio: float
Return input angle divided by output angle from Eq. (2).
- class scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.EquivalentErrors(delta_l_b1_mm=0.0, delta_l_b2_mm=0.005, delta_l_h_mm=0.004, delta_l_c_mm=0.005, delta_l_a_mm=0.003, delta_l_v_mm=0.0, delta_l_r_mm=0.005, accumulative_pitch_error_mm=0.005, cycloidal_profile_error_mm=0.005, pin_radius_error_mm=0.002, delta_theta_b1_rad=0.0, curvature_radius_positive=True)[source]
Bases:
objectStore equivalent original-error amplitudes for one model evaluation.
All length values are millimeters and all angles are radians.
- Parameters:
delta_l_b1_mm (float)
delta_l_b2_mm (float)
delta_l_h_mm (float)
delta_l_c_mm (float)
delta_l_a_mm (float)
delta_l_v_mm (float)
delta_l_r_mm (float)
accumulative_pitch_error_mm (float)
cycloidal_profile_error_mm (float)
pin_radius_error_mm (float)
delta_theta_b1_rad (float)
curvature_radius_positive (bool)
- delta_l_b1_mm: float = 0.0
- delta_l_b2_mm: float = 0.005
- delta_l_h_mm: float = 0.004
- delta_l_c_mm: float = 0.005
- delta_l_a_mm: float = 0.003
- delta_l_v_mm: float = 0.0
- delta_l_r_mm: float = 0.005
- accumulative_pitch_error_mm: float = 0.005
- cycloidal_profile_error_mm: float = 0.005
- pin_radius_error_mm: float = 0.002
- delta_theta_b1_rad: float = 0.0
- curvature_radius_positive: bool = True
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.safe_sin(angle_rad)[source]
Return sine values with tiny denominators guarded.
- Parameters:
angle_rad (ndarray | float)
- Return type:
ndarray
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.angle_difference(theta_x_rad, theta_y_rad)[source]
Implement the paper shorthand theta_x,y = theta_x - theta_y.
- Parameters:
theta_x_rad (ndarray | float)
theta_y_rad (ndarray | float)
- Return type:
ndarray
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.output_and_crank_angles(theta_1_rad, parameters)[source]
Implement Eq. (2) for output and crankshaft angles.
- Parameters:
theta_1_rad (ndarray)
parameters (ReducerParameters)
- Return type:
tuple[ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.parallelogram_angles(theta_h_rad, theta_3_rad)[source]
Implement Eq. (3) for the three parallelogram loops.
- Parameters:
theta_h_rad (ndarray)
theta_3_rad (ndarray)
- Return type:
tuple[ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.involute_linkage_angles(theta_h1_rad, pressure_angle_rad)[source]
Implement Eq. (4) for equivalent involute link angles.
- Parameters:
theta_h1_rad (ndarray)
pressure_angle_rad (float)
- Return type:
tuple[ndarray, ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.pin_angle(pin_index, pin_count)[source]
Implement Eq. (7) for pin angular positions.
- Parameters:
pin_index (ndarray)
pin_count (int)
- Return type:
ndarray
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.pin_and_cycloid_centers(theta_p_rad, theta_a_rad, parameters)[source]
Implement Eq. (6) for pin and cycloidal-gear center coordinates.
- Parameters:
theta_p_rad (ndarray)
theta_a_rad (ndarray)
parameters (ReducerParameters)
- Return type:
tuple[ndarray, ndarray, ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.contact_linkage_angles(x_c_mm, y_c_mm, x_k_mm, y_k_mm, x_o4_mm, y_o4_mm)[source]
Implement Eq. (5) with quadrant-safe arctangent.
- Parameters:
x_c_mm (ndarray)
y_c_mm (ndarray)
x_k_mm (ndarray)
y_k_mm (ndarray)
x_o4_mm (ndarray)
y_o4_mm (ndarray)
- Return type:
tuple[ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.velocity_transfer_ratios(parameters)[source]
Implement Eqs. (19)-(22) in their tooth-count form.
- Parameters:
parameters (ReducerParameters)
- Return type:
tuple[float, float, float, float]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.cycloid_profile_pin_radius_errors(theta_k_rho_rad, errors)[source]
Implement Eqs. (35)-(36) for profile and pin-radius errors.
- Parameters:
theta_k_rho_rad (ndarray)
errors (EquivalentErrors)
- Return type:
tuple[ndarray, ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.output_disc_assembly_errors(output_disc_error_mm, output_disc_error_angle_rad, theta_h_rad, theta_v_rad)[source]
Implement Eq. (37) for output-disc assembly error.
- Parameters:
output_disc_error_mm (float)
output_disc_error_angle_rad (float)
theta_h_rad (ndarray)
theta_v_rad (ndarray)
- Return type:
tuple[ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.measured_rte(theta_h_rad, theta_1_rad, speed_ratio)[source]
Implement Eq. (38) for test-bench RTE.
- Parameters:
theta_h_rad (ndarray)
theta_1_rad (ndarray)
speed_ratio (float)
- Return type:
ndarray
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.compute_subsystem_errors(parameters, errors, theta_b1_rad, theta_n_rad, theta_b2_rad, theta_h1_rad, theta_hi_rad, theta_ai_rad, theta_v_rad, theta_ci_rad, theta_k_rad, theta_rho_rad, theta_p_rad, delta_l_k_mm, delta_l_rho_mm)[source]
Implement Eqs. (31)-(34) for subsystem error terms.
- Parameters:
parameters (ReducerParameters)
errors (EquivalentErrors)
theta_b1_rad (ndarray)
theta_n_rad (ndarray)
theta_b2_rad (ndarray)
theta_h1_rad (ndarray)
theta_hi_rad (ndarray)
theta_ai_rad (ndarray)
theta_v_rad (ndarray)
theta_ci_rad (ndarray)
theta_k_rad (ndarray)
theta_rho_rad (ndarray)
theta_p_rad (ndarray)
delta_l_k_mm (ndarray)
delta_l_rho_mm (ndarray)
- Return type:
tuple[ndarray, ndarray, ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.whole_machine_rte_universal(f1, f2i, f3, f4i, parameters)[source]
Implement Eq. (29), the universal transfer-coefficient expression.
- Parameters:
f1 (ndarray)
f2i (ndarray)
f3 (ndarray)
f4i (ndarray)
parameters (ReducerParameters)
- Return type:
ndarray
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.whole_machine_rte_one_tooth(f1, f2i, f3, f4i, parameters)[source]
Implement Eq. (30), the one-tooth-difference RV expression.
- Parameters:
f1 (ndarray)
f2i (ndarray)
f3 (ndarray)
f4i (ndarray)
parameters (ReducerParameters)
- Return type:
ndarray
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.run_rv80e_demo(sample_count=11440)[source]
Run an executable RV-80E equation-chain demonstration.
- Parameters:
sample_count (int)
- Return type:
tuple[ndarray, ndarray]
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.print_demo_summary(theta_h_rad, rte_rad)[source]
Print a compact numerical summary for the demonstration run.
- Parameters:
theta_h_rad (ndarray)
rte_rad (ndarray)
- Return type:
None
- scripts.paper_reimplementation.mmt_te_modeling.mmt_te_modeling_reproduction.main()[source]
Run the script demonstration entry point.
- Return type:
None