Unfortunately, currently I don't have time to clean up the code to make it easily compile on any system, because it requires both ARM and x86 toolchains to make a full build. Also there are a quite number of commercial interests so I need to prepare a proper license to avoid any copyright issue in the future.
Our quadcopter prototype has gone through a few iterations of modifications due to various requirements added as the project went on. For example, previously the landing gear was short, but in order to lower the WiFi antennas for better signal quality we made a longer landing gear to increase the clearence.
Our current version is a bit heavy (2.1 kg with battery) and the hovering time is within 7 min. Due to time and budget constraints we did not further refine the design for longer flight time. We plan to build a new version with a larger body and bigger propellers for higher efficiency.
Below is the picture of our prototype quadcopter and the list of parts. We constructed two quadcopters of the same design.
(Nov 2015 Updated) DJI has released a developer edition of their UAV products. The developer kit consists of the UAV flying platform, the on-board computer (exactly the same as ours) and miscellaneous peripherals. If you are interested in building a similar platform like SkyStitch, it might be a better option.
|Flight controller||Ardupilot Mega 2.6|
|GPS receiver||uBlox LEA-6H|
|Electronic speed controller||HobbyWing 30A OPTO|
|On-board computer||NVIDIA Jetson TK1|
|Camera||PointGrey BlackFly 14S2C|
|WiFi adaptor||Compex WLE350NX|
The camera on each quadcopter is a PointGrey BlackFly 14S2C Ethernet camera with a resolution of 1280x1024. The lens mounted onto the camera is a low-distortion lens with a 62.3° diagonal field of view. Camara frames are streamed to the on-board computer in YUV411 format.
The camera supports a max frame rate of 60 fps. However, since it is equipped with a rolling shutter, it can only run at half of the max frame rate in external-trigger mode (refer to PointGrey's documentation). In practice, it only runs reliably at a max frame rate of 22 fps in external-trigger mode. Therefore in our experiments, we fixed the frame rate to be 20 fps.
A camera with a global shutter could support higher frame rate in external-trigger mode. Due to their high prices we did not choose them for our project.
To synchronize videos from multiple quadcopters, we connected the time pulse pin of the GPS receiver on each quadcopter to the external shutter trigger of the camera.
The time pulse pin only sends UTC-aligned pulses and does not provide any time reference. The camera only maintains a trigger counter which increases every time a new pulse is received. In order to know the precise time of each pulse, a handshake procedure has to be performed among the GPS receiver, the flight controller and the on-board computer.
We chose NVIDIA Jetson TK1 as our on-board computer because it has: