autonomous object-tracking drone
TRANSCRIPT
NOTES:
THE FOLLOWING LINK IS A VIDEO COLLAGE OF SOME OF THE PROJECTS DESCRIBED IN THE ‘ADDITIONAL INFO’ SECTION OF COMMON APP (PLEASE EXCUSE THE BACKGROUND NOISE): https://vimeo.com/495110002
THE REMAINDER OF THIS DOCUMENT IS AN ENGINEERING NOTEBOOK-STYLE DESCRIPTION OF THE VARIOUS PROJECTS, WITH ADDITIONAL REFLECTION AND VISUALS
___________________________________________________________________
Autonomous Object-Tracking Drone
July 2020 – Present (in progress)
Inspiration: I’ve been interested in the possibility of using nanorobotics in healthcare. So I wanted to understand how nanorobots are designed and how they work. Although I don’t have the resources to tinker with nanomaterials, I realized that drones and nanobots share certain fundamental robotics concepts: power, sensor-driven actuation, remote control, mechanical efficiency, autonomy, etc. I’ve been doing this project as a way to familiarize myself with these concepts.
Basic design (diagram to the right): Uses computer
vision software on a Raspberry Pi camera to identify
target objects, then uses that input for actuation:
rotating the camera and moving the drone to follow
that object
Current status (left): Most of the hardware is set, now
working on software set-up for remote control. Will
then move on to use ROS to make the drone truly
autonomous
Technical Skills Developed/Topics studies
- Raspberry Pi and Python
- 3-D printing
- Drilling, soldering
- Wireless communication and remote control
- Image recognition, deep learning: Google Crash Course
- SolidWorks
Details:
After finalizing a BOM, we started using SolidWorks to create the drone frame design. I went through a Udemy SolidWorks tutorial to help me do this. Here was our very first design:
Setback
As you can see, it is much more detailed than the previous design, and is meant to be screwed onto the
center frame. This design is also better for fastening and protecting the wires that must pass through to
the motor and the ESC, which will most likely be fastened to the arm via zip ties!
As you can see, it was very basic and
incomplete. That is because, mid-way
through the process, I realized that I
had made it all as a single part. This
would make it extremely weak when
printed. So I decided to start over.
I split the frame into different parts that could be screwed or attached together after being printed or laser-cut. That way, damage to one part wouldn't require rebuilding the entire design. To the right is my SolidWorks design for the arms
Setback:
After researching the resources available during quarantine for 3-D printing and laser-cutting, we
determined it is not practical or financially worth it to create the frame ourselves. Instead, we decided
to order a standard quad copter frame from Amazon. However, that means we would have to design
add-on platforms to the frame and drill some extra holes to customize the frame to our needs. The
frame is pretty light and small because it is made of high-quality carbon fiber which wouldn't have been
accessible if we tried 3-D printing. But that does restrict our flexibility when it comes to the physically
organization of the component on our drone.
Although we couldn’t 3-D print the
entire drone frame, we did have to
print certain pieces. For example, we
used PLA to print this flight controller
mount. When attached with
balancing balls, this mounting system
will be flexible enough to protect the
flight controller from any vibrations
during flight.
One particular challenge of creating a
Bill of Materials was making sure that
each part was compatible with the
others. Here, I was using a multi-
meter to test the force exerted by the
motor propellers at specific voltages.
This helped me make sure that the
batteries will supply enough power to
the motors, and the motors will apply
enough force to lift the drone.
The drone frame we bought has a
power distribution board built onto it.
So I went to my dad’s office
workspace to solder all the wires
from the motors and battery onto the
board.
As of right now, we are mostly ready
with all of the hardware, as seen in
the picture on the left. Now we are
primarily working on the software,
using ArduPilot as our primary
platform. We are running into some
issues related to the receivers
though: they are not picking up
signals from the remote controller
properly.
DIY Soccer Ball Kicking Machine
May – October 2019
Inspiration Soccer star Roberto Carlos’ famous curved free kick goal. I wanted to investigate the physics
behind how soccer balls curve (a.k.a. the Magnus Effect), and the IB Extended Essay gave me the perfect
opportunity for that. I quickly realized that, to control the way the ball was kicked for each experimental
trial, I had to make some kind of kicking contraption. I could not
simply borrow a JUGS machine because those can only kick size 5
balls: my experiment involved smaller size balls as well.
Design (final product to the right): two 90V motors and wheels
mounted about 8 inches apart on a crossbeam, spinning in opposite
directions. Motors set at different speeds using converters to cause
curve. Ball fed between wheels gets “sucked in” and shot out. Used
drone camera and LoggerPro software to graph the trajectories of the
balls from birds-eye-view.
Biggest challenge (pictures below): Getting the wheels to fit onto the
motor shafts. The motor shafts had a key, which made them just a bit
too wide to fit into the axle hole on the wheels. So, I removed the wheel bearings to make the hole
wider, and was planning to get an adapter/coupler to fit the wheels onto the shafts. But none of the
ones online were the exact size, so I worked with the Metals teacher at my high school to make the
couplers out of scrap metal pieces, and weld them to the wheels.
Technical Skills Developed/Topics studies
- Drill, broach, lathe, hydraulic press, solder
- Electronics (converters)
- Motors
- Physics (Magnus Effect)
- LoggerPro
Details
Setback: The coupler fitted fine to the motor shaft. But it did not fit to the wheel. The fat heads of the screws used to tighten the coupler got in the way. I couldn't find any replacement screws which had
flatter heads, so I had to... Make my own couplers! First, we used a lathe machine to shave scrap metal blocks into cylinders with the appropriate outside diameter. Then I used essentially a horizontal drill press to drill an appropriately sized hole for the shaft into the metal. We used oil lubricant to ensure that the cuts are smooth and clean.
The biggest challenge was connecting
the DC Motor shaft to the tire. The
shaft was 5/8 inch in diameter, with
an additional 3/16-inch keyway. The
keyway came in the way and the
motor shaft could not fit into the tire
bearing. Also, the tire had a free
bearing, which means that is meant
to spin from external torque rather
than be driven by a motor.
I had to look for a coupler that would fit the wheel onto the shaft. I found a coupler which was 5/8 inch with keyway on one end and 1 1/2 inch on the other. I thought this would fit perfectly, so I ordered the couplers (shown to the left)
Using hydraulic press to force broach
into hole to make a keyway indent in
the coupler
I learned how to operate a
hydraulic press and broach
But I wasn't done yet. Now I had to... 1. Drill and thread a hole through the radius of the couplers that would let me put a fastener through. This would prevent the coupler from sliding up and down the shaft. 2. Weld the couplers into the axle tube on the wheel, so the wheel would be driven by the motor 3. Thread fastener holes in the couplers:
One of the two couplers after
completing the bore
Using a tap tool to thread the
hole on the coupler
Final product of shaft
couplers welded onto the
wheels
Calculus-Based Hovercraft Speed Control
Algorithm November 2019 — February 2020
Inspiration: During the 8th grade Science Olympiad hovercraft event, our hovercraft was too fast. We
thought the event was a race, when it was actually that our hovercraft would have to get across a ramp
in as close to a target time (which was defined at the event) as possible. We had to add weight to the
hovercraft to slow it down, but this was still not very effective.
Context: Studying calculus in class, I realized that calculus could help resolve the issue we had at the
event. Did this project for the IB Mathematics Internal Assessment.
- I developed an integrals-based algorithm that could hypothetically be program into a potentiometer
for the thrust propeller. This would allow the hovercraft to adjust its thrust mid-ramp based on input
parameters (ramp length and target time).
- Most of this process was theoretical and on paper and relatively straightforward (I used physics
concepts such as position, velocity, acceleration, force, and related to using calculus)
Challenge: The tough part was transitioning from “force” to “voltage” (this algorithm had to eventually
be programmed into an electrical component, so simply having “force” values wouldn’t be useful). For
this, I had to derive a relationship between “voltage supply” and “force exerted” that was unique to the
motor-propeller combo I was using. The set-up I used to derive this relationship is shown below to the
left:
Technical Skills Developed/Topics studies:
- Electronics
- Calculus-based physics (mechanics)
Picture of the Hovercraft
Below is the pseudo-code for the final algorithm I derived:
EMG and Reaction Time Test Experiment
November 2018 — February 19
Inspiration: I wanted to understand and justify my sensitivity to specific background noises, as I get
disturbed really easily while trying to study at home with my two younger brothers. The IB Biology
Internal Assessment project gave me the opportunity to explore this.
Design: Developed a simple reaction time test using an LED and joystick circuit with Arduino Uno.
Subjects listened to various background noises while doing the tests, and I looked for correlations
between the background noise and reaction time. Used an EMG kit to detect muscle twitches and
supplement the data. Below is an image of the circuit setup:
This is a setup of the room
environment in which my
subjects did the tests. I tried
to control this, as I had to
mitigate as many
confounding variables as
possible.
Biggest Challenge: Implementing the EMG SpikerShield
While I was able to connect the SpikerShield system to the Arduino and manipulate the code to read the
input values for the muscle activity on the console, I struggled to make the code detect a spike in these
values. Input values were given to the console from the SpikerShield every two milliseconds, so the only
practical way I could use these values would be by manipulating the code so that it could detect a spike
in the values on its own. However, I could not find a constant threshold input value over which I could
consider the muscle to be flexed. This is because many small details, such as how tightly the subject was
gripping the joystick, affected this value. Controlling many of these small details was impractical, and
using SpikerShield data would have yielded an overwhelming amount of data. Therefore, I decided not
to implement the EMG SpikerShield in the experiment.
Technical Skills Developed/Topics studies
- Arduino and Arduino Sketch
- EMG SpikerShield kit (this was mainly used to double check the values obtained from Arduino)