0% found this document useful (0 votes)
3K views28 pages

Engineering Notebook fgc2022 r2045

Team Indonesia R2045 is a youth robotics team competing in the FIRST Global Challenge 2022. Their goal is to help advance technology in Indonesia and inspire youth to pursue STEAM fields. For the carbon capture challenge, their robot must collect and store carbon balls, secure indicator balls, and hang from bars to score points. The team analyzed the problem, developed a function tree, and identified strategic and design requirements. They brainstormed ideas and created 3D models to develop subsystems like the drivetrain to help their robot meet the objectives of the challenge.

Uploaded by

api-656115276
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3K views28 pages

Engineering Notebook fgc2022 r2045

Team Indonesia R2045 is a youth robotics team competing in the FIRST Global Challenge 2022. Their goal is to help advance technology in Indonesia and inspire youth to pursue STEAM fields. For the carbon capture challenge, their robot must collect and store carbon balls, secure indicator balls, and hang from bars to score points. The team analyzed the problem, developed a function tree, and identified strategic and design requirements. They brainstormed ideas and created 3D models to develop subsystems like the drivetrain to help their robot meet the objectives of the challenge.

Uploaded by

api-656115276
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

2

1. TEAM SUMMARY
Team Indonesia R2045 is a youth robotic team based in Depok, West Java which will
take part in FIRST Global Challenge 2022, competing and collaborating with over 180+
teams representing their own countries. R2045 members of the team have different
passions, in which some of them are, designing, engineering, science, arts and of
course we share the same big passion. The passion to make the world a better place,
by inspiring other youths to have a passion in STEAM. So the world will benefit from the
advancement of technical works. But most importantly, to help Indonesia master
technology and embrace Indonesia’s 100 year of independence. Therefore, an initiative
in shaping the golden generation of Indonesia in welcoming its 100 Years of
independence, was initiated by the school, and codenamed “R2045”, The Rendezvous
2045. All R2045 members will be expected to assist, develop, improve technological
progress in Indonesia, and help create projects that will help Indonesia in the future.

Our team is a dynamic group of high schoolers that was formed together due to a
common passion for robotics. Throughout the season, we’ve made a lot of progress in
terms of experience and overall bonding with each other.

The team experiences a Project-based way of learning, one of the best approaches to
STEAM education, as it allows team members to understand real problems, design,
test solutions, analyze and communicate their insight and new findings/innovation. This
approach gives a link between real problem solving, and appreciate the relevancy of
their work to the world around them. In this project, programming and innovative
exploitations, all STEAM aspects as well as team work collaboration, creativity and
entrepreneurial skills and social sciences are blended. We are grateful for the
Challenge given by FIRST Global, and we thank you for having made our life
meaningful, feel engaged, connected to purpose, and able to connect our gifts and
passions with our highest values.

Figure 1. R2045 Team Indonesia for FGC Geneva 2022

1
2. PROBLEM EXPLORATION
2.1. GAME DESCRIPTION
The first 2 minutes when the game starts, 240 imaginary black balls of carbon dioxide
will be released to be taken by the intake robots of alliances and work together to put
as many black balls into the sink as possible. Or, the alliance team robot can also put
carbon into the compressor in the corner of the arena. Team players/controllers can
also help put carbon into the sink, or pass it into the robot's intake. Points are scored at
a height of 1 cm as the carbon fills the sink.

In the last 30 seconds, the game is divided into 2 alliance countries. Then, the robot
secures color indicator balls from the human player, then returns to the sink platform
area. If the robot enters the platform, the team's points increases by 0.25 or robot
must be hung on a bar located on the sink. If the robot hangs on the lowest sink (low
bar), points will be added by 0.25, middle bars 0.75, and the highest bar gets a point
increase of 1.0

2.2. CARBON CAPTURE ROBOT NEED EXPLORATION


In answering the challenge of Carbon Capture, the team reviewed the kickoff video and
analyzed the manual, then started to define the overall function and break down the
overall function into a number of sub functions, then the team started to weight each
function importance in correlation to to get the highest score .
Basic functions on the Carbon Capture Robot;
1. Capturing CO2
2. Storing CO2 it in the sink
3. Achieving long term storage levels ;
a. Securing indicator
b. Hanging in the high bar
2.3. FUNCTION TREE
Tackling the problem by principles, searching for possible solutions, and studies on
current technology before they define the objective of their design.

Figure 2. Function Tree of ‘Carbon Capture’ Robot

2
2.4. STRATEGIC CONSIDERATION
Hanging the high bar and medium bar to win and get a higher multiplier and scoring by
putting as many black balls into the carbon sink is the way to win the match. We could
go directly to the securing indicator and climbing to higher bar without putting any balls
to the sink just to win the match, but if we do that we might win the match but the point
gain is low, since the ranking point will be taken from average of score points, then as
a whole we will have lower ranking matches due to low score points.

Figure 3. Strategic Consideration

Taking this into consideration, our strategy starts off by collecting the balls, storing it
into a bucket, then after the bucket is full, lifts it and drops the balls into the sink. If time
permits we could do twice ball dropping otherwise the the collecting balls can continue
and scoring by send balls to sink by shooting it. Then secure the indicator and finally
climb the high bar to get the highest score possible.

To have an idea of the shooter performance, a


preliminary survey was done on human players
shooting 10 balls into the sink. It was found that
on average, 10 balls were thrown in about 14~
seconds- an average of 1.4 seconds per ball.
Accuracy of throwing is about 70% on average.
With this raw indicator, we can use it as a
benchmark of the design on shooter performance.
Figure 4. Human player benchmark of the
design on shooter performance

2.5. DESIGN REQUIREMENT AND OBJECTIVES


- Able to move forward and backward with 1.4 m/s speed in flat surface
- Able to slide / turn left and right accurately at least 0.3 m/s
- Able to secure the indicator in 20 seconds
- Able to pick up and store 20 balls in a 40 seconds
- Able to shoot 20 balls in a half a minute 1.5 seconds per ball..
- Able to bucket drop at least 20 balls into the sink in 30 seconds .
- Able to hang on the high bar or medium bar in 20 seconds.

3
3. DESIGN PROCESS
After knowing the requirements and objectives of the design as well as the limitations
and the constraints of the design, the team starts deploying brainstorming to develop
ideas and solutions in order to meet the requirements and objectives. This is
accomplished in a group setting. The possible solutions are sketches by hand which
enables them to tap their creative side. When ideas of each part were matured and the
best promising ideas were selected and combined, the sketches were translated into
3D CAD, using Fusion 360 by Autodesk.

Figure 5. Engineering Design Process undergone by Team Indonesia R2045

Further on, after designs were sketched and drawn on 3D, the team assembled the
parts of the FGC 2022 kits in a system level design, made prototypes, and then
developed programs for robot movements and mechanism using onBot Java. All parts
of the design were materialized towards prototyping as well as in full robot assembly.
The team tested the part mechanism first before it went in a complete system. The
iteration comes after the test, in refining number mechanisms and in the coding
algorithm. The team progresses as the final design begins to take shape, and finally
the team carries out the match test 2.5 minutes drill on the final solution to be analyzed
and reviewed its performance against the target.

4. BRAINSTORMING AND IDEAS DEVELOPMENT


We develop ideas by deploying brainstorming sessions, which is a group
problem-solving technique that involves spontaneous contribution of ideas from all
members of the group. There are a number of ideas or solutions proposed during
brainstorming however we choose each sub function with 3 or 4 best solutions and
present them here. Along with basic calculations for each sub function.

4
4.1. IDEAS DEVELOPMENT FOR DRIVEBASE SUBFUNCTION
The drivetrain consists of a series of parts that work together to transfer the rotational
power that's produced in the motors to the wheels. By doing so, the wheels begin to
turn, and the robot moves. We proposed a number of drivebase configurations, here
are three configurations out of many that we made for Carbon Capture ;

Design Attribute Sketching 3D Drawing

1 DUAL MOTORS
WITH OMNI WHEEL

2 DUAL MOTOR
GEARS AND CHAIN
WITH COMBINATION
OF OMNI WHEELS
AND GRIP WHEEL

3 FOUR MOTORS
WITH INDEPENDENT
WHEELS

Figure 6. Sketching and 3D Design of Drivetrain solutions

4.1.1. ROBOT SPEED CALCULATION


Some calculations are needed to make the right decision in achieving 1.4 m/s speed on
a flat surface. What motors can be used and at what speed will the robot run. The
calculations below were carried to get the physics and math correct on our design. It
was found the robot was able to move with HEX Motor with gearbox ratio of 15, and
with angular speed of 400 m/s and linear speed of 1.89 m/s.

Figure 7. Speed calculation on Flat Surface Figure 8. Speed calculation on Angled Surface

5
4.2. IDEAS DEVELOPMENT FOR INTAKE SUBFUNCTION
Intakes are one of the most common, versatile, and useful mechanisms in Robotics.
Intakes manipulate small regular-shaped game objects, such as balls to be secured or
possessed by the robot. In targeting to pick up and store 20 balls in a 40 seconds
herewith our design proposal combines the intake and lifter into the storage. Here are
three designs that we made in the table below ;

Design Attribute Sketching 3D Drawing

1 ROTATION
WHEEL

2 PULLEY

3 CAPTURE AND
LIFTER SWINGER

Figure 9. Sketching and 3D Design of Intake solutions

4.2.1. INTAKE SPEED CALCULATION


To be able to pick up and store 20 balls in 40 seconds, Some calculations were carried
out. It was found that the angular speed of the lowest part of intake is 562 rpm and
creating translation speed of, 0.735 m/s and since the robot is able to move with linear
speed of 1.89 m/s.so in order for intake to work the motor drive of robot should not
move with speed higher than 155 rpm

.
Figure 10. & Figure 11. Intake Speed Calculation

6
4.3. IDEAS DEVELOPMENT FOR SHOOTER SUBFUNCTION
A shooter scores game pieces from a distance. Many mechanisms can be deployed to
create a shooter. With a target of shooting 20 balls in 30 seconds and 2,5 m high ,
several design ideas for the shooter are proposed. Three of them which were expanded
upon ;

Design attribute Sketching 3D Drawing

1 SINGLE
FLYWHEEL

2 DUAL FLYWHEEL

3 DUAL FLYWHEEL
WITH OPPOSITE
ROTATION

Figure 12. Sketching and 3D Design of Shooter solutions

4.3.1. SHOOTER CALCULATION


To be able to shoot 20 balls in 30 seconds- 1.5 seconds per ball, some calculation on
the motors and elevation need to be carried out.. The calculation below shows the
calculation of the speed of the balls leaving the robot and achieving the height of the
sink.

Figure 13. & Figure 14. Shooter Speed Calculation


7
4.4. IDEAS DEVELOPMENT FOR BUCKET LIFTER / DROPPER SUBFUNCTION
A bucket dropper becomes a potential solution if the robot is able to drop 20 or more
balls within 20-30 seconds as it will beat the human player performance of 1.4 balls per
seconds but with 100% accuracy, the design of the lifter’s primary use is to lift bucket
with 20-30 balls. We planned to lift the bucket of balls using ropes and linear extrusion,
to drop at least 20 balls into the sink in 20 seconds. The climber has a dropper used for
dropping balls in the sink. Two designs that we developed with that in mind;

Design Sketching 3D Drawing

1 SINGLE LINEAR
MOTION
LIFTING
MECHANISM

2 DUAL LINEAR
MOTION
LIFTING
MECHANISM

Figure 15. Sketching and 3D Design of Climber and Lifter solutions


4.4.1. BUCKET LIFTER POWER CALCULATION
To be able to bucket drop at least 20 balls into the sink in 20 seconds, we required a set
of motors with the proper gearbox configuration to achieve the correct speed in lifting
the box into the sink. With 20 balls x 40 gram = 800 grams and with 16 extrusions of 30
gram, and the bucket weight 156 gram, the total mass to be lifted is 5.75 Kg, then the
total force needed is equal to 57,5 N. And the work from 2 motors with ratio Gearbox of
100 is equal to Force = T x Gearbox ratio x n/r = 0.157 x 5x4x5 x2 * / 0.03 = 1026 N
the force given by 2 motors is higher than needed.

Figure 16. & Figure 17. Bucket Lifter Calculation

8
4.5. IDEAS DEVELOPMENT FOR ROBOT LIFTER SUBFUNCTION
A climber may be used for the robot to climb in the endgame for scoring points. Robots
may climb using ropes, bars, and sometimes traverse along the bar. There are many
ways to design a lifter and here are three ideas in this table below ;

Design Sketching 3D Drawing

1 4 BAR
LINKAGE

2 LINEAR
MOTION

3 CABLE
HANGER

Figure 18. Sketching and 3D Design on Robot Lifter solution

4.5.1. ROBOT LIFTING CALCULATION


To be able to lift the robot with 20 Kg weight at a
height of 1.4 meters in 20 seconds, we need a set
of motors with the right gearbox configuration to
achieve the proper speed of lifting. With workload
force equal 250N. And the force given by 2 motors
is 1026 N , higher than needed. With power
needed power of = F x s= 250 x 1.4 = 350 watt
Power = Torque x RPM (x a constant)
= 0.105 x gB ratio x n x Rpm
= 0,105 x 100 x 2 x 600 = 12600 watt more than
enough to lift the robot using two motor HD hex
with 5x4x5 gear ratio reduction

Figure 19. Robot Lifting Calculation

9
4.6. IDEAS DEVELOPMENT FOR SECURING INDICATOR SUBFUNCTION
A pre-positioned indicator may be secured by one robot from each regional alliance
when the match starts. We integrated the system onto our lifter / dropper. Wiith that in
mind, we developed four ideas on securing the indicator.

Design attribute Sketching 3D Drawing

1 DESIGN 1

2 DESIGN 2

3 DESIGN 3

DESIGN 4

Figure 20. Sketching and 3D Design on Securing Indicator solution

5. SELECTION OF IDEAS
With 2-4 ideas for each sub-function, plenty of combined solutions can be developed
by mixing all the solutions.

10
Combining the drivetrain, with intake collecting and storing balls in the bucket, lifting
the bucket and storing the balls in the sink, then shooting the ball to the sink. As the
idea is to achieve the highest score by all possible means, i.e. shooting, dropping,
human player shooting, then the robot is designed to be able to shoot as well as
dropping balls into the sink.

6. BUILDING PROTOTYPE
The primary goal of prototyping is to test, record results, and improve the concept.
Using the 2022 FGC Kit, we are able to build the design into a prototype, the chains
were cut and linked back appropriately, extrusions and wheels were assembled to form
the drive train. The intake was built by assembling the hex shafts, wheels, with
sprockets and chains. Similarly the shooter was built using extrusion, wheel and a
motor, the lifter assembly was built using 18 extrusion and linear motion mechanism
kits and finally the bucket was built using a stitched corrugated plastic sheet given.

6.1. PARTS & BUILDING ASSEMBLY

Figure 21. Part prototyping and assembly of Carbon Capture robot

6.2. ROBOT WIRING AND CONTROL


The wiring of a robot serves two primary purposes. To provide electrical power to the
devices on a robot and to provide a communication network for the many devices that
make up a robot’s control system. The the wiring and human controls is shown as
below;

Figure 22. Wiring design on robot solution Figure 23. Design on control of robot solution
11
6.3. PROGRAMMING
After designing and assembling the parts by following the design. The team built the
prototype, developed flowcharts and programs for the robots movements and
mechanism. All parts of the design were then materialized towards prototyping as well
as in full robot assembly. The main program was divided into 4 subsystems ;
1. Drivetrain Subsystem
2. Intake Subsystem
3. Shooter Subsystem
4. Lifter Subsystem

Figure 24. Flowchart of Carbon Capture Robot


CODE LISTING
package org.firstinspires.ftc.teamcode;

import com.qualcomm.robotcore.eventloop.opmode.Disabled;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
import java.util.Locale;
import org.firstinspires.ftc.robotcore.external.navigation.Orientation;
import org.firstinspires.ftc.robotcore.external.navigation.AxesReference;
import org.firstinspires.ftc.robotcore.external.navigation.AxesOrder;
import com.qualcomm.hardware.bosch.BNO055IMU;
import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit;
import com.qualcomm.robotcore.hardware.DcMotorEx;
import com.qualcomm.robotcore.hardware.Servo;
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.util.ElapsedTime;
import com.qualcomm.robotcore.util.Range;

@TeleOp(name="TEAM4", group="TEAM4")

public class TEAM4MAIN extends OpMode


{
private ElapsedTime runtime = new ElapsedTime();
private DcMotorEx leftMotor = null;
private DcMotor rightMotor = null;
private DcMotorEx FwMotor = null;
private DcMotorEx zAim = null;
private DcMotor intakeMotor = null;
private DcMotor telescopicMotor = null;
private DcMotor hangerMotor = null;
private DcMotor hangerSupport = null;
private Servo Feeder = null;
private Servo xAim = null;
private Servo indexer = null;
private Servo rGuide = null;
private Servo lGuide = null;

private BNO055IMU imu;

private Orientation angles;

double power = 0;
double xAimAngle = .5;
double indexerPos = 0.5;

double leftEnc = 0;
double rightEnc = 0;
double Heading = 0;
double Circumference = 9 * Math.PI;
double x_Pos = 0;
double y_Pos = 0;

boolean indexerToggle = false;

// todo: write your code here


@Override
public void init() {
BNO055IMU.Parameters parameters = new BNO055IMU.Parameters();
parameters.angleUnit = BNO055IMU.AngleUnit.DEGREES;
parameters.accelUnit = BNO055IMU.AccelUnit.METERS_PERSEC_PERSEC;
parameters.calibrationDataFile = "BNO055IMUCalibration.json"; // see the calibration sample opmode
parameters.loggingEnabled = true;
parameters.loggingTag = "IMU";

imu = hardwareMap.get(BNO055IMU.class, "imu");


imu.initialize(parameters);

leftMotor = hardwareMap.get(DcMotorEx.class, "leftMotor");


rightMotor = hardwareMap.get(DcMotor.class, "rightMotor");
FwMotor = hardwareMap.get(DcMotorEx.class, "Motor");
zAim = hardwareMap.get(DcMotorEx.class, "zAim");
intakeMotor = hardwareMap.get(DcMotor.class, "intakeMotor");
telescopicMotor = hardwareMap.get(DcMotor.class, "telescopic");
hangerMotor = hardwareMap.get(DcMotor.class, "hangerPull");
hangerSupport = hardwareMap.get(DcMotor.class, "hangerSupport");

12
leftMotor.setMode(DcMotor.RunMode.RESET_ENCODERS);
leftMotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);

rightMotor.setMode(DcMotor.RunMode.RESET_ENCODERS);
rightMotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);

leftMotor.setDirection(DcMotorSimple.Direction.FORWARD);
rightMotor.setDirection(DcMotorSimple.Direction.REVERSE);
intakeMotor.setDirection(DcMotorSimple.Direction.REVERSE);
FwMotor.setDirection(DcMotorSimple.Direction.REVERSE);

Feeder = hardwareMap.get(Servo.class, "Feeder");


xAim = hardwareMap.get(Servo.class, "xAim");
indexer = hardwareMap.get(Servo.class, "indexer");
rGuide = hardwareMap.get(Servo.class, "rightGuide");
lGuide = hardwareMap.get(Servo.class, "leftGuide");

imu = hardwareMap.get(BNO055IMU.class, "imu");

telemetry.addData("Status", "Initialized");

xAim.setPosition(xAimAngle);

rGuide.setPosition(1);
lGuide.setPosition(0);
}

@Override
public void start() {
rGuide.setPosition(0.3);
lGuide.setPosition(0.6);

@Override
public void loop() {
angles = imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
// DRIVETRAIN
double leftPower;
double rightPower;

double drive = -gamepad1.left_stick_y;


double turn = gamepad1.left_stick_x;
leftPower = Range.clip(drive + turn, -1.0, 1.0) ;
rightPower = Range.clip(drive - turn, -1.0, 1.0) ;

leftMotor.setPower(leftPower);
rightMotor.setPower(rightPower);

// FLYWHEEL
FwMotor.setVelocityPIDFCoefficients(10, 3, 0, 0);

if (gamepad2.a == true){
FwMotor.setVelocity((4200/60)*28);
xAim.setPosition(0.64);
} else if (gamepad2.b == true){
FwMotor.setVelocity((4100/60)*28);
xAim.setPosition(0.6);
} else if (gamepad2.x == true){
FwMotor.setVelocity((4000/60)*28);
xAim.setPosition(0.5);
} else {
FwMotor.setVelocity(0);
xAim.setPosition(0.5);
}

// FEEDER
if(gamepad2.right_trigger >= 0.5){
Feeder.setPosition(0.8);
} else {
Feeder.setPosition(0.57);
}

if (Feeder.getPosition() > 0.7){


indexerToggle = true;
}

if(Feeder.getPosition() == 0.57 && indexerToggle && indexerPos >= 0.25){


indexerPos -= 0.008;
}

if (indexerPos <= 0.25){


indexerToggle = false;
indexerPos = 0.5;
}

indexer.setPosition(indexerPos);

// INTAKE
if(gamepad1.right_bumper){
intakeMotor.setPower(0.7);
} else if(gamepad1.left_bumper){
intakeMotor.setPower(-0.5);
} else {
intakeMotor.setPower(0);
}

if(gamepad2.right_trigger == 1){
rGuide.setPosition(0.3);
lGuide.setPosition(0.6);
} else if(gamepad2.left_trigger == 1){
rGuide.setPosition(1);
lGuide.setPosition(0);
}

// hanger
if (gamepad2.dpad_up) {
telescopicMotor.setPower(1);
} else if (gamepad2.dpad_down) {
telescopicMotor.setPower(-1);
} else {
telescopicMotor.setPower(0);
}

if (gamepad2.dpad_right) {
hangerMotor.setPower(1);
} else if (gamepad2.dpad_left) {
hangerMotor.setPower(-1);
} else {
hangerMotor.setPower(0);
}

hangerSupport.setPower(gamepad1.right_stick_x);

//odometry

double CurrentLeftPos = (double)leftMotor.getCurrentPosition()/-26/28 * Circumference;


double CurrentRightPos = (double)rightMotor.getCurrentPosition()/-26/28 * Circumference;

double leftDelta = leftEnc - CurrentLeftPos;


leftEnc = CurrentLeftPos;
double rightDelta = rightEnc - CurrentRightPos;
rightEnc = CurrentRightPos;

double PosDelta = (leftDelta + rightDelta) / 2;

double CurrentHeading = angles.firstAngle + 90;


x_Pos = x_Pos + PosDelta * Math.cos(Math.toRadians(CurrentHeading));
y_Pos = y_Pos + PosDelta * Math.sin(Math.toRadians(CurrentHeading));

// Z AXIS AIMING
double degrees = zAim.getCurrentPosition() * 0.216;

int heading = (int)angles.firstAngle;

double aimAngle = (Range.clip(Math.toDegrees(Math.atan2(Math.abs(350 - y_Pos), Math.abs(x_Pos))) - heading, 0, 180) /*/ 0.216*/);

if(gamepad2.y){
zAim.setTargetPosition((int)(aimAngle / 0.216));
zAim.setMode(DcMotor.RunMode.RUN_TO_POSITION);
zAim.setVelocity(500);
} else {

13
zAim.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
zAim.setPower(gamepad2.right_stick_x);

// zAim.setPower(gamepad1.right_stick_y);

telemetry.addData("aim Deg", degrees);


telemetry.addData("X", x_Pos);
telemetry.addData("Y", y_Pos);
telemetry.addData("MotorRPM", (leftMotor.getVelocity()/28)*60);
}

// formatting
String formatAngle(AngleUnit angleUnit, double angle) {
return formatDegrees(AngleUnit.DEGREES.fromUnit(angleUnit, angle));
}

String formatDegrees(double degrees){


return String.format(Locale.getDefault(), "%.1f", AngleUnit.DEGREES.normalize(degrees))}}

7. PERFORMANCE TESTING
Performance testings were carried out for individual subsystems as well as the full
model assembling. By testing and analyzing the performance of the robot models, the
team learns how to plan the experiment and exercise problem solving simultaneously
to fix the problems and get them into the target. As the objectives of the robot have
been stated out so the performance test will easily be correlated to these objectives.

7.1. DRIVETRAIN TESTING


Tests involving the drivebase show that the drivebase design we opted for succeeds in
doing what we need it to do, with good stability in the starting form of the robot and
decent maneuverability. While it lacks outright maneuverability, the simplicity of the
design means that it allows more motors to be dedicated to things such as the lifter and
gives space for aforementioned systems.

7.2. SECURING INDICATOR TESTING


Sliding on the drivetrain was a bit hard and made it difficult to secure the indicator. The
indicator was located at the corner, so it was not easy to drive the robot into the right
position to pick up the indicator.

7.3. INTAKE TESTING


Our early testing of the intake shows that the system is quite inconsistent as some balls
get launched out of the intake and back into the field, and other times the balls get
stuck in between the rollers. The intake was quite inconsistent, as sometimes the balls
have difficulty passing through the first rotator.

7.4. SHOOTER TESTING


Testing of the shooter went well with good consistency, excluding the fact that some of
the balls we were using to test are of differing sizes, the lack of z-axis aiming causes
aiming on it requires rotating the whole robot, the smaller footprint meant that the space
could be used to allow the dropper system to be as big as possible.

7.5. BUCKET DROPPER TESTING


It was discovered that during lifting, the robot has to be static, since movement will
worsen the swaying and may break the lifter, the mechanism of linear movement is not
strong enough to cope with such load and movement. Further to that if the rope pulling

14
is too fast, the rope get tight and bends the lifter forward and might which causes the
relocation of the center of gravity which might topple the robot. We experienced this
and cause the whole lifting structure broke and fell down.

Figure 25. The broken and fallen down lifter structure

Figure 26. & Figure 27. The torn part of the Slider Plates

7.6. HANGER TESTING


The hanger worked as expected successfully holding onto the bar while lifting and the
hook also worked perfectly with it locking onto the bar with only some slight difficulty
due to the weird angle in which the drivers view their robot and also general lack of
practice utilizing this system. The hanger needs to be precise in the center of the
hanger pole or else it wouldn’t hang properly which potentially makes the robot fall. The
lifter is capable of lifting the robot, although taking time to do so. The duration of lifting
is dependent on the torque and the weight of the robot

8. DESIGN REFINEMENTS
8.1. ROBOT MECHANISM REFINEMENT

MECHANICS IMAGE DESCRIPTION

DRIVETRAIN We added an additional motor and two small omni


wheels in the middle of the drivetrain for sliding to
aid in securing the indicator ball and making it
easier to do so.

15
INTAKE We make the position of first roller just a slightly
a bit lower than the ball diameter and the roller
able to move free go up down as the ball pass
through it and we added a 2m Distance Sensor in
the intake to tell us if the ball has been collected,
this helps the drivers to collect the balls if the
intake is out of the drivers viewpoint at ease.

INDICATOR We’ve changed the securing indicator


mechanism from a claw design to a pole for
efficiency by poking the ball from below and
dropping it to the bucket which lowers the risk of
dropping the ball that is being secured.

BUCKET We sewed the bucket with some of our cords to


reduce the use of materials and increase our ball
capacity which reached 25-27 balls.

BUCKET The Rope Trigger mechanism to drop the balls


DROPPER out of the bucket was modified and the rope was
MECHANISM relocated to the inside of the robot and pulled by
a servo from the outside and lower the risk of the
rope from getting tangled.

LIFTER While using bolts from the Linear Motion Kit V2, it
MECHANISM: was discovered that the bolts were easily bent
LINEAR and offsetted the bearing, causing the linear
MOTION KIT V2 movement to be stuck.
We refined it by adding an extra bolt to disperse
the load and propose a new double-screwed
bearing system, along with a customized rope
protector with symmetrical positioning for the
slider. The screws now have second support,
thanks to the double-screwed system. The
bearing has smoother and more room for
movement. The risk of the rope snapping is
greatly reduce

16
8.2. ALGORITHMS REFINEMENTS
Some modification in the coding algorithm followed the change in mechanism, as well
as addition of features to optimize the performance of the robot.

ALGORITHMS DESCRIPTION

DUAL ROBOT The robot was programmed using the built-in OnBot Java from the control
CONTROLER
hub; it was first controlled with one joystick controller for early testing of
each subsystem. After everything is all set, the controls get split into 2
players. The robot was too fast which makes it difficult for the driver to
precisely position the robot when dropping, hanging or securing the
indicator. So the solution was to create 2 speed profiles, the robot now
normally runs on 50% power to maneuver around, and the left trigger can
be pressed to enable maximum speed.

RUMBLE In the System Operator’s control, there was a problem where the
FEATURE OF operator could not tell whether the hanger had been locked or not. The
JOYSTICK problem was solved by utilizing the rumble feature inside the joystick
CONTROLLER controller, every time the button to unlock and lock the hanger manually is
AUTOMATIC pressed, it will vibrate once, and if the auto-lock button is pressed, it will
LOCKING vibrate twice, once the magnetic switch detects the magnet, the servo will
SYSTEM WITH lock the hanger and the operator will be informed by a vibration in the
SERVO controller 3 times.

PID PID allows more precise control of a driving motor by predicting the
CONTROLLER moment the motor speed will go higher than the desired value and
adjusts the power accordingly to reach the desired speed, maximizing
efficiency and accuracy.

ODOMETRY Odometry uses some simple math to calculate the distance the robot has
traveled through and can be used to automatically adjust the angle of our
shooter without human intervention and with higher consistency.

17
9. FINAL DESIGN

Figure 28 DRYOMATIKA FINAL DESIGN

For our final design we decided to settle with a features combination of drivetrain, intake
mechanism, bucket storage system, shooting mechanism , bucket lifting and dropping,
securing indicator and robot climbs and hanging system. Here each is shown in detail.

9.1. DRIVETRAIN
The drivetrain is a H tank drive layout but with four omni wheels
powered by two hex HD motors with gearbox ratio of 5x3 and two
small omni wheels powered by a single hex motor in the middle for
better slide movement. The drivetrain moves with 1,5 m/s and 0,3
m/s in sliding. 6 motors (3 for movement and 3 for lifter) are located
at the bottom to create a firm center of gravity.

18
9.2. INTAKE
For the intake, we used a combination of small and large traction
wheels as well as compliant wheels. The wheels are confined by
brackets tied with surgical tubing to collect the balls more efficiently
which is controlled by a corehex motor. Linear Speed of intake with two
row ball intake with 0.5 m/s intake per row.

9.3. SHOOTER
For the shooter, we used two standard flywheels and takes advantage
of aiming on one axis for more predictability and precision when
shooting. During the testing it was noted that its capable of shooting 1
ball/s.

9.4. BUCKET LIFTER & ROBOT HANGER


The hanger is located on the edge of the lifting system, of 2 sets of 9
extrusions that extends 3 meters reaching the tallest rod and emptying
the funnel allowing the dropper to function properly. The actual claw
that hangs on the bar is made of metal brackets so it can hook onto the
bars with the upside down U shape allowing additional security when
hanging on the bars. Speed of lifter in 0.15 m/s it reaches 2.5 m in 17
seconds .

9.5. BUCKET / STORAGE

The dropper uses the storage system with the lifter system allowing
it to dump large amounts of balls at once into the sink. The storage
system also doubles as storage for the shooter allowing the
shooter to be fed without having to grab the balls every time when
shooting. 27 balls can be contained inside the bucket.

9.6. WIRING AND CONTROL


The location of motors as well as the servo are designed to make an efficient wiring,
6 motors located at the bottom are easy to be wired as well as the other two motors.
The 4 servo and the sensor are also designed to be easily wired. The placement,
connections, and security of the wires are targeted to lead to improved robot
performance, eliminate intermittent electrical problems, and allow for easy
troubleshooting and resolution of electrical and/or signal-related problems.

19
Figure 29. Final Design on electrical and control of robot solution

9.7. PROGRAMMING

Figure 30. Final Design Dryomatika Flowchart


The coding and programming was carried out in iterate and to feel the human player
experience and to adjust with the player feeling. The flowchart as well as the coding
were updated to reflect with the latest refinement on mechanism and algorithm.

20
Figure 31. Final Design of DRYOMATIKA THE CARBON SINKERS

21
10. OUR ART WORK DESIGNS DURING FGC 2022

Figure 32. Banner Designs

Figure 33. Proposal Cover, Bracelets and Pins designs

Figure 34. Jersey, Banner and Bucket designs

22
Figure 35 Pit Banners design
23
11. OUTREACH
During the Engineering session of FTC 2022-2023 kick off, R2045 presented the
R2045 dream to bring FIRST to Indonesia, there were 8 FTC teams presented, and
most of them are rookies. We announced an FTC exhibition and a scrimmage in
November in Jogja and December in Jakarta. Wishfully we are having our official
nation FTC competition by next year 2023. And R2045 will be the main team to do the
outreach and the training for a new team.

Figure 36. The setting of Power Play FTC 2022-2023

Figure 37. FTC team present their support to R2045 Team Indonesia

24
12. CONCLUDING REMARKS
The design, build, test and iteration have been carried out by the R2045 team
Indonesia in order to come up with a robotic configuration solution that is capable of
meeting the requirements of design and objectives of the games. In the full 2.5 minutes
the robot starts off by collecting the balls, storing it into a bucket, then after the bucket
is full, lifts the bucket into a 2.5 meters high sink, and drops the balls into the sink.
Then, the bucket climbs down until half way bucket lifting, to collect balls and send the
balls to a second storage to be directed to the intake of shooting, the trigger was
deployed to balls to sink by shooting it. When match end is arriving, quickly secure the
indicator and finally climb the high bar to get the highest score possible.

R2045 team is extremely diverse from the many different students from different ethnic
groups there are on our team from across Indonesia. All with different ideas and
interests, unite, to design together, build together, and innovate together. Diversity on
our team helps create ideas that are unique and special, because even if we are
different, our interest in STEAM unites us.

More than Robots, for more than 3 months we have practical contact with and
observation of facts of FIRST’sⓇ core values. We found out that most of the team
uphold the values. Team collaboration in online meetings, helping each other to
improve each other, do coo-pertition to become a better person and reach their
potential. We also noted how hard the team prepared their proposal as well as
presenting business proposals to the sponsor and we remarked how the team worked
in their spare time to do the outreach, spread STEAM and give back to their community
and present it to those younger than themselves.

It was clear that we learnt a lot during working in FIRSTⓇ Global Challenge, the beauty
of becoming problem solvers by employing our gifted reasoning, critical thinking and
creativity, During our process of creating the robot. We learnt to be collaborative
problem solvers working collaboratively and communicating between us, we also learnt
how to master the tools of working in the future such ICT, computer programming,
Robotics and becoming a good global professional.

Thank you FIRSTⓇ GLOBAL for such an awesome challenge and project for us. We
are really grateful and honored to have a chance to be the FIRSTⓇ GLOBAL
participants, preparing us to be technology leaders in the future. It strengthening our
mission to bring FIRSTⓇ Robotic Activities to Indonesia, so many young Indonesians
get benefit from these activities, and hopefully the Next FIRST Global Challenge can be
held in Indonesia. Where we could offer the world participants the warm hospitality of
Indonesia.

25
x

26
13.
14.

27

You might also like