Drone platform soars with the Zynq SoC
26 May 2016
The unmanned aerial vehicle (UAV) and drone industry is quickly growing and reaching new commercial and consumer markets.
(Click here to view article in digi-issue)
The horizon of what is possible with UAVs continues to push forward into creative new applications like 3D modelling, military aid and delivery services.
The problem is that the applications are becoming increasingly more complex, requiring more and more processing power and I/O (input/output) interfaces, while the UAV platforms available are not improving at the same pace. The limits on the capabilities of most UAV platforms are being reached as the software and hardware needed for flight continue to advance.
The main push of the UAV industry has been to make flying as affordable as possible, simplifying and stripping all unnecessary capabilities. This is a good thing if you are just looking to buy a product that does only what you want in the simplest way. But for developers, who seek to explore new, complex applications, it is necessary to branch out and build a new UAV platform capable of providing the processing speeds to power these demanding applications.
Another big limitation of today’s standard UAV platforms is the lack of input-and-output connections to the processor. Thus, the flight control system easily reaches the maximum capacity of the processor and the I/O capabilities, not leaving much room for new sensors, and new applications.
Most of the I/Os included in the standard processor boards are already used up by the various components needed for flight. These functions include the inertial measurement sensors for quantifying aircraft orientation, the barometer and altimeter for determining the altitude and an RC receiver for decoding the user’s input. Any I/O that’s left over for adding extra features does not offer much in the way of options, generally confined to the most popular demands such as a camera or GPS for navigation. A single platform that is compatible with a very wide range of sensors and external interfaces currently does not exist on the market.
Matching demanding specifications
A team at Aerotenna faced the problems detailed above when investigating the release of microwave sensing products that are computationally heavy. It decided to build its own completely new board, which was based on the Xilinx Zynq-7000 All Programmable SoC. Most of the flight control platforms currently in the market are based on a microcontroller unit (MCU). But MCU architecture limits the potential for sensor fusion due to the limited processing power and I/O extension capabilities.
The Zynq SoC gave a clear advantage in both processing power and I/O capability: the combination of dual ARM cores plus FPGA logic enables a hardware/software co-design approach that places some of the timing-critical processing tasks in the programmable logic. The I/O peripherals and memory interfaces are more versatile than the ones provided by MCU-based platforms.
Another reason the team chose the Zynq SoC is because it is able to easily handle the complexities of flight control programs, which can be enormous and require very fast CPUs. And the device has plenty of power left over, which leaves a lot of room for expansion in the flight control programs.
There are many types of flight software programs, and they all differ in behaviour and complexity. The flight control software Aerotenna decided to use is called ArduPilot, provided by APM (autopilot machine) on Dronecode. It is more complex than most, but provides a lot of functionality not included in simpler programs, such as waypoint navigation and multiple flight modes to cater to the user’s specific application.
What is ArduPilot?
ArduPilot is an APM an open-source autopilot software built for UAVs. It is kept up to date and improved upon by a large community of developers and enthusiasts. The APM project, which started out as much simpler software built for the open-source Arduino microprocessor, has grown much larger and more complex and is now compatible with many UAV platforms. Currently, the program contains more than 700,000 lines of code, and is a beautifully intricate flight control system.
The code is divided into two main parts: the high-level layer and the hardware abstraction layer (HAL). The high-level layer is responsible for scheduling tasks and making decisions based on incoming data. The HAL is the low-level code that accesses the hardware’s memory. This separation of code structure allows the whole system to be ported to other platforms by changing only the HAL for the platform-specific memory access. And the upper-level code simply retrieves the data from the HAL the same way across all platforms.
The ArduPilot flight control system continues to grow in complexity as the open-source community adds more and more to the APM project. As a result, the industry is reaching the hardware’s limit, waiting for the next platform on which to continue growing.
The initial efforts of porting ArduPilot to the Zynq SoC (led by John Williams in the drones-discuss Google group) in 2014 paved the way for porting the APM to the same Xilinx platform. Dr. Williams noticed the Zynq SoC’s potential for offering custom I/O and real-time image processing as the beginning of an amazing new world for UAVs. In an interesting twist, Williams was the founder of PetaLogix, which created the original PetaLinux tools. Xilinx acquired the company in 2012.
The Aerotenna team continued these design efforts in both hardware and firmware, and accomplished the first Zynq SoC-powered ArduPilot flight in October of 2015. The custom board runs the ArduPilot flight control software on the PetaLinux operating system. This feat marks a drastic improvement in UAV technology and capability.
The dual ARM core within the Zynq SoC puts our flight control solution ahead of any other UAV solution of its class in processing power and I/O capabilities. This leap forward will open the door to new UAV applications that require greater computing power. The team wanted to make sure to provide something with plenty of hardware interfaces built for the enthusiast as well as for the developer. Atop a Linux operating system, the UAV platform has much more flexibility to accommodate a wide range of applications because of its programmability and versatility. Linux, being one of the most powerful user-programmable operating systems, allows the team to customise the system exactly to its needs.
The Aerotenna team accomplished the flight test on the commercial off-the-shelf DJI F550 airframe and plan to test the Zynq SoC-based flight controller on more airframes. It will soon release this platform as part of the Octagonal Pilot-on-Chip (OcPoC) platform.
To start completely from scratch to make a customised flight control platform is an ambitious endeavour that takes a lot of learning, to accomplish. Starting from nothing, there are a lot of decisions that need to be made about the system. In order to run a flight control program, an operating system must be used. An RTOS processes data right as it comes in, resulting in a negligible buffering delay. As a result, the RTOS is great for running time-sensitive tasks like flight control. The disadvantage is that it is difficult to interface this kind of system with ArduPilot because some of the data processing tasks would need to be re-implemented in the operating system itself.
That’s why Aerotenna opted instead for a Linux operating system, which is not real-time, but is much easier to implement in a hardware/software co-design, maximising the versatility of the system. Xilinx provides a powerful embedded Linux operating system called PetaLinux that is compatible with the Zynq SoC and other Xilinx devices.
The road map to getting this system up and running seemed complicated, and the team had to overcome many difficult challenges. The process began by developing the system design with FPGA development software, and writing and creating new IP for driver interfaces. The cores are embedded processes at the hardware level that process data at very fast speeds. Then, a PetaLinux operating system was deployed using the custom system design. Finally, the team compiled and modified the ArduPilot system to be able to run on PetaLinux and the new platform.
Aerotenna tackled the problem in stages to achieve a proof of concept. The team began working to first receive and detect an RC signal, and then to power a single motor. After finally demonstrating the proof of concept, it proceeded to expand the interface between the OcPoC and sensors that ArduPilot relies on to function. Writing device drivers from scratch was a major challenge. The most critical sensors for achieving a successful flight include accelerometers, gyroscopes and a barometer. Since multirotor vehicles are naturally unstable, measuring the frame’s inertia and altitude is critical for stability. All these had to be configured in the FPGA hardware design with the correct communication protocol, and eventually included into the PetaLinux operating system.
One big task was to get the system operational on the ArduPilot platform. With no easy interface to calibrate the inertial sensors, motors and RC controller (normally done inside a GUI for other platforms), the team had to manually calibrate the whole system by tweaking the hundreds of stored parameter values. Calibration is necessary, since each hardware component is slightly different and will produce slightly different outputs. So each component has to have maximum and minimum values defined.
The OcPoC project (Figure 2) is Aerotenna’s UAV flight control platform. With it the group plans to meet the needs of the drone community with greatly enhanced processing capability, I/O expansion and much more flexibility in programming than other solutions. Though using the Zynq SoC to power the system may seem to be overkill for running the current ArduPilot release, the industry will continuing to expand.
This architecture paves the way for the developers to create and design with all the processing power they need. With the new platform, Aerotenna plans to introduce new applications for microwave technology in imaging, mapping and proximity detection compatible with OcPoC. The system will also be able to perform onboard data capture and analysis through the Zynq’s processing capabilities.
The platform will provide integrated IMU data acquisition, which will create a ready-to-fly “box” without any additional sensor setup (Figure 3). It will also provide integrated navigation interfaces for wireless navigation control. What takes the platform a step ahead is the ability for external sensor data to be directed through the Zynq SoC to perform high-speed data processing simultaneous to the ArduPilot program.
Making the platform easy to test and develop new ideas on, many other companies and individuals can contribute novel creations to the drone industry, unhindered by the processing limitations of today’s available hardware.
Contact Details and Archive...