Rogue Robotics: Team 2987’s Modification Guide for a Power Wheels™ Wild Thing®
A guide to converting a Wild Thing® into a
Joystick-operated wheelchair.
*With pictures and detailed instructions
Disclaimer:
Farmington’s FIRST Robotics team known as “Rogue Robotics” is not responsible for any injuries to any person or damages to any object including the car caused by the modifications. Any type of modification will also void the warranty provided by the manufacturer of the electric toy vehicle.
Special Thanks:
Thank you to FIRST Robotics Team 1939 “ The KUHNIGITS” of Kansas City, MO for sharing their resources from their GoBabyGo builds. https://www.frcteam1939.com
© Copyright 2023 FIRST Robotics Team 2987
ISD192, Farmington, Minnesota
Guide Version: BETA 0.2
. Introduction .
The Team:
Rogue Robotics is an after-school robotics club for Farmington High School in Farmington, Minnesota. Founded during the 2008-09 school year, we participate in the F.I.R.S.T. Robotics competition. Each season, we build a 120-pound robot from scratch to compete in their game that changes every year.
Competitions:
Each year, we have six weeks to design, prototype, build, and test a robot that will compete in the FIRST Robotics Competition. Mentors from the community donate their time and knowledge to help our kids develop valuable job skills in the STEM field.
Community Outreach:
The Rogue Robotics Team contributes a large portion of its energy on community outreach. We promote STEM by speaking at middle and elementary schools and mentor new teams at all age levels. We also donate our time at volunteer events like Feed My Starving Children.
Go Baby Go:
In November of 2018, we were approached by the parents of Cillian Jackson to help modify an electric toy vehicle. We learned about the Go Baby Go program and discovered that there were no active chapters in the state of Minnesota. Working with the founders of Go Baby Go at the University of Delaware, we created the first official chapter in the state.
Funding:
Building robots for competitions and our multiple community outreach programs are costly endeavors, we could not accomplish any of our goals without the support of our generous sponsors. If you would like to sponsor Rogue Robotics, please visit our website: www.team2987.com/sponsors
. Part/Order List .
Tools/On Hand Materials:
Hardware for Adjustable Joystick:
Seat:
| Electronics:
|
The seat you choose and how to mount it will be influenced by the needs of the child. We found that child seats designed for mounting onto pedal bicycles worked well for the kids we worked with. Some modifications to the chairs might be necessary to ensure the child and chair fit properly. We attached example pictures below from our most recent build. You will likely be attaching your new seat directly to the existing chair on the toy vehicle. We recommend drilling holes into the existing chair, then use bolts with rounded heads (for better comfort) to attach the new chair. Be sure your new modified seat can be removed so batteries can be removed and recharged.
. “What’s Under the Hood” .
. Wiring Diagram .
. Wiring Diagram with Optional Bluetooth .
. Wiring Instructions .
(See Programming section for Arduino pin functionality)
b.) Optional: If including Bluetooth functionality, solder as below instead
. Joystick Mounting .
Introduction
There is no single joystick mounting solution that meets every child’s needs. We have created several designs, but this manual will feature our latest adjustable joystick mounting arm that should accommodate a large number of kids. Whichever one of our designs you choose to use, you may need to edit the part file to meet the specific needs of your child. We recommend meeting with the family a few times throughout the build process - once to gather an idea of what adaptations are needed, and at least once when the new seat is mounted, to gather final measurements before final design edits and 3D printing.
Printing
We have several designs on our website ready for download. We highly recommend printing in ABS, although any material will work. No matter what material you use, print with at least 4 perimeters and top/bottom layers.
Installing Threaded Inserts (for adjustable joystick mount only)
Pictures and video link on next page
Video Resource for Inserts
Assembling the Joystick box
We recommend running cables through the PVC before pushing the PVC pipe into the elbows. Note how there is a channel cut into the bottom horizontal PVC pipe for the cable. Wrapping the wires in tape around this area is recommended.
In this section we will cover:
Prototyping
We recommend building a prototype robot with potentiometers and servos instead of joysticks and motors. This way you can iron out any issues with wiring or the code before you test on the actual wheelchair. The picture below is an example of a prototype.
The main board of the prototype is identical to the soldered breadboard as described in the wiring section. The other prototyping board is the one in the bottom of the picture.
For this, we used two potentiometers to simulate the X and Y axes of the joysticks. Connect power and ground to each potentiometer, then connect the signal pin from each potentiometer to the proper input pin on the Arduino (default = A0 and A1).
To simulate the motors, we used servos. Connect each of the motor output pins (default = 10 and 11) from the Arduino to their respective servos. You will also need the servos connected to power and ground.
To start you need to make sure you have all of the appropriate software installed. The project uses an Arduino so the Arduino Integrated Development Environment (IDE) will need to be installed.
https://www.arduino.cc/en/Main/Software
https://github.com/RogueRobotics2987/GoBabyGo
Once the Arduino IDE is installed then you will need to upload the code to the Arduino Nano Microcontroller.
General Functionality
Most likely, modifications need to be made to the code if you aren’t using exactly the same hardware as we are. This section gives an outline of the main parts of the code that you might need to modify. We will go through the code linearly from top to bottom.
Motor Inversions
boolean INVERT_1 = true; boolean INVERT_2 = true; |
If you notice that one or both of your motors are spinning in opposite directions, you can change one or both of these variables to false. INVERT_1 will invert Motor 1 and INVERT_2 will invert Motor 2. If you can’t quite get it to work properly, you may need to invert the joysticks. This is described in the Pins section.
Constants
int SPEED_LIMIT = 256; |
The SPEED_LIMIT constant sets the maximum speed for the motors. You can think of it as a percentage - the max is 512, so the default 256 will result in 256/512 = .5 or 50%. This means the maximum speed of the motors will be 50% of the maximum output of the motor controllers.
int DEADBAND = 60; int RAMPING = 1; int REVERSE_PULSE = 1000; int FORWARD_PULSE = 2000; |
The DEADBAND constant is the minimum position value that the joystick must overcome to send an output to the motors. Increase this value if you want a larger deadzone, decrease if you want a smaller deadzone.
The RAMPING constant determines the additional speed the motors will get when the joystick is held at a constant position.
The REVERSE_PULSE and FORWARD_PULSE constants are specific to each motor controller. The default values are for the Talon SR. If you are using another motor controller, you may need to adjust these to have proper speed and direction.
Pins
Default values:
int JOYSTICK_X = A0; int JOYSTICK_Y = A1; int MOTOR_1 = 10; int MOTOR_2 = 11; int SPEED_POT = A3; int turnPin = 4; // ch1 int throttlePin = 5; // ch2 int togglePin = 3; // ch3 int invertStickX = -1; int invertStickY = 1; |
Another way to invert the direction of the motors is to invert the input from the joystick. To do this, change the value of invertStickX or invertStickY to 1 for no inversion, or to -1 for inversion.
At this point in the code, you will notice the line
// -----Don't Mess With Anything Past This Line----- |
This line of code should be pretty understandable, but just in case - you shouldn’t mess with anything past this point.
Arduino
115200 baud
Troubleshooting with the Joystick
If your joystick is not working properly you are going to need to adjust the potentiometers on it. Before you do that you will need to make sure that your code is in debugger mode.
boolean DEBUG = true; |
After you confirm that you are in debugging mode, pull up the