The goal for this project was to create a drone solution that would be able to pressure wash transmission line insulators. The idea being that we can clean these insulators cheaper, faster, and safer than a typical ground crew or helicopter can.
The FAA has certain limitations on the weight of drones for recreational and commercial use that can be found on their website. We also had to think about battery power, maximum payload, and GPS percision when picking out our drone pieces.
As our team was getting settled into the pace of the summer, we looked at a few different ways we could design this drone. One option being a tube that pumps water up into the air, another being a system of magnetic fasteners to hold water in the air. Our team, however, decided to try and fit a full pump, water supply, and sprayer system onto a single drone. We decided that there was not much else we could do, especially if we are trying to limit the danger posed to a ground crew.
So, we started designing and iterating. We looked at helicopter designs, pre-made designs, and all sorts of flight computers. We settled on a pixhawk for our flight controller, with a raspberry pi doing vision processing. We didn't need too much graphics processing, so the raspberry pi was able to keep up with our needs, and this is what I did mostly.
I worked on the software side of the sprayer system. I told the guy designing the mechanical system that if he could get me two servos, one for panning and one for tilting, that I could code something to track the insulator. I ended up with a python script running on the raspberry pi, integrated with OpenCV, that was able to identify the center of the insulator disks. Once I was able to identify the pixels, all I had to do was turn the servos so that the center of the disk lined up with the center of the screen.
I started out incredibly simple with my tracking algorithm. I told it the following, if the center of the disk was left, turn the pan servo one degree in that direction and wait for 0.5 seconds. That buffer was enough that the servo would shuffle along towards its goal slow and steady. With this method, you could get consistently very close to the center. The problem was speed. I wanted to make a system that, when the disk was farther off center, the servos would turn faster. So, I looked up different control algorithms to do this. I ended up with a PID loop for my system. I wrote a script that implemented this control loop and all it took was some tuning to my system to make it work just right. If you want to read more about the PID loop, click here.
At the end of the summer we had a working-ish drone that could fly and a spray system that was able to track insulator disks. We did not, however, get them to integrate with each other. We ran out of time and couldn't make it work before the summer internship was over, but it was still a neat experience and I learned a ton.