SSI Robotics

SSI Robotics

Share

Photos from SSI Robotics's post 09/19/2020

Meshing gears properly prevents grinding of teeth (both the gears and the humans :>), but also reduces stress on the motors or other attached parts. The following pictures show examples of meshing the gears. The first is too loose, the second is too tight, the third is a good mesh. To test, rotate the mechanism by hand. If the gear teeth slip, then it is too loose, if the mechanism binds, then it is too tight.

2017/2018 World Championship 04/30/2018

David and I were invited to the Championship in Detroit, where we received a wonderful surprise.

04/15/2016

Hello rookie teams! Here is a small programming challenge. The code below is the loop method for the Push 'Bot's manual op-mode. Can you answer the questions following the code snippet?

//--------------------------------------------------------------------------
//
// loop
//
//--------
// The system calls this member repeatedly while the
// OpMode is running.
//--------
public void loop ()

{
//----------------------------------------------------------------------
//
// DC Motors
//
// Obtain the current values of the joystick controllers.
//
// Note that x and y equal -1 when the joystick is pushed all
// of the way forward (i.e. away from the human holder's
// body).
//
// The clip method guarantees the value never exceeds the
// range +-1.
//
// The DC motors are scaled to make it easier to control
// them at slower speeds.
//
// The setPower methods write the motor power values to
// the DcMotor class, but the power levels aren't applied
// until this method ends.
//

//
// Manage the drive wheel motors.
//
float l_gp1_left_stick_y = -gamepad1.left_stick_y;
float l_left_drive_power
= (float)scale_motor_power (l_gp1_left_stick_y);

float l_gp1_right_stick_y = -gamepad1.right_stick_y;
float l_right_drive_power
= (float)scale_motor_power (l_gp1_right_stick_y);

set_drive_power (l_left_drive_power, l_right_drive_power);

//
// Manage the arm motor.
//
float l_gp2_left_stick_y = -gamepad2.left_stick_y;
float l_left_arm_power
= (float)scale_motor_power (l_gp2_left_stick_y);
m_left_arm_power (l_left_arm_power);

//----------------------------------------------------------------------
//
// Servo Motors
//
// Obtain the current values of the gamepad 'x' and 'b' buttons.
//
// Note that x and b buttons have boolean values of true
// and false.
//
// The clip method guarantees the value never exceeds
// the allowable range of [0,1].
//
// The setPosition methods write the motor power values
// to the Servo class, but the positions aren't applied until
// this method ends.
//
if (gamepad2.x)
{
m_hand_position (a_hand_position () + 0.05);
}
else if (gamepad2.b)
{
m_hand_position (a_hand_position () - 0.05);
}

//
// Send telemetry data to the driver station.
//
update_telemetry (); // Update common telemetry
telemetry.addData ("10", "GP1 Left: " + l_gp1_left_stick_y);
telemetry.addData ("11", "GP1 Right: " + l_gp1_right_stick_y);
telemetry.addData ("12", "GP2 Left: " + l_gp2_left_stick_y);
telemetry.addData ("13", "GP2 X: " + gamepad2.x);
telemetry.addData ("14", "GP2 Y: " + gamepad2.b);

} // PushBotManual::loop

Questions: How should the code be changed to…
1. control the arm on the same controller as the drive motors. Remember that controller is another word for gamepad.

2. drive the robot using the second controller instead of the first controller?

3. control the hand position using the 'a' button to open the hand and 'y' button to close the hand? Be careful, this is a trick question. Extra points to those that can discover the trick!

Want your school to be the top-listed School/college in Detroit?
Click here to claim your Sponsored Listing.

Category

Address


Detroit, MI