TECHNICAL rEPORT

PROJECT AIM AND OBJECTIVE

To develop an Autonomous navigation Quadcopter that is capable of navigating the environment without being manually maneuvered by a human operator. There are many potential applications to this research such as drone-cinematography.

Drone-cinematography, a term used to describe camera-controlled shooting via drone. This allows directors to fulfill various difficult shots in a relatively low cost. Yet, in a way that can capture the moments and scenes with précised camera angles, shots and motion from one place to another in a smooth single transition to create an aesthetic frame composition.

Drones are commonly maneuvered manually by a human operator using a radio remote control however, its capabilities and potential can be pushed further by allowing it to instead autonomously navigate itself in a way that can capture the moments and scenes.

PROBLEM STATEMENT

The problems with using traditional aerial shots involves hiring helicopter and an experienced pilot. This method is expensive, usable only for outdoor or for high altitude and is noisy.

In the other hand, maneuvering a non-autonomous drone manually involves human error and requires a controller at all times, which is not ideal for cinematography. This may result in repeated re-shoots, an issue due to their short battery capacity. Hence the solution to both of these problems is an autonomous drone.

CHALLENGES & APPROACH

The hardware involved are; DJI Flame wheel F450 Quadcopter air-frame, Naza-M v2 flight controller, Arduino Uno, Arduino Mega, nRF24L01+ transceiver (RF24) modules and a laptop. The project focuses on technological combination of the utility of the DJI Naza-M v2 FC and the programming adaptability of an Arduino. The challenges faced are what led to the decision of implementing the components.

The telemetry device developed to support the Naza's flight controller is the DJI Bluetooth Datalink. However, it along with the DJI Naza FC and the DJI Ground station is a proprietary close-source platform meaning it is inflexible and restricted from adding or customizing features as the firmware cannot be modified. Due to its high cost and inaccessibility, it will not be used for this project as it will not be programmable to provide the information needed to create an autonomous navigation system.

This is where the Arduino and an alternative form of telemetry comes in; using the Arduino's servo function, it is used as a medium to come in between the FC and the telemetry module to send guidance commands in a signal the Naza can understand without having to tamper its system. The ease of programming for the Arduino interface allow customization that weren’t possible with the FC alone, this will allow autonomy to be possible

The alternative telemetry method was selected between the most frequently used module, that are the RF module and XBEE. For this project the RF module are used, specifically the 2.4 GHz nRF24L01+ transceiver module from Nordic Semiconductor. The nRF24L01+ transceiver module was selected instead of the XBEE mainly because of its low-cost, yet capability of supporting a high speed SPI interface for the application controller and low power consumption. It can be configured simply by downloading and importing the RF24 library developed by TMRh20.

On the other hand, the XBEE is a more powerful wireless device developed by Digi International, using mesh type sensor networks. A protocol for fast point-to-multipoint or peer-to-peer networking. It is designed for high-throughput applications requiring low latency and predictable communication timing. Hence it is more expensive especially due to the fact that the complete kit is required to successfully configure and install it on an Arduino. The kit consists of the XBEE modules itself, an XBEE explorer USB, XBEE shield and an Arduino stackable headers that are to be soldered onto the shield. As for the configuration, the XCTU software application is used to enable the interaction with the XBEE module, thus using the XBEE explorer USB to connect to the PC.

Therefore, overall the nRF24L01+ is the better choice for this project in comparison to the XBEE because it is cheaper, has less component, does not require soldering and simpler configuration.

ARCHITECTURE DESIGN

The connection between the GCS, FC and the components used in the project is one of the many ways to achieve autonomous navigation. Shown in Figure below, the GCS connected to the Uno can update and manipulate the input commands. The communication modules will communicate with each other, and the Arduinos attached will process data to be sent or retrieved. The Arduino Uno will transmit pre-programmed flight commands to the Mega when the Quadcopter is powered on, where it will receive and pass to the FC to be performed. The FC be mounted on the air-frame will stabilize the Quadcopter.

ARDUINO-TO-NRF24L01+ CIRCUITRY

These are the pinout for the RF24 library from TMRH20 on the Arduino Uno and Arduino Mega, the 8th IRQ pin of the transceiver is unused and has no connection toward the Arduino. To avoid connectivity issues between the nRF24L01+, solder a capacitor on each transceiver to manage the power/current surges. The recommended capacitors are between 3.3uF to 10uF, with voltage more than 5V. It goes directly from the GND (-) to VCC (+).

ARDUINO-TO-QUADCOPTER CIRCUITRY

Below is the circuitry between the Arduino Mega and the Naza FC. The Arduino will have the capability to access the FC’s flight mechanics which are the gear, rudder, throttle, elevator and aileron so user can read or send the electronic speed controller (ESC) data for navigation command from the GCS. Data passed through the Arduino will be decoded using the NazaDecoder Library, for user’s understanding. The data extracted and decoded from the DJI GPS includes the latitude, longitude and altitude

RESULT

As a result, the FC will manage all stabilizers and balancing functions while the Arduinos manage the communication data coming in from the communication modules between the Quadcopter and GCS.

Autonomous capability will be enabled by executing pre-programmed maneuvers, whose commands are relayed in a form of values that are meant to represent the x and y axis position of 2 sets of Arduino joystick. The Arduino sketch will be uploaded to the Tx (Arduino Mega) prior to the flight which will transmit to Rx (Arduino Uno) on the Quadcopter. The x and y valued from 0 to 1023 for each analog stick that will manipulate the flight control; throttle rudder, aileron and elevator.

There are 2 representation sets of joystick, the first one focuses on the throttle and rudder while the second one will focus on the aileron and elevator. The values correlates by the formula below will manipulate the throttle or elevator depending on which joystick it presents.

x = 512 and y = 0 to 1023

The next formula shown below will manipulates the rudder or aileron of the Quadcopter. Different combination of numbers can be created to do different actions, and by giving each action some duration while combining it with multiple different actions, it will result in a maneuver.

x = 0 to 1023 and y=512

Through improving the maneuver, user can program a navigation route for the Quadcopter by manipulating the command value and duration. Hence,t the Quadcopter will be able to navigate autonomously without a remote control or human operator, thus achieving the objective of the project Autonomous Navigation of flying robots.

CONCLUSION

Due to safety issues which involve the lacking of the fail-safe system or emergency landing, the absent of a backup remote control, battery problem and security issues, the Quadcopter did not have a flight test. However despite not being able to actually test out the system, in theory it should achieve autonomous navigation because of the successful data structure communication between the components when the FC and Arduinos are connected and powered on.

As future enhancement or for researchers interested in studying autonomous navigation for flying robot, it is advisable to use a FC specialized for autonomous flying. The 3DR Pixhawk is the ideal FC for this type of project as it is designed specifically for autonomous flying, its software and firmware are open-source, allows customization and modifications to achieve the desired outcome, and is compatible with various GCS software application online.

If the 3DR Pixhawk was used instead of the Naza-M v2, the Arduino would not be relevant and this project would have a high potential to succeed.