|
REPY-2.0 1.0
Mechanical module for modular robotics
|
Builds the REPY module.
{
//-- Choose horn:
//-------------------------------------------------------------------------------------------
//-- Set servo tolerances:
//-------------------------------------------------------------------------------------------
servo->set_tolerances( body_servo_x_tol, body_servo_y_tol, 0);
//-- Calculate other useful dimensions:
//-------------------------------------------------------------------------------------------
//--Total side:
side = pcb->get_side() + 2* board_safe;
//-- Calculate the dimensions of the central part (not to be confused with central park):
central_part = ( servo->get_height() + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness) +
( upper_front_ear_thickness) +
//( servo->get_horn_h_top()); //-- For the smaller one.
( servo->get_horn_dist_axis() - servo->get_horn_h_axis() );
//-- Place servo:
//--------------------------------------------------------------------------------------------
servo->rotate(90, 0 , 180);
servo->translate(0, 0, servo->get_leg_y() + lower_base_thickness);
servo->translate( 0, -central_part/2.0 + upper_back_ear_thickness + ear_clearance_tol + lower_back_ear_thickness, 0);
//-- Fake axis:
//-------------------------------------------------------------------------------------------
//-- Make fake axis screw, for the upper part:
fake_axis = Cylinder( 6/2.0, 2 + 0.2 , 100, false)
+ Cylinder( 2.9/2.0, lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness - 2 + 0.1, 6, false).relTranslate( 0, 0, 2 + 0.1);
fake_axis.color( 0.5, 0.5, 0.5);
fake_axis.moveToLink( *servo, 0);
fake_axis.translate( 0 , upper_front_ear_thickness - servo->get_horn_h_axis() -central_part -0.1, 0);
//-- Make fake axis screw with the clearance, for the lower part:
fake_axis_with_tol = Cylinder( 6 /2.0, 2 + 0.2 , 100, false)
+ Cylinder( 3 /2.0 + fake_axis_tol, lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness - 2 + 0.1, 100, false).relTranslate( 0, 0, 2 + 0.1);
fake_axis_with_tol.color( 0.5, 0.5, 0.5);
fake_axis_with_tol.moveToLink( *servo, 0);
fake_axis_with_tol.translate( 0 , upper_front_ear_thickness - servo->get_horn_h_axis() -central_part -0.1, 0);
//--Compose the module:
//-------------------------------------------------------------------------------------------
lower_part(); //-- Refresh lower component
upper_part(); //-- Refresh upper component
Component result;
if ( show_assembly )
result = lower + upper.rotate(0,180,0).translate(0,0,2*(servo->get_axis_y()+servo->get_leg_y())+lower_base_thickness+upper_base_thickness) ;
else
if ( show_lower && show_upper)
result = lower.translate( - side/2.0 - 2, 0, 0) + upper.translate( side/2.0 + 2, 0, 0);
else if (show_upper)
result = upper;
else
result = lower;
return result;
}
|
1.7.4