|
REPY-2.0 1.0
Mechanical module for modular robotics
|
Builds and returns the BasicServo.
Reimplemented in TowerProSG90servo. {
//-- Create body
Component body = Cube::create( width + width_tol, length + length_tol, height + height_tol, false);
body.translate( -width/2, 0,0);
//-- Create axis
Component axis = Cylinder::create( axis_r, axis_h, 20, true);
axis.translate( 0, axis_y, height + axis_h / 2);
//-- Create legs
Component leg_top = Cube::create( leg_x, leg_y, leg_z, false);
leg_top.translate( -leg_x/2, length, leg_h);
Component leg_bottom = leg_top.translatedCopy( 0, -( length + leg_y), 0);
//-- Create holes:
Component holes;
Component hole_base = Cylinder( hole_r, leg_z + 0.2, 20, true);
if (num_holes == 4) //-- 4 holes, 2 on each leg
{
Component hole01 = hole_base.translatedCopy( hole_x, length + hole_y, leg_h + leg_z/2.0);
Component hole02 = hole_base.translatedCopy( -hole_x, length + hole_y, leg_h + leg_z/2.0);
Component hole03 = hole_base.translatedCopy( hole_x, -hole_y, leg_h + leg_z/2.0);
Component hole04 = hole_base.translatedCopy( -hole_x, -hole_y, leg_h + leg_z/2.0);
holes = hole01 + hole02 + hole03 + hole04;
}
else if (num_holes == 2) //-- 2 holes, 1 on each leg
{
Component hole01 = hole_base.translatedCopy( hole_x, length + hole_y, leg_h + leg_z/2.0);
Component hole02 = hole_base.translatedCopy( hole_x, -hole_y ,leg_h + leg_z/2.0);
holes = hole01 + hole02;
}
//-- Composing the servo:
Component servo = body + axis + leg_top + leg_bottom - holes;
//-- Add a link for the horn:
servo.addLink( RefSys( 0, axis_y, height + horn_dist_axis));
//-- Add several links for the screws:
if (num_holes == 4) //-- 4 holes, 2 on each leg
{
servo.addLink( RefSys( hole_x, length + hole_y, leg_h + leg_z/2.0));
servo.addLink( RefSys( -hole_x, length + hole_y, leg_h + leg_z/2.0));
servo.addLink( RefSys( hole_x, -hole_y, leg_h + leg_z/2.0));
servo.addLink( RefSys( -hole_x, -hole_y, leg_h + leg_z/2.0));
}
else if (num_holes == 2)
{
servo.addLink( RefSys( hole_x, length + hole_y, leg_h + leg_z/2.0));
servo.addLink( RefSys( hole_x, -hole_y, leg_h + leg_z/2.0));
}
//-- Paint it black:
servo.color( servo_color[0], servo_color[1], servo_color[2], servo_color[3]);
//-- Attach the horn:
if ( display_horn)
{
make_horn();
horn.color( horn_color[0], horn_color[1], horn_color[2], horn_color[3]);
horn.relRotate(0,0, horn_angle);
servo.attach( 0, horn, 2 );
}
return servo;
}
|
1.7.4