My idea for GSOC

What I am doing

I am Kang-Hua. I am currently a master student studying at San Jose State University majoring software engineer. Because of a recent project, I found ArduPilot community and GSoC. The project is actually a competition host by the City of San Jose[link]. They have trouble removing graffiti at certain places such as highway overpasses. Our approach is building an autonomous drone system to achieve the goal. Luckily, our idea passed the first phase and entering the second phase of the competition.
Here are some modules for our system so you can have a better idea of whatwe are doing:

  • Communication & companion computer
  • Image detection using machine learning
  • Controller for spray (removal) and tilting cameras
  • Mission setup through Ground station or App
  • Vertical/Horizontal navigation system (spiral around pillars under highway overpasses)

My responsibility is to create an interface linking other components together. On the drone, it is the companion computer; on the ground, I will provide APIs for ground station and machine learning server. Something like this:

As you can see, I need to deal with communication problems. I started using DroneKit and learned basics about MavLink protocol and portion of ArduPilot functions. I believe I will be handy with them very soon.

My Idea for GSOC

I would like to push further on the communication part so my proposal for GSoC is building distributed systems for drones. (I just got into this field. Bear with me, if this has been developed.) Like other distributed systems, there will be a master drone giving orders to rest slave drones. Here are some scenarios: controlling multiple drones flying from one place to another together; carrying one heavy product; spraying pesticide. In this case, building multiple drone application easier and users only have to control the master drone. It also has to have other features like basic collision avoidance while collaboration.

If you have any suggestion, feel free to reach me through Thank for your time.

Hi Kang-Hua, welcome!

This is a great idea and great application. Have you looked into some of the swarm support in Ardupilot?

Hi Kang-Hua, Couple of ways this could be done, you could develop over Dronekit, MAVROS, or APM port of Linux. In my opinion all three are good options to traverse through. In any case before you get started on real life development you would be required to work in a simulator. As such there is no direct support in SITL to do that, so it would be a great addition to have such feature. Initially, idea would be to launch multiple instances of SITLs talking mavlink on different tcp ports and you could receive those links over any of the three ways mentioned above. If you are not familiar with SITL I’ll first start with learning that You can start with a nice first goal i.e. have multiple SITLs running on your machine (Note: they might not even have to be same machine, you could run on multiple machines as opening multiple sitl instances might slow some systems down, just have them on the same network and correct IP:PORT).

Hi Oliver,
Thanks for your suggestion. I will start digging from there.

Hi Siddharth,
Thanks for the suggestions. I did think about using Dronekit and MavRos but have not thought thoroughly about verification. Are you also working on similar topics? Whether or not I can make it to GSoC, I am happy to get involve with it.