SSI Robotics
We promote STEM education through US and MD FIRST (For Inspiration and Recognition of Science and Technology).
12/07/2025
Enjoying a local event in Roanoke. Go FTC teams!
04/22/2023
SSI's enjoying the World Championship in Houston Texas. A very exciting culmination of the efforts of many people. Thank you to all the volunteers that make this program happen!
03/06/2021
The programmer has been bitten by the programming bug! This is our current test bench. Originally, the slate was editing code on the TETRIX Basic Bot. Now it's editing code on the REV Basic Bot. The laptop is connected to the web for research. All without needing to download or install applications (and fighting the configuration of Android Studio). Super cool!
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.
04/11/2020
A wonderful way to have fun with math! Thanks for sharing it, Team 1629.
04/30/2018
David and I were invited to the Championship in Detroit, where we received a wonderful surprise.
08/23/2017
It's a new season, so there are TWO new Push 'Bot Build Guides! For those new to FTC, the build guide provides step-by-step instructions on how to build a robot using a TETRIX kit of parts. Download the Build Guide here: http://www.ssi.lydean-david.net/2017-08-11-push-bot.htm
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!
01/08/2016
SSI number 2 is heading out now for Annapolis. Go, teams!
01/08/2016
SSI is on the move, heading to Annapolis for Maryland's second and third qualifiers. Good luck teams!
Having trouble pushing bronze bushings into omni-wheels? This video will show you an easy way to get them in.
Click here to claim your Sponsored Listing.
Category
Address
Detroit, MI