Darlington School: Senior Ventures Spotlight: David Cao's Final Project
Some text some message..

Senior Ventures Spotlight: David Cao’s Final Project

David Cao | May 20, 2020 | 150 views

My Senior Ventures project has allowed me to evaluate how new DarBot team members learn different aspects of Darlington's robotics program. 

After I joined the DarBots team in the 2018-2019 school year, I recognized that there was a lack of organization regarding how new members were being taught the information needed to be succesful in the class and at competitions.

However, as everybody knows, technology changes year by year and in order for us to win, everything we learned in the past should be passed on to the next generation so the team will grow and improve as we participate in more competitions. I decided to start teaching team members what I learned through the process of being a productive member of the DarBots team. One person that I put exceptional effort into is Mason Wu, who is probably going to be the chief programmer during the 2020-21 robotics season.  He has learned all of the programming techniques that I have been using this year and helped me with planning which direction the team should go next, and I know he will be an exceptional leader.

To maintain the competence of the team, updating and optimizing the iteration process is really crucial. Starting this year, the team reflected on every match played and and the overall iteration process after season ended.  

Software Development

Code Synchronization

One problem that I recognized after I joined the programming team last year was that programmers do not have an organized place to store their codes. I tried to change the workflow and let everyone use Github, an open platform for coders to coordinate , but it was difficult to change everyone since old programmers have been used to the “Google Drive” workflow for years. 

But this year everyone used Github and it was a great experience for everyone because even when we were not in the makerspace, we were able to look at changes to everyone’s codes instantly and work on the same code online. 

Code Structure

Uhhh...This is a difficult topic to discuss. 

Before I became the chief programmer, all of the code for a program was cramped up in a single file. This is especially not acceptable when I began to use complicated techniques to control components on the robot. 

Since there were so many functions to be integrated into the robot that are always used, I gathered up the codes and put them into a library that programmers can use to simplify their codes. I also asked everyone starting this year to separate different component control codes into different files. This makes our code files more separated and organized. This will also allow all DarBot programmers to be more confident when coding in the future. 

Advanced Control Techniques

Asynchronous Structure + Control Loops

Before I started programming for the DarBots, our robot control codes were built with procedural and blocking codes. This sacrifices a lot of precious time that can be used to achieve more competition goals because it makes response time for certain sensors longer.

I introduced the idea of control loop and the idea of asynchronous execution to the team as soon as I joined. As you can see in the diagram below, asynchronous programs offer a huge efficiency advantage over blocking programs.

Blocking execution flow

Asynchronous execution flow

Motion Profiling

Before and for a long time after I joined the DarBots team, the programmers were only using encoders to help get better movements (than just using raw DC Motors) out of the robot. I was able to reduce motor latencies this year by eliminating passing of memory stacks between functions and adding Gyro guidances to movements. 

I learned about Motion Profiling and Pure Pursuit Algorithms in the middle of this season and was able to implement it for our league tournament and state tournament. I was not able to experiment with passive localization wheels but the codes I wrote will lay a good foundation for the team to try out next year. 

Computer Vision

Every year the competition has a computer vision task during the autonomous period, and the organization that designed the competition topic also releases examples to perform those computer vision tasks. This year’s task is to distinguish those randomized building blocks with black images from pure yellow building blocks. 

This year the game design committee released 2 ways to distinguish the difference between the building blocks, one is through an Augmented Reality toolkit that can give real-world 3D coordinate reference to the detected object and the other is through a Deep-Learning model that gives only 2D coordinate reference from the camera pixels.

However, the Augmented Reality toolkit can only be used when the camera is put within a range of 20 cm away from the black image, and has a relatively low recognition rate, while the Deep-Learning model only works when the camera is looking at those building blocks at a certain angle, which both adds an extra amount of limits on the building team. 

We started out by using the official Augmented Reality toolkit, and soon worked to optimize the dataset for the toolkit which results in quicker and more accurate recognition. Then we moved to use a “Pixel Counter” developed by ourselves to recognize the position of randomized building blocks. 

Social Media Presence

This year was the first year for DarBots to show its presence on social media like Youtube and Instagram. We were able to get over 10,000 views on Youtube and reach a lot of teams that need assistance to be successful. 

Our creative engineering solutions kept reaching out to people who are eagerly looking for solutions to this year’s game. I showed up several times in our tutorial episode “Darbots Tech Tips” and taught people online how to set up Android debugging over WIFI  and set up Phone Screen Streaming over WIFI.


I have put a lot of time and efforts into this senior venture project - but all of the discoveries I found are not all based on what I did this year - actually, a majority of them are from the efforts I have been putting in since my middle school years. 

My journey in Senior Ventures and Robotics shows how far passion can drive anyone in a short period of time, and I was able to learn something that even a sophomore in college may not be able to understand. I hope that more people in the school will discover their passion in the future just like I did, especially on the Darlington robotics team. If every team member invests time in researching ways to boost competition performances + teaching new members, the robotics program in our school will thrive for years to come.