Using a pre-built Quadrocopter drone with sufficient hardware and software capabilities, build a Web API that consists of functions that allows the user to create an instance of series of commands that can be sent to the drone. Upon that communication, the drone will carry out those commands in a successive manner. The API will provide a live feed from the on-board video camera of the drone as the commands are carried out.
Ever since I was younger, I have been fascinated with robots and the field of robotics. I used to create basic robot designs using the Lego Mindstorms software and hardware. I chose this type of project because even though I have basic experience with robotics, I have never done something quite as in depth and advanced as this.
Hardware and Software
- Node.js Software Platform
- Essential Node Modules Used:
- Essential Node Modules Used:
- npm Package Manager for Node.js
- gedit Text Editor
- Application was tested with Google Chrome and Mozilla FireFox Web Browsers
- Developed on Ubuntu 12.04 LTS Operating System
Research and Development
My original idea for this project was to build a Quadrocopter drone from scratch and develop autonomous software to be implemented onto the hardware configuration that I had designed. I researched and compiled information about: the numerous parts I would need, the building process of the frame, the wiring of the hardware, and the software development. After consideration of everything I had to do, I had doubts on whether or not I could handle a project of this difficulty. After talking with a few professors, I decided that the best course would be to use a pre-built Quadrocopter drone and implement the autonomous software onto the drone. After talking to Josh Moore, Him and I decided that the Parrot AR.Drone 2.0 would be the best bet for a pre-built drone. It has numerous capabilties that would make development much easier.
AR. Drone Node Modules
I found that there has been some development by casual AR.Drone developers using the Node.js software platform. They packaged and deployed their developments into node modules using the npm package manager. Some of these modules proved more help than others. Their capabilities range from extracting raw data from the drone, to controlling the drone through a browser-based application. I drew the inspiration for my browser-based application from the latter. There are a few modules that I wanted to implement in my application included those that utilize image processing to track movement. But due to lack of documentation, I could not interpret the module for proper usage. A few modules that I used can be found in the Software section of the page.
Issues and Challenges
Autonomous Functionality through Image Processing
The autonomous capabilities that I wanted to implement onto the drone using image processing for proved a difficult task. I ended up having to somewhat scrap the idea for a few reasons. The best implementation that I found for that type of functionality was found using the AR.Drone SDK optimized for C++, and OpenCV image processing software. I poured through source code files of both the SDK and OpenCV, trying to make sense of the their functionality and proper implementation. I tried to develop basic programs to see if I was going in the right direction. I searched online for applications similar to the one I envisioned that used both libraries in order to get a better grasp of the direction I needed to head. After examining those applications, the only understanding that I had was based on solely on the implementation of those particular applications, not of the libraries themselves. And in order to not plagiarize their code, I decided to scrap the idea of the image processing functionality using the SDK and OpenCV libraries.
Possible Future Developments
One of the things that I wanted to include in the software was autonomous functionality using the video camera and image processing software. My vision at the beginning of project development was to have a detection-based algorithm that when the drone detects a face of a human, it locks-on to their body signature, and follows them wherever they go.