Project 1: Modeling and Assembling the Self-Balancing Robot

The render and the assembled robot. As you can see, the robot balances itself on two wheels and resists force from my hands.

As explained in the introduction post, we Design II students have been assigned with the task of modeling a 1:1 SolidWorks model of an Elegoo Tumbller Self-Balancing Robot, and to program and assemble it for use. We are also expected to modify the robot, and to improve its stability without the need of its PIR-motion sensor in order to increase speed and reduce the need for additional code and processing power. I will go into detail on my modifications and programming in the next post.

Throughout this post, I will outline my modeling process and assembly for the robot.

On the left is the Amazon-stock image of the Elegoo Tumbller. On the front, the two eyes are actually the Pulsed Infrared (PIR) motion sensors which relay data to the Elegoo CH340/ATmega328P microcontroller. The CH340 microcontroller processes this data and then instructs the motors how to respond to any incoming obstacles, every 100ms. To balance, the motors also respond to data received from the accelerometer and gyroscope in the PCB and microcontroller to counteract falling. The accelerometer and gyroscope obtain data for both acceleration and rotation in three axes, which the microcontroller uses to determine the current orientation of the robot. Pretty neat, but later on I will be adding a third wheel (or caterpillar tracks) to negate this process in favor of increased speed, for both the wheels and the microcontroller.

The robot arrived completely unassembled in parts, though it was fairly straight forward to assemble. The parts include: a charger, AA batteries, a battery compartment, two wheels, a PIR sensor, a Bluetooth module, two motors, a PCB, a motor shield, an Elegoo CH340/ATmega328P (Arduino Nano- clone), and a bunch of plates, bolts, and nuts. Below are pictures of the parts. All together it only took roughly 30–45 minutes to assemble.

ELEGOO Tumbller Parts

To run the robot, I downloaded the ELEGOO BLE Tool App, and loaded scripts into its CH340 microcontroller right from the Arduino IDE in my computer. There are other modes, including Auto-Follow, IR-remote control, and Obstacle Avoidance, all of which I will be detailing and using in the next stage of this project.

In the video below, we can see the robot balancing itself and confusing my dogs. If you push it forcefully, it will recover to its neutral, standup position, which is pretty impressive. However, when you push completely to the ground, it will not recover to its central position, as alas a cheap Elegoo robot does not have the sophisticated R&D of Spot from Boston Dynamics. Though, we aim to improve the Tumbller.

Zuzu vs Tumbller

Before we can improve it, we must model the robot 1:1 so we can visualize and simulate potential modifications in CAD and FEA. So let me walk you through where I have been with this.

Step 1: Measure the Components

To do this, I used digital calipers, measurements shared with the class, and measurements publicly available online for the electrical components. I considered using the TrueDepth sensor on the FaceID modules of iPhones to scan and measure some of the components, but my digital calipers sufficed, and have an error of ± 0.001mm. Interestingly, I see several self-balancing robot projects on Thingiverse, though I already have my own measurements for the robot, and a 3D printer, so I could use these measurements and CAD models to potentialy print a clone of the Tumbller, with an arduino nano and similar electronics. Could come in handy…

Step 2: Design each of the parts separately (Wheels, motors, boards, etc.)

I started modeling the wheels, then followed with the plates, bolts, battery compartment, and front plate. I used public, standardized models of the CH340, PIR sensor, PCB, motors, and Bluetooth modules from GrabCAD.

Step 3: Create and edit copies of parts for similar, but different, parts.

Many of the bolts and plates were identical in shape and design but varied in size, so I simply just created modified copies from one bolt and plate to save time.

Step 4: Assemble.

Step 5: Color

Step 6: Render Image of Model in Realview

I have been using SolidWorks on my laptop, which does not have the a compatible Quadro graphics card for Realview, but I will be using my university’s computers virtually to render it in Realview for an upcoming post.

Step 6: Animate and Export for FEA in ANSYS

Assembly file of this model can be found in this folder: http://u.pc.cd/zSU

Conclusion

Overall, this took a while to model, but was thoroughly rewarding and fun. I look forward to modifying it. Hopefully my 3D printer is working soon, as I have some CAD models for the modified parts I will be printing and adding to the robot. What exactly? A compartment to shield the internals (aside from the PIR motion sensor, of course), an additional wheel (and possibly some caterpillar tracks), and a bucket to catch incoming projectiles aimed at it when traversing the obstacle course. Stay tuned..

--

--

Oliver O'Reilly-Hyland Engineering

Page for my personal and class engineering projects. IG:@olivero_engineering Twitter:@ReillyHyland