Navigation control of Drone using Hand Gesture based on Complementary Filter Algorithm

One of the most important things to use UAV is navigation control. Navigation control is a way to adjust the direction of the quadcopter movements according to the command of the pilot. Natural User Interface (NUI) is a new way to interact with a system as navigation control. In this study, a wearable device was made that can detect hand gestures and gives instructions to the Dji Tello drone. The MPU6050 sensor is used to provide response in two dimensional axes. The complementary filter implements low pass filter on the accelerometer and integrates the value of the gyroscope with the previous angle output. After that, the value will be fed to the high pass filter. The results of the two filters will obtain stable angle, by adjusting the filter coefficient and the sampling time. The aim of complementary filter method is to reduce noise in angular transformation when the pilot makes hand gestures. Based on the experiments, the results show that hand gestures could give command for Dji Tello drone movements successfully. Therefore, it has been proven that the hand gesture can be used for the navigation control system on the Dji Tello drone.


Introduction
Unmanned Aerial Vehicle (UAV) is an unmanned robot that can move in the air. UAV does not require a pilot to control; thus, it must be controlled remotely using a remote control from outside the vehicle that is called Remotely Piloted Vehicle (RPV). Also, UAV can move automatically based on programs that have been embedded in the computer system. In the military field, UAV has a role as an airborne Intelligent Surveillance Reconnaissance (ISR), making it easier for the Air Force to carry out the main task of air observation in Indonesia's border areas.
Quadcopter is one of Unmanned Aerial Vehicle (UAV) that is widely used in various fields of activity [12]. Drone Quadcopter uses four rotors as its driving force [3]. Navigation control is a way to adjust the direction of the movement of quadcopter. Generally, remote control is used to navigate the UAV. On the other hand, quadcopter control can use the Natural User Interface (NUI) method. NUI is a user interface method that uses the natural ability of humans to interact with the system [4]. This natural ability is then used as input to the system. By implementing NUI, it can reduce the learning process for novice users in interacting with the system.
Gesture is one type of interaction that can be applied as NUI input. The gesture is a form of nonverbal communication that uses body actions to communicate certain messages. Gesture recognition can be done using devices such as Kinect and leap motion [5][6][7][8][9]. The use of these sensors has a weakness where the hardware costs have a quite expensive price. The other devices, that can be used  shows that the complementary filter algorithm is applied to Raspberry Pi 3. The design of the hand gesture basically utilizes the angular and acceleration transformation of the MPU6050 sensor when the hand is moved to specific area. The complementary filter value is implemented on the motion of the drone on both the pitch and roll axes. The complementary filter algorithm applied can be illustrated in the following flowchart as in figure 2.
In figure 2, it can be seen that the processing uses the complementary filter method continuously. which is adapted into the program code to run a program that runs on the MPU6050 sensor connected to the raspberry pi. The initial step of the programming is to determine the variables α (constants) and δ, which are differentials in the time domain. After obtained the angle data from the gyroscope and accelerometer, complementary filter is employed based on Equation (1). (1) where variable angleC is the result of a complementary value, α = τ / (τ + δt) where τ is the desired time constant (reading speed in response), ang_gyro is output of gyroscope, δt is the delta time with the value δt = 1 / fs where fs is the sampling time constant frequency, ang_accl is the accelerometer output, and t is the length of time the signal output updates from the complementary filter.
Complementary filter is a combination of two types of filters, i.e. high pass filter and low pass filter. Low pass filter works to filter the output of the accelerometer and high pass filter is used to filter the gyroscope output. The raw data from gyroscope have a continuous shifting thus high pass filter is  The combination of the two filters can overcome both problems in the accelerometer output and the gyroscope. Low pass filter implements in the accelerometer, which has function to pass through data alteration in the long term and filter fluctuations data in the short term. High pass filter is a type of filter that the characteristic is opposite to the low pass filter.
The MPU6050 attaches in the wearable device in order to obtain convenient movement for the user. The following figure 3 below shows the wearable device that was made.   Figure 2 shows that the device is consist of glove, Raspberry with LCD panel and sensor MPU6050. The sensor is attached on the glove. By using wiring connection, communication is built from the sensor to the Rapsberry Pi.
In Table 1, it can be seen that the definition of hand gestures and their relationship to the system output, namely the movement of the drone. The part of the hand that is detected is the part of the hand to the wrist as in figure 1. The selection of the hand in the study aims to facilitate the use of the system, because only the gestures on the right hand are applied. The gestures are divided into seven types of movement. The gestures movement are representation of the movement from the remote control or mobile device. Thus, the gesture can replace the role of remote control and easier for the user to control the drone.

3.
value for this forward gesture is 30 o to 60 o at pitch angle. The angular values for forward motion of the Dji Tello drone can be seen in figure 4. Figure 4 shows that if the sensor is directed upward at angle range between 30º and 60º then the pitch value on the MPU6050 sensor is positive. Therefore, command for moving forward will send to Drone. In order to distinguish between forward movement and take off movement, certain angle range will be determined.

MPU6050 Sensor Angle Testing.
The test is carried out by describing the angle value of the MPU6050 to the angle of motion given. The value of X axis is roll motion, which positive value determines movement to the right and negative is value to the left movement. Y axis value is pitch motion, which positive values are down motion and negative values are up motion. The time is given for 10 seconds with a time interval of 0.5 seconds. This test consists of angular values measured based on predetermined variables that will result in motion in the Dji Tello drone in the form of forward, backward, turning right, turning left, take off, landing, and hovering motion.

Forward Gesture.
The forward gesture is used to control the drone to move forward, which is done by tilting hands upward. This gesture is defined by storing a reference value that is used as a comparison with the angle transformation value detected by the MPU6050 sensor based on the pitch angle. The reference          Figure 6 illustrates that if the sensor measurement more than 30º then the roll value on the MPU6050 sensor is positive.

Left Gesture.
Left hand manoeuvre is used to control the drone to move left. The gesture is tilting the hand to the left side. The reference value for this left sliding gesture is -30 o to -90 o at the roll angle. Figure 7 shows that if the sensor is directed to the left at angle of more than -30º then the roll value on the MPU6050 sensor is negative.

Hovering Gesture.
The hovering gesture is used to control while the Dji Tello is hovering, which means a condition for maintaining its altitude position. During hovering movement, the drone does not make roll and pitch movements. The gesture is done by straightening the hands parallel to the forearm. The reference value is based on the roll angle, pitch and acceleration on the z axis when the hand is moved. The  figure  8, it shows that if the sensor measurement angle is less than 30º then the drone will be stationary. this take-off and rise gesture is 60 o to 90 o at the pitch angle. Figure 9 explains that if the sensor is directed upwards at an angle range of 60º to 90º then the pitch value on the MPU6050 sensor is positive, which impacts the drone to take off.     Figure 10. Landing Movement. Figure 10 shows that if the sensor is directed down at the angle range of -60º to -90º, then the pitch value on the MPU6050 sensor is negative, which effects the drone to landing. In Table 2, it can be seen that all the tests have been successfully and can be used to control the Dji Tello.

Conclusions
After the testing and analysis phase, the following conclusions can be described as follows. The MPU6050 sensor, which has embedded gyroscope and accelerometer sensors, can be used to detect the angle of the hand. The results of the sensor data will be processed by Raspberry pi, which is located on the back of the hand. Therefore, the resulting angle converts to the control of the Dji Tello drone. Generally, the hand gesture program works well according to the MPU6050 sensor angle command because the complementary filter method was successfully implemented. The output value data is processed by Raspberry pi 3 B by having several variable parameters of the complementary filter method algorithm including alpha value, sampling time and angular tilt data. Sampling time is 0.96 in