Bionic Bulldogs #21502

We are team 21502, the Bionic Bulldogs from North Carolina. We are part of a five-team group called Creekside Robotics. This is our team's third season together. Some of us came up from the middle school teams in Creekside, and others started on the high school teams. Our middle school teams are Bots by the Creek 15707 and Boltiverse 21490. Our fellow High school team is Entropic Fluctuations #19410.

Power Play 2022-2023

Center Stage 2023-2024


The Team

Emma

Senior
3rd FTC Season
Scouting
Mechanical
CAD

JD's Dog

JD's Dog JC

JD

Senior
3rd FTC Season
CAD
Programming
Mechanical

Xander

Junior
5th FTC Season
Programming

Eli

Sophmore
4th FTC Season
Mechanical
CAD

Caleb

Sophmore
2nd FTC Season
CAD
Mechanical

Dean

Sophmore
2nd FTC Season
Programming

Dylan

Sophmore
2nd FTC Season
Mechanical

Alex

Freshman
3rd FTC Season
Programming

Outreach


Community Tools

We have developed several things to assist us with our common frustrations throughout several robotics seasons. From auto headaches of programmers to "When can I test this?" from mechanical. As a team, we've created ways to make coding an effective auto easier and prototyping parts of a robot.

Rookie Scrimmage

We co-hosted a Rookie Scrimmage with team 19410 Entropic Fluctuations and worked with our sponsor John Deere. We had 9 rookie teams with their bots in all conditions participate to acclimate the teams to a competition environment and show them how competition's works. 96% of students were first or second year.Scrimmages at the beginning of the season always fill up quickly and are mostly veteran teams. At qualifiers, rookie teams are always struggling with many different aspects of their robots and how competitions work, so we wanted to help minimize that this year with our own scrimmage for these younger teams.



Mentoring

Since we were creating a 2nd team, we held many interest meetings and led several lessons to teach new members some of the basics.We have also continued to mentor 3 other teams within Creekside. We visited Reedy Creek MS weekly to mentor 15707 Bots by the Creek and 21490 The Boltiverse. We helped them with, organization and planning, design suggestions and advice, portfolio, presentation, and programming.

FLL Day

We hosted an FLL Day for the past two years with 15 teams at Southeast Raleigh. We helped run the tournament by keeping score, time, referring, and queuing teams. We demoed our robot near the pits so that teams could come up and ask us questions about our robot and FTC.


Community Tools

Our dynamic opmode loader library allows teams to make changes to and upload opmodes without needing to recompile and upload the entire robot controller app. It integrates with all of your team's existing modules without any changes. Roadrunner is integrated into it, so paths can be quickly uploaded and tweaked using our Roadrunner path tool.

FTC tool for making paths for the Roadrunner library. You can create all of your paths using this tool and then export them to Java files. This can be useful to copy into your project to run on your robot.

This is a REV to GoBilda design from the FTC team the Bionic Bulldogs, based in North Carolina. The protobot is a two-wheeled robot made from GoBilda parts that allows teams to drive around and prototype different ideas for the game without attaching to the main Robot!

Seasons

Center Stage 2023-2024

This season, we were very ambitious and created a completely custom robot with 70 custom parts. We hung every round and always launched our drone. With our X-drive, we zip from the backboard to the alliance wing, staying under 12 inches and navigating the field without turning around for scoring.

State Competition

Think Award 2nd place

Qualifying Competition

Thales Academy:
Inspire 3rd place, Think award, Finalist Alliance Captain
Southern Guilford High School:
Inspire 2nd place, Think award 2nd place
Islamic Association of Raleigh:
Inspire 1st place, Think award 3rd place


Power Play 2022-2023

This season, we designed our robot around a custom-made center turret based on a lazy susan. It turns 360 degrees at the speed of light! We fit everything needed into our small 11x10.5-inch drive train!

State Competition

Think Award 2nd place, Semifinalist Alliance Captain

Qualifying Competition

Smithfield-Selma HS:
Inspire 3rd place and, Think Award
Ascend Leadership Academy:
Finalist Alliance, Inspire 2nd place

Dynamic Opmode Loader

How To Use

1. Create instance of OpmodeLoader class
2. Call OpmodeLoader::init()
3. Add your functions using the function builder (explained below)
4. Wait for start
5. Call OpmodeLoader::start(int recognition = 0)
6. Optionally call OpmodeLoader::update(double deltaTime, double elapsedTime)
Or call OpmodeLoader::startLoop(int recognition = 0) to start the opmode and repeatedly call update


JD's Dog

JD's Dog

Function Builder Object

Get function builder from the OpmodeLoader class using OpmodeLoader::getFunctionBuilder()
Set the class to pull functions from using FunctionBuilder::setCurrentObject<T>(T object)
Add your functions using FunctionBuilder::addFun(String name, LuaType rtnType = LuaType.Void, List<LuaType> argTypes = Arrays.asList(LuaType.Void)

Classes

Call FunctionBuilder::newClass() to create a class
All functions created during a class get put into that classes table instead of being global
Call FunctionBilder::endClass(String name) to make the class global

LuaType enum
Double: java double type
String: java string type
Bool: java bool type
Void: no return value or no args if it is the only arg in the list
CheckRunning: return type only, if the java function returns true then it stops the opmode, the lua function returns nothing

RoadRunner

Replace your instance of OpmodeLoader with OpmodeLoaderRR

JD's Dog
JD's Dog

Building The Paths

Our Roadrunner Trajectory Builder tool can build paths in the same format that the robot is expecting and can upload them to the robot
On the top bar click Robot then Upload Current to upload the current path or Upload All to upload all

The LUA Code

The lua code can be anywhere and does not have to be in the project (we recommend putting it in the project root so it is added to your teams git repository)The code cant be edited in android studio and will not show up in the file tree as it is not part of the android project we recommend editing it in a program like vscode but anything will workGetting the lua code onto the robot
Run the FileSync program in that folder all of the files will be uploaded to the robot at the same place that you had them on your machine

Copy the lua folder from the downloaded zip into the project rootWe recommend also downloading vscode for editing the lua code as it will not show up in android studio
If you are using visual studio code add the lua-language-server extension for code completion, errors, type checking and more

JD's Dog

Download Instructions

Open build.gradle for the TeamCode module
Add the shown lines

JD's Dog

Open build.gradle for the project
Add the shown lines

JD's Dog

Open build.dependencies.gradle
Add the shown lines

JD's Dog

Open the github page and download the project as a zip fileFrom the zip folder
Copy the cpp folder into ProjectRoot/TeamCode/src/main
Copy the opmodeloader folder into the inner teamcode folder
(project file structure is shown below)
Do a gradle sync

JD's Dog

Setting up the Lua environment

Copy the lua folder from the downloaded zip into the project rootWe recommend also downloading vscode for editing the lua code as it will not show up in android studio
If you are using visual studio code add the lua-language-server extension for code completion, errors, type checking and more

Roadrunner

Copy roadrunner folder into the opmodeloader
Add the trajectory builder tool
Download our Roadrunner Visual Trajectory Builder tool and put it in the project root

Have any questions? Send us a email and we will respond as soon as possible!

Visual Trajectory Builder

NOTICE: The deep dive field setup will be added once the game is released.

Path Creation Process

1. Place nodes by shift clicking on the field
2. Select the first node in path by clicking on it
3. Connect the selected node to the next one by ctrl clicking on the next node
4. Edit the settings of the nodes or path segments

Node Settings

POS - Node position in inches
Angle - The nodes rotation
Heading - The robots rotation at that node
Layer - The nodes layer (explained later)



Segment Settings

Layer - The segments layer
Heading Mode - How the robots heading changes through the path
Spline Path - Can curve and allow for smooth direction changes
Line Path - Straight lines the robot normally has to stop before and after the line

Global Settings

Layer - Global layer setting
FlipHoriz - Flips path horizontally
FlipVert - Flips path vertically
Grip Snap - Snaps placed nodes to a quarter tile grid
Up/Down Arrows - Moves selected node up or down in their respective list
Nodes - List of nodes
Segments - List of segments



Layer System

The layer system is to help organize paths by making certain nodes or segments selectable. The layer setting in the nodes or segments is the layer that object is on, the global layer setting selects which nodes can be selected. Objects that can be selected are drawn on top of everything, everything else will be drawn transparent. When the global layer is -1 then all objects are selectable.

Recognition System

Allows people to have separate routes in their paths. The global setting is the route that the program uses when exporting a path. -1 means all routes and anything grater is that parts rout number.

Saving, Loading, and Exporting

The Save as button on the menu bar opens up a file explorer like window. The top of the window has 2 buttons and a text box, below that will be all of the files and folders in the Save folder. Clicking on a folder will take you into that folder, clicking on a file will override the path in that file. If you are in a folder then a '<-' button will appear that will take you out of that folder. In the text box enter the name of the file you want to save it as and hit the + button.The Save button will save the path in the file you have saved it in or '.path' if it has not been saved before.The Load button will open the file explorer window where you can select the path to load.The Export button will export the path with the same file path as it was saved in except in the export folder instead of the save folder.

Refine Your Ideas With Advanced Prototyping Capabilities

Our protobot is equipped with easy mounting holes to allow you to be able to mount a variety of designs, this empowers teams to innovate and experiment.

Why we created Protobot

We created Protobot because we saw a similar design online using VEX pieces. We thought this would be a great way to prototype different design ideas we had during the season and we knew we could change it so that it was made from goBilda parts that we mainly use.


Protobot Instructions

Part list

  • 1x Rev Control Hub

  • 1x Matrix 12V 3000mAh NiMH Battery

  • 2x Yellow Jacket motors (312/435 RPM)

  • 4x 96mm Omni Wheels

  • 2x Hub Shafts

  • 3d printed Spacer

  • 1x 8mm ID mini flanged ball bearing

  • 1x 6mm ID mini flanged ball bearing

  • 2x 1504 Series 32mm OD Pattern Spacer (4mm Length)

  • 4x 2303 Series Steel, MOD 0.8 Pinion Gear (8mm REXâ„¢ Bore, 36 Tooth)

  • 1x 1123 Series Pattern Plate (1 x 3 Hole, 43 x 96mm)


Step #1

Download the two STLs down below to be able to 3D print the body of the protobot. The fitting will not be perfect.

Step #2

Connect the two STLs with a 3-hole pattern plate on the top of the protobot.

Step #3

Attach a quad block mount to each motor. Then put a gear on each motor and screw them in through the top of the two pieces.

Step #4

Put the 6mm bearing in the bearing hole closest to the middle with the flange outward. Then put the 8mm bearing into the hole closer to the edge with the flange facing inwards. Feed the hub shaft through the large hole on the outside until the shaft is through the 8mm bearing only, then put the other gears onto the shaft and finish feeding it through the other bearing.

Step #5

Now attach to the wheels, take two wheels with alternating rollers and put the OD pattern spacer between and screw it into the hub shafts.

Step #6

To attach the control hub, take the 3d printed spacers and put them over the 4 holes and then either take m3 screws or use zip ties.

Contact us!

Send us an email with any questions about our resources, outreach, or anything!