Our group chose to take on the project of the Otto Bot. The objective of this project was to help us understand the basic concepts of robotics. During our project we gained an understand of how the physical components of the robot work, along with the knowledge of manipulating the code required to operate it. This project gave us a foundation which we could use for more advanced robots such as a BioPed robot, we are also more equipped to add more advanced attachments and modifications such as a proximity detector to avoid obstacles.
Step 1: Materials
The following materials are required:
1. Arduino Uno
2. Arduino NANO Shield I/O Extension Board Expansion XD-212
3. Mini USB cable.
4. HC-SR04 Ultrasound sensor.
5. Mini servo SG90 9g x4
6. 5V Buzzer.
7. Female to Female breadboard connectors cable 10cmx6.
8. 4 AA Battery case
9. 1.5V AA batteries x4.
10. Mini cross screwdriver
11. 3D printed head.
12. 3D printed body.
13. 3D printed leg x2.
14. 3D printed right foot.
15. 3D printed left foot.
We started off by gathering all the tools and electronic components such as the servos. Originally, this project was done using an Arduino Nano, but a malfunction in the board required us to switch to the Arduino Uno. After we collected our remaining parts (the parts that were accessible to us in the classroom), it was time to start printing the components that had to be 3D printed. The files for the stl file with all the 3D components is attached.
Step 2: 3D Print and Servo Assembly
The 3D printer settings that are used:
- 3D Touch Printer used
- PLA material
- No need supports or rafts
- Resolution: 0.15mm
- Fill density: 20%
We found that is best to maximize the time you have to do as much as you can, assembling the servos and familiarizing yourself with the codes is a good use of time. The pictures attached show how the servos are assembled.
Step 3: Upload Code!
The following steps need to be taken for the coding part:
1. Download & install Arduino software: https://www.arduino.cc/en/main/software
2. Copy Oscillator, US, BatReader, Otto and LEDMatrix libraries that is inside OTTO_smooth_criminal.zip or find them on https://github.com/OttoDIY/OttoDIY
3. Connect your Otto through USB (your computer should install the drivers)
The code we referenced to was in the github link, titled OTTO_smooth_criminal
However, this code was for the Arduino Nano, so it was essential for us to modify the code for the Arduino Uno. Additionally, our main objective became programming the bot to walk, so that's what we focused on first.
The following is our modified code that allows our Otto robot to walk: https://docs.google.com/document/d/1eDOnamvBLVGHc3szkAAwySB_nCnpFkeS6Cw_aGnaGQc/edit?usp=sharing
Step 4: Feet Servos
The pictures attached show how the servos are fixed onto the feet of the robot. First, place the servo in the feet and push the exposed gear inside. We needed to file down the inside of the feet and sand the servo down to assure a good fit. The servo should be able to rotate in either direction. Afterwards we secured it with hot glue. Once the code is uploaded, the servos should function.
Step 5: Body Servos
The other two servos were put in the locations defined by the 3D body. Our 3D printed body did not have these defined locations because it was not printed to the correct size. Instead we glued the servos were to the location shown in the manual picture.
Step 6: Leg to Body Attachment
Connect the legs to the hubs of the servos sticking out of the two holes on the bottom of the body. It is important to ensure that the legs can rotate in either direction. Once this is done, small screws and hot glue can be used to secure the attachment.
Step 7: Foot to Leg Attachment
The servo attached in the feet was hot glued in place. A hole had to be drilled onto one of the small panels sticking up from the foot in order to fit the servo. This was again due to our printing problem but the holes are likely to be slightly out of place anyways, we advise that you check this anyways. The leg was then placed onto the servo, and the two panels on either side kept it in place. Weave the wires of the servo through the legs and body as shown in the image above to make it easier to wire.
Step 8: Electric Connections
- pin 2 is connected to the servo on the left thigh
- pin 3 is connected to the servo on the right thigh
- pin 4 is connected to the servo on the left foot
- pin 5 is connected to the servo on the right foot
Wires (same color for all numbered pin wires for organization) were connected from the yellow/orange female end of the servo to pin 2, pin 3, pin 4, and pin 5 on the Arduino Uno. Then a wire was used to connect the power bar on the breadboard to the 5V pin in the Arduino Uno. Another wire was used to connect the ground bar to the GND pin in the Arduino Uno. The red (power) female ended wire from the servos were connected to the power bar using wires (same color for all power wires for organization). The brown (ground) female ended wire from the servos were connected to the power bar using wires (same color for all power wires for organization). Then connect the Arduino Uno to the computer and upload the code.
Step 9: Conclusions
This project served as a good conceptual and practical learning experience. Additionally, it helped sharpen our problem solving skills, since many problems were encountered. To name a few of these problems, and how we overcame them:
- 3D printed parts- After our parts were printed, it came to our attention that the printing was not to the size we had imagined it to be. When the parts were attempted to be put together, it was clear that a lot of the pieces didn't fit together. Additionally, a lot of the defined zones where parts are meant to be attached together were not defined in the 3D printed bodies, so it was troublesome to work around. To fix these problems, a LOT of filing and sanding had to be done in order to get pieces to fit together. Also, the bot required us to drill holes into the panels of the 3D printed feet in order to place the servos in them. This drilling led to 3 broken pieces of the same part. The inefficiency of our 3D printing led to many drawbacks in the building process and therefore postponed deadlines we set for the project. A big setback was the fact that the Otto's head could not be placed on the body since it is too big and doesn't fit in the small slits that are meant to hold it in place.
- Axon- The axon 3D Printing application was quite difficult for us to use because
- Broken Servo- All the tugging and pushing to get the servos to fit in the feet resulted in one of our servos not functioning because the wires got disconnected from its board. To solve this issue, soldering the wires back to the board on the servo was attempted. This worked... until another wire detached from the board. Again, soldering was attempted, but didn't end up so successful due to the small size of the servo.
- Arduino change!- For some reason, the Arduino Nano we were using for the controlling of the servos stopped working midway through the build process. This wasn't very pleasant because a) we have to re-wire the servos! b)...and change the code. After we rewired for the Arduino Uno, it was essential to modify the code from Arduino Nano compatible to Arduino Uno compatible. This meant the pins had to be redefined. A central focus became only modifying the code to make the bot walk, and the dancing and obstacle avoiding was left aside because there are many variables to change there.