Developing autonomous UAV
Before development, I was instructed to research methods and techniques that are available to navigate indoors with a drone without using GPS. It turned out that computer vision can be the most accurate if it is implemented properly. Another possibility is to use RF poles.
Next, I advised Corvus Drones what hardware they should buy and how they can mount it on their drone. I designed and 3D printed a case which could house the embedded Linux microcontroller (Nvidia Tx1) and the 6 cameras in a hexagon.
Based on the research done, I gave advice how the system could be developed and helped with writing the localization algorithm to navigate in a closed environment by detecting at least 3 markers around the drone and mapping things like the distance to the marker, the pitch and yaw of the drone. The drone had 6 8MP cameras mounted in a hexagon, which were both used for the localization and obstacle avoidance. I had to write the algorithm in CUDA, so that the CPU had enough resources to run the 6 8MP cameras and OpenCV with ArUco. Multiple processes had to communicate through a ‘dynamic’ scheduler I had written in C.
They already had a basis of a simulation engine, but I ended up helping to port it to the Gazebo tool of ROS.
After the localization algorithm was written, I was tasked with writing an algorithm which could analyze plants it flew over in real time.