Introduction: 1KG Sumobot Build

About: Hi! My name is Aaron and I am a 18 year old student. I love to do DIY projects and I like to tinker with almost anything. I have passion for learning and I believe that anyone can learn. I mostly do electronic…

This Instructable will guide you through the process of designing and building a 1 kilogram sumobot.

But first, a little bit of background on why I decided to write this up. I was about to repair my old sumobot for a competition when I realized that I had never made an Instructable on how to make a sumobot. I have been quiet in Instructables for the past year, so I decided that I'd get back with this Instructable on how to build a 1KG sumobot.

First off, many of you would be wondering: what is a sumobot?

Basically, a sumobot is a kind of robot used in sumobot or robot-sumo competitions. As the name suggests, the goal is to push each other out of a ring, similar to sumo wrestling. The sumobot itself is designed with the sole purpose of pushing another sumobot out of the ring. The sumobot in this Instructable is 1 kilogram. There are, however, other weight classes such as 500 grams and 3 kilograms.

Skills needed:

  • Familiarity with CAD (Computer Aided Design)
  • Soldering
  • Programming in Arduino

Not much skills is needed for this project. Just being comfortable with CAD, soldering and programming goes a long way. Don't be daunted by how complicated computer aided design sounds like. Autodesk provides free comprehensive tutorials on their own software (I use Fusion 360 myself) and it is extremely helpful to a beginner learning the ropes. For me, what is more important is the willingness and readiness to learn, and of course to have fun along the way.

With this, lets get started.

P.S. I am also entering this Instructable in the Make it Move contest. If you find this Instructable awesome, please vote for me as well. (I want the t-shirt; it looks really cool :))

Step 1: Parts List

Parts list:

0.090” 6061 Aluminum Sheet - 12” x 12” (or any 0.090”/2.2mm aluminum sheet that can be CNC’d. I chose 6061 since this would be used for the main body, and 6061 has a fair amount of strength)

0.5mm Aluminum Sheet - 12” x 12” (Any alloy would work; this is just for the top cover and blade. I used spare aluminum scraps)

5mm Aluminum Sheet (Again, any alloy would work. Mine were 7075 aluminum scraps.)

2 x 12V DC high torque motor (Any high torque motor will work, such as this one from Amazon.)

2 x wheel rim (Again, any wheel rim would work, depending on your motor. If you have a 5mm motor shaft, these wheels will work nicely. Mine are actually some old silicone wheels I had)

4 IR distance sensors (I use Sharp IR distance sensors, which can be purchased from multiple shops, such as this from Pololu and this from Sparkfun.)

2 IR sensors (I got some here from Sparkfun again.)

1 Microcontroller board (I use an ATX2 just because its required. A regular Arduino Uno would actually be better for its ease of use).

1 3S Lithium polymer battery (LiPo. 3S LiPos are 12 volts. A capacity anywhere from 800 to 1400 mah would work.)

1 Motor driver (Again, this depends on how much power your motor can draw. This goes directly on top of an Arduino Uno and can provide up to 5A of current.)

Wires, cables, and connectors (To connect the sensors to the board, and to interface with a laptop.)

M3 screws and nuts

Epoxy

Cardboard

Laptop (to program the board)

Tools such as scissors, wire strippers, and soldering iron.

Step 2: Assembling the Chassis

I used Fusion 360, an all in one cloud powered 3D CAD/CAM software, to design the chassis. Autodesk provides beautiful tutorials here. I learned from mostly watching the videos and then trying to do them myself. I wont try and teach you how to use Fusion 360; I'll let professionals do their thing.

The design itself is made up of one main base, one blade, one top cover, two motor brackets, and two (or four) 3D printed braces. The main base is 2.2mm aluminum, the motor brackets are 5mm aluminum, the blade is 0.5mm aluminum, while the top cover can either be 0.5mm aluminum or regular cardboard. I used cardboard because the aluminum weighs a couple of grams more, and I was over the 1 kilogram limit by 10 grams. The 3D printed braces on the other hand are printed with ABS, on 50% infill.

The designs that called for aluminum was exported into .dxf files and sent to a local laser cutting company here in the Philippines. The 3D printed parts meanwhile were exported into STL and again sent to a local 3D printing company.

Disclaimer: I reused an old sumobot of mine that doesn't work anymore but uses this design, so some of the parts are already assembled in the photos. I will, however, walk you through the process of assembling all the pieces together.

Once the parts were cut, you may either start with the top cover, brace and blade, or the motor bracket.

The top cover in the design is made from aluminum, but due to weight restrictions I used cardboard. I cut cardboard in the same specifications as in the design.

The 3D printed brace is secured in front using screws, and is used to literally brace the blade. The blade is stuck to the base using epoxy. Screw holes in the blade and the main base is used to guide the positioning and make sure it is accurately joined together. There are circular holes on the main base that you may fill with epoxy to stick the blade to the main base. The large surface area of the holes allows the epoxy to grip the blade better and prevent it from tearing away from the base. The IR sensor can also be stuck to the bottom of the blade using epoxy, just like in the photos. Make sure that the bottom of the sensor is perpendicular to the floor.

To mount the motor to the base, first screw the motor into the motor bracket. However, you must first solder wires to the motor, since the leads are at the back of the motor and it would be hard to reach them once they are attached to the base. The motor lines up with the motor bracket and is held up by screws. That is, if you got the motor I included in the parts list. If not, you may modify the design to fit your motor. At this point, you may also attach the wheel rim to the motor. The motor bracket then screws onto the rear holes of the main base.

If you are using a motor driver that cannot go on top of the Arduino, or for any reason that the motor driver has to have its own area, there is space between the motors and the blade for it. This space is allotted for the lipo battery and a motor driver, in case you need the extra space. Since we are also already working on the bottom part of the robot, and it would be hard to access it later on once the top cover is attached, you may place the motor driver in between the blade and motors, just like in the photos. Double sided tape may help in attaching it to the base.

Step 3: Electronics

Next up are the electronics, such as the sensors, motor driver and the board.

If, again, you are using a motor driver that doesn't go on top of an Arduino, start attaching the wires that is needed to interface it with the microcontroller. For my motor driver, all I need is a signal (blue) and ground (black) wire. It depends on the driver itself. What all drivers need is wires to connect to the battery or power source. The leads attached to my XT-60 (the same plug on most lipo batteries) were too thick, so I had to trim it down to fit the narrow connector blocks.

My microcontroller also shares the same power source as the motor drivers, so I had to solder wires directly to the leads of the XT-60 connector on the motor drivers.

The IR distance sensors themselves may need to have header pins soldered onto them, depending on what sensor you get. They usually include some in the package if you purchase them, so just solder those as needed.

You may also need to solder wires together to connect the microcontroller to the sensors, just like me. The sensor has its own connector; some use JST, while some use servo headers. With a regular Arduino, you can stick jumper cables to the Arduino and then solder the other end of the cable to the cable coming out of the sensor. The process works the same way with other microcontrollers. Wires coming from the microcontroller are soldered to wires coming from the sensor.

Step 4: Putting All the Parts Together

The sensors and microcontroller go on the top plate. I mounted the IR distance sensors on a bunch of cardboard to raise it above the microcontroller, since the wires behind the sensor collide with the microcontroller. Notice how there are only three sensors in the photo. It was only at the last minute I decided to add a fourth distance sensor on the rear of the robot. Unfortunately, there was no more space so I had to mount it on the main base itself, right behind the motors.

The microcontroller is then attached to the top plate. Nothing too hard; I just poked some holes in the cardboard and screwed the entire board on the top plate. If you are using aluminum, a hand drill would be a must.

After everything is secured on the top plate, use double sided tape to stick it to the top part of the motors.

At this point, you can start connecting all the electronics together, such as connecting the sensors and motor driver to the microcontroller. If you are using the motor driver that just sticks on the top of the Arduino, then no problem for you. If not, then you will have to wire it according to the driver's specifications to the board, just like what I did.

Once everything is wired up, place the lipo in the bottom space between the motors and the blade then power up your microcontroller and drivers to see it light up for the first time.

Step 5: Programming

Once everything is assembled, there is one last thing to do: program your robot.

Programming your robot depends on what strategy you want. I am assuming here that you are competent in programming, because my motor driver uses serial (UART) communication, and thus my program will not work for other motor drivers. After all, there is no one size fits all in programming.

To help you, here is a basic flowchart of my program.

if there is someone very near in front, go full power<br>if left or right color sensor detects a white line, go back then turn around<br>if left or right distance sensor detects something, turn in that direction<br>if rear sensor detects something, turn to that direction<br>if someone is far in front, go forward<br>else, keep moving forward

Here is the entire program if you're curious:

#include <ATX2.h>
// A5 - left color sensor
// A4 - right color sensor
// A6 - rear distance sensor
// A2 - left distance sensor
// A3 - right distance sensor
// A1 - front distance sensor
// motor 1 - right
// motor 2 - left

void setup() {
uart1_set_baud(9600);
Serial1.write(64);<br>Serial1.write(192);
OK();
beep(2);
setTextColor(GLCD_BLUE);
glcd(1,0,"Initialized");
delay(4900);
}
void loop() {

int frontDistanceValue = analogRead (A1);  
int leftDistanceValue = analogRead (A2);
int rightDistanceValue = analogRead (A3);
int rearDistanceValue = analogRead (A6);

int leftColorValue = digitalRead (A5);
int rightColorValue = digitalRead (A4);

if (frontDistanceValue > 250) {
      // someone right in front, max power
      Serial1.write(127);
      Serial1.write(128);
  } else if (leftColorValue == 0) {
      // touched edge
      // reverse
      Serial1.write(1);
      Serial1.write(255);
      delay(400);
      Serial1.write(1);
      Serial1.write(128);
      delay(300);
  } else if (rightColorValue == 0) {
      // touched edge
      // reverse
      Serial1.write(1);
      Serial1.write(255);
      delay(400);
      Serial1.write(127);
      Serial1.write(255);
      delay(300);       
  } else if (frontDistanceValue > 230) {
      // kinda far front
      Serial1.write(127);
      Serial1.write(128);
  } else if (leftDistanceValue > 250) {
      // turn left
      Serial1.write(127);
      Serial1.write(255);
      delay(450);
  } else if (rightDistanceValue > 250) {
      // turn right
      Serial1.write(1);
      Serial1.write(128);
      delay(450);
  } else if (rearDistanceValue > 150) {
      // near back
      Serial1.write(1);
      Serial1.write(128);
      delay(1050); 
  } else if (frontDistanceValue > 180) {
      // far in front
      Serial1.write(127);
      Serial1.write(128);
  } else {
      Serial1.write(100);
      Serial1.write(155);
  }  
  
}

Step 6: Photos

Shown are some photos of the finished sumobot.

Hopefully you learned something from this instructable. If you do like this guide, please vote for me in the Make it Move contest. If not, I'll be happy to correct anything that can make this guide better.

Happy learning!