Autonomous Treasure Retrieval Robot

Github Repository

Project Overview

Consisting of a series of obstacles and hidden traps, the objective of the competition was to build a robot that could autonomously navigate temple ruins and recover lost treasures. While building my teams solution, I focused on software development, systems integration and electrical design. This included implementation of a state machine, control algorithms for a robotic arm and creating circuit simulations.

Robotic Arm

To retrieve and detect treasures along the course, our team designed and built a robotic arm with 4 degrees of freedom. For the arm, I developed the control algorithms to actuate the arm. This included PID controllers to position each of the joints, an inverse kinematics solver to position the arm in 3D space and treasure detection algorithms to filter and process ultrasonic sensor data. The software for the arm was implemented in C++.

While working on getting the arm to reach various positions based on the sensory inputs to the system, I learned about inverse kinematics and how my geometry and mechanics skills could be applied to robotics.

Signal Processing

To navigate the course, a 10 kHz infrared beacon had been set up. However, to complicate matters, there was another beacon emitting a 9 kHz signal. If we accidentally followed the 9 kHz signal, the robot would veer of course. To resolve this issue, I designed a filtration system that would only allow the 10 kHz signal through. This design involved several iterations, allowing me to learn to use circuit simulation tools such as LTSpice, building circuits on breadboards and protoboards, debugging circuits with an oscilloscope and soldering.

Our final design was a Butterworth bandpass filter, with a tight band around 10 kHz. The soldered board is shown below.

Building this circuit really emphasized the importance of understanding what is happening at each stage of the circuit. With circuits of this complexity with feedback loops, it can be very difficult to debug if you don't have an understanding of the behaviour. Given the complexity, it was difficult to use electronics knowledge at the time to predict the behaviour of the circuit so I learned to use a circuit simulator (LTSpice) instead which gave my team an easy to use schematic to follow while prototyping.

Other Projects

Inverted Pendulum

Building an inverted pendulum to test a Byzantine Fault Tolerant key-value store for real-time controls and embedded system applications.

Learn more

UBC Sailbot - Software Engineer

As a software member of this student design team team, I am working on building an autonomous sailbot to sail from Vancouver, BC to Maui, HI.

Learn more