REPY-2.0 1.0
Mechanical module for modular robotics
Component REPY_module::build ( ) [protected, virtual]

Builds the REPY module.

Todo:
Change this to something that uses links:
Todo:
Change this to something that uses links:

{
    //-- 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;
}
 All Classes Functions Variables