Patent Publication Number: US-2020293045-A1

Title: Method and device of autonomous navigation

Description:
FIELD OF THE INVENTION 
     The present invention is related to Unmanned Aircraft Vehicles (UAV) and Remotely Piloted Aircraft Systems (RPAS) commonly known as drones or unmanned aircraft, using high-performance computing, computer vision, sensor fusion and autonomous navigation software. 
     More particularly, the present invention refers to a method and device (drone) of autonomous navigation, especially for extreme environments, having application for the inspection of components (e.g., components of a windmill or wind turbine), collection of objects, for cleaning tasks, etc. 
     BACKGROUND OF THE INVENTION 
     Nowadays, drones can be applied in many fields. For example, human technicians who inspect wind turbines and their components like blades can be replaced by 
     Unmanned Aircraft Vehicles (UAV) or Remotely Piloted Aircraft Systems (RPAS) to avoid these highly specialized technicians a tedious and quite expensive work as well as to prevent accidents while the technician is climbing for the inspection tasks. 
     An example of drones for this specific purpose is disclosed in EP2527649A1 referring to an UAV to inspect components of a wind turbine. The UAV is guided to the component, which needs to be inspected, having a certain predefined distance between the UAV and the component chosen in a way that high resolution images of the component can be gathered by the UAV. Thus, the inspection is done remotely controlled to detect automatically damages at the component based on the images gathered by the UAV or resulting image-data (e.g., detect heat patterns of cracks in blades of the wind turbine). GPS-data are used for the remote control of this UAV. 
     However, an efficient detection of damages in the components of a windmill requires obtaining high-resolution images from a close distance and so requires the navigation method to make the UAV fly relative to the structure, and not using absolute positioning measurements such as GNSS (GPS, GLONASS, Galileo, Beidou), visual references, motion capture systems, or other methods. 
     On the other hand, the technology of LiDAR (Light Detection and Ranging) is well-known. LiDAR is a surveying method that measures distance to a target by illuminating that target with a pulsed laser light, and measuring the reflected pulses with a sensor. LiDAR scanning sensors are widely used in industries such as topographic surveying, 3D reconstruction, and Robotics. LiDAR measurements can be combined with inertial and timing measurements for accurate 3D reconstruction of surfaces and objects. This is now widely being used in autonomous cars, surveying, and object reconstruction. 
     Therefore, it is highly desirable to provide a navigation method for an unmanned aircraft vehicle which allows trajectory adjustments to detect and track individual objects or components of a structure while navigating at a relative distance from the object/structure. 
     SUMMARY OF THE INVENTION 
     The present invention solves the aforementioned problems and overcomes previously explained state-of-art work limitations by providing a method of autonomous navigation for a drone (UAV, RPAS) which uses a combination of measurements obtained by a LiDAR laserscanner, which can either be two-dimensional (2D) or three-dimensional (3D), image processing and inertial sensor fusion. 
     A LiDAR based autonomous navigation device (drone) is disclosed to accurately fly around a target, which is an individual object or a structure composed of multiple objects to be tracked (e.g., a wind energy generator), the drone being configured to:
         Fly at a predetermined distance from the target (e.g., the windmill structure). This distance can be variable or fixed, but always a predetermined distance which is relative from the drone to the target.   Keep the target (e.g., the windmill structure) centered in the image recorded by the camera of the drone. The LiDAR and the camera are calibrated such that for each image frame, the drone knows what pixels correspond to LiDAR measurements. This allows to keep one or more objects of the target structure (e.g., the wind turbine blades) always centered with respect to the drone.   Re-align the drone in case of wind disturbances, inaccurate trajectory tracking, or corrections. If the LiDAR measurements indicate that the structure is no longer centered with respect to the camera, the drone can re-align itself instantaneously.   Maintain the structure centered and at a fixed distance regardless of orientation of the objects (e.g., the blades of the windmill).       

     A first aspect of the present invention refers to a method of autonomous navigation for tracking objects, which comprises the following steps: calibrating a computer vision sensor and a LiDAR sensor provided in a drone,
         detecting by both calibrated computer vision and LiDAR sensors at least an object to be tracked by the drone,   measuring by the LiDAR sensor a set of features of the detected object,   estimating a relative position of the drone and the detected object;   commanding the drone to reach a target waypoint which belongs to a set of waypoints determining a trajectory, the set of waypoints being defined based on the measured features of the detected object and the estimated relative position;   once the target waypoint is reached by the drone, adjusting the trajectory by redefining a next target waypoint from the set of waypoints to keep the detected object centered on the computer vision sensor.       

     In a second aspect of the present invention, a device (drone) implementing the method of autonomous navigation described before is disclosed. The device comprises a (2D or 3D) LiDAR scanner, computer vision sensor and processing means of an on-board computer (OBC) configured to perform the method described before. 
     In a last aspect of the present invention, a computer program is disclosed, comprising computer program code means adapted to perform the steps of the described method, when said program is run on processing means of a device for autonomous navigation (UAV, RPAS, commonly referred to as drone). 
     The wind sector is a main scenario of application and a business opportunity with the greatest potential, but the present invention also has other applications, mainly focused on irregular or lattice structures (not a cube): Towers of CSP (Concentrated Solar Power), observation towers, drop towers of amusement parks, lighthouses, radio-television towers, transmission towers, hanging bridges, . . . 
     The drone and method of autonomous navigation in accordance with the above described aspects of the invention has a number of advantages with respect to prior art, which can be summarized as follows:
         The present invention provides more accurate measurements related to the object to be tracked by the drone as its flight can be adjusted at all times to obtain high-resolution images. In a particular application, the invention constitutes an autonomous platform to inspect the blades of wind energy generators, regardless of their size, geographical location, and orientation. This is achieved due to the computer vision and LiDAR based relative navigation technologies and implementation applied to navigating around wind turbines, and keeping the platform centered with respect to the windmill structure at all times.   The present invention also provides a method that is consistent and repeatable regardless of wind conditions and geometry of the windmill. LiDAR measurements ensure a correct tracking and centering of the blades in the image that GNSS positioning and human piloting cannot provide. The results are repeatable and consistent with every flight, making it a reliable procedure and tractable throughout time.   The present invention eliminates the need for human interaction, making the platform fully autonomous that performs an automatic procedure, regardless of the geometry of the windmill structure.   The present invention reduces considerably inspection times as it allows the UAV to follow an optimal path more accurately. Not prone to GNSS inaccuracies, or human input.       

     These and other advantages will be apparent in the light of the detailed description of the invention. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       For the purpose of aiding the understanding of the characteristics of the invention, according to a preferred practical embodiment thereof and in order to complement this description, the following Figures are attached as an integral part thereof, having an illustrative and non-limiting character: 
         FIG. 1  shows an application scenario of an autonomous navigation device for tracking a wind energy generator, according to a preferred embodiment of the invention. 
         FIG. 2  shows a simplified state machine of a LiDAR sensor in the autonomous navigation device for detecting the wind energy turbine. 
         FIG. 3  shows the waypoints of the trajectory and altitude thresholds for take-off and landing of the autonomous navigation device. 
         FIG. 4  shows an ascent manoeuvre of the autonomous navigation device to clear windmill. 
         FIG. 5  shows a flow diagram of control of the autonomous navigation device. 
         FIG. 6  shows a corner turn trajectory of the autonomous navigation device. 
         FIG. 7  shows an orbital turn trajectory of the autonomous navigation device. 
         FIG. 8A  shows a reactive trajectory adjustment of the autonomous navigation device when the blade is too close. 
         FIG. 8B  shows a reactive trajectory adjustment of the autonomous navigation device when the blade is too far. 
         FIG. 8C  shows a reactive trajectory adjustment of the autonomous navigation device when the blade is not centered. 
     
    
    
     PREFERRED EMBODIMENT OF THE INVENTION 
     The matters defined in this detailed description are provided to assist in a comprehensive understanding of the invention. Accordingly, those of ordinary skill in the art will recognize that variation changes and modifications of the embodiments described herein can be made without departing from the scope and spirit of the invention. Also, description of well-known functions and elements are omitted for clarity and conciseness. 
     Of course, the embodiments of the invention can be implemented in a variety of architectural systems of autonomous navigation devices or drones. Any particular architectural layout or implementation presented herein is provided for purposes of illustration and comprehension only and is not intended to limit aspects of the invention. 
     A preferred embodiment of the invention refers to a navigation method of a drone ( 1 ) to detect and track individual parts of a windmill ( 10 ) which comprises, as shown in  FIG. 1 , the following objects to be tracked: blades ( 11 ,  11 ′), pole ( 12 ) and nacelle ( 13 ). This method is used primarily to detect the orientation of the windmill ( 10 ) and adjust the position of the drone ( 1 ) to be in front of the nacelle ( 13 ) to start the inspection. The proposed method is also used to detect the end of the blades ( 11 ,  11 ′) and to aid in making circular turns by keeping a constant distance to the tip of the blades ( 11 ,  11 ′). The basic operation of this drone ( 1 ) is the following:
         The operator positions the windmill blades ( 11 ,  11 ′) such that one of them ( 11 ) is pointed towards the sky as vertical as possible, making an inverted Y shape.   The drone ( 1 ) is positioned in front of the nacelle ( 12 ) to start the inspection.   The vertical blade ( 11 ) is inspected vertically with 90 degree turns and the other two blades ( 11 ′) are inspected, first the leading edge, then trailing edge, then the two shells.   The drone ( 1 ) lands in the take-off position or ground ( 20 ).       

     The vertical blade ( 11 ) is inspected by the drone ( 1 ) in the following manner:
         Take-off and reach a predetermined altitude, preferably 10 meters, and measure distance to windmill pole ( 12 ) and the width of the structure.   Start ascension in front of the pole ( 12 ), while tracking the structure through LiDAR measurements of distance and determining the width continuously.   Detect one and then two of the blades ( 11 ′) while ascending and tracking the pole ( 12 ).   Keep ascending and tracking the pole ( 12 ) and the blades ( 11 ′) until they join in a circular structure, that is, the nacelle ( 13 ) to determine the position and orientation of the drone ( 1 ) with respect to the nacelle ( 13 ).   Adjust the position of the drone ( 1 ) such that it is centered with respect to the nacelle ( 13 ) and at a fixed distance.   Ascend a predetermined altitude and approach the beginning of the third blade ( 11 ) at a fixed distance.   Ascend the third blade ( 11 ), the most vertical one, which can be quite slanted, while keeping this vertical blade ( 11 ) centered with respect to the camera of the drone ( 1 ).   Turn 90 degrees counterclockwise at the tip of the vertical blade ( 11 ) to inspect another side.   Descend while tracking the vertical blade ( 11 ), adjust position to keep the camera centered on the vertical blade ( 11 ).   Turn 90 degrees counterclockwise in a quarter of a circle at the tip of the vertical blade ( 11 ) to inspect another side.   Ascend while tracking the vertical blade ( 11 ) and adjust position to keep the camera centered on the vertical blade ( 11 ).   Turn 90 degrees counterclockwise in a quarter of a circle at the tip of the vertical blade ( 11 ) to inspect another side.   Descend while tracking the vertical blade ( 11 ) and adjust position to keep the camera centered on the vertical blade ( 11 ).   Turn 90 degrees counterclockwise in a quarter of a circle at the tip of the vertical blade ( 11 ) to inspect another side.   Return to land on the ground ( 20 ) while keeping the windmill ( 10 ) structure at a safe distance.       

     The other two blades ( 11 ′) are inspected by the drone ( 1 ) in the following form:
         Track leading edge through a line that is approximately 30 degrees below the horizontal line.   Turn 180 degrees to inspect the trailing edge.   Track trailing edge through a line that is approximately 30 degrees below the horizontal line.   Turn 90 degrees to inspect the top shell of the blade ( 11 ′).   Descend at a 30 degree angle while tracking the blade ( 11 ′).   Descend to the bottom shell of the blade ( 11 ′).   Ascend at a 30 degree angle.   Continue onto the next place and repeat the above procedure.       

     For object tracking, the drone ( 1 ) comprises at least a LiDAR sensor, which can measure the distance to a surface or several surfaces with each measurement. The information provided by each LiDAR measurement from the LiDAR sensor can be used to determine the width, height, and distance to several objects at the same time, and track these objects in time with successive measurements. Firstly, all measurements from the LiDAR sensor which distance is closer or further than a threshold of interest are discarded by a segmentation algorithm executed by processing means, an on-board computer, of the drone ( 1 ). Also a filter removes the isolated measurements in terms of relative distance to avoid noisy data. Then the measurements are grouped by relative distance using a threshold that suits the wind turbine model. For example, the joint of the blade ( 11 ,  11 ′) with the nacelle ( 13 ) may not be considered as a single object because the nacelle ( 13 ) is several meters nearer than the blade ( 11 ,  11 ′). For this specific case it is interesting to adapt the threshold to be able to segment those objects instead of getting a single object which can be later post processed. The result of this segmentation is an array of LiDAR objects identified by the position of the samples. Then, a tracking algorithm is applied by the drone ( 1 ) for each detected array of segmented objects, in order to discard those objects that are not persistent in time, like noisy measurements, flying objects or insects, or any other temporary event. For every array of segmented objects, each object is checked against the currently tracked objects. For each segmented LiDAR object, a set of attributes or features is computed for this tracking: if object features match any tracked object, the new position is updated and the object remains tracked; 
     if features do not match any incoming object for several readings, then the track is lost and the object is removed from the list. To avoid losing tracking due to noisy LiDAR measurements there is a threshold for consecutive measurements where the object is lost. This means that if an object is occluded for a couple of iterations, it will not be lost. The output of the algorithm for each LiDAR scan is an array of tracked objects with identifier, tracking state and features. Considering that a LiDAR object is a group of LiDAR readings defined by distances and angles, then the following features are calculated: mean distance, projected distance, width, height, left angle, right angle, top angle and bottom angle. These features and identifier are enough to detect the windmill parts. The wind turbine detection uses the tracked objects to match a search pattern based on the navigation around wind turbines. It uses previous knowledge of the shape of the windmill and the navigation route. For example, it is known that when the drone ( 1 ) is facing the tower or pole ( 12 ), no object can be near the wind turbine over a certain distance to the ground ( 20 ). The wind turbine detection algorithm, whose state machine is shown in  FIG. 2 , for searching the pole ( 12 ) starts after a height threshold to avoid low vegetation and objects and look for an object of certain width in the center region. Using this information a state machine is able to define the navigation states and the possible transitions and events. As the LiDAR scanner has a reduced field of view, the tracked objects do not appear as complete objects and this situation forces to adapt the navigation states to match partial objects in the desired positions. 
       FIG. 2  presents a simplified states and transitions scheme for configuring the drone ( 1 ) to perform the detection of the windmill ( 10 ) by LiDAR. The state “tracking tower” is reached as soon as a centered object within the desired distance and width thresholds appears for some consecutive iterations. Although it is a simple algorithm, it is very robust because no objects are assumed to be in the scene around the pole ( 12 ). The state machine is in this state while the object is tracked or the two blades ( 11 ′), the blades ( 11 ′) which are not in a vertical position but in a lower one, appear in scene. The conditions for tracking are very permissive to avoid losing the object with vibration, temporary occlusions or noisy readings. The event “two blades detected” triggers the transition to state “tracking tower and lower blades”. This event occurs when two objects appear at the right and left of the previously tracked object, i.e., the tower or pole ( 12 ). Eventually those three objects converge in the nacelle ( 13 ) at some iteration, which will trigger the transition to “tracking nacelle”. This state is very important because the height of the nacelle ( 13 ) is used to calculate the navigation prism. Finally when a new object aligned with the nacelle ( 13 ), but further and narrower, appears in scene, the transition to “tracking blade” state is triggered. This state, which tracks the vertical blade ( 11 ), will transition to “tracking tip” when the object end is detected on top. 
     To add more robustness to the LiDAR detection, computer vision is applied combined with LiDAR navigation. In the following navigation stages, the same states of the simplified state machine are repeated with minor variations. Also the information from previous stages is used, such as the position of the nacelle ( 13 ). As LiDAR readings can be calibrated to correspond to pixels in the camera of the drone ( 1 ), the calibration result is a rotation matrix and a translation matrix that project LiDAR measurements on the image reference system. The calibration allows the LiDAR measurement to be shown in a 2D RGB or greyscale image. This calibration gives an array of measurements with distance, x and y position, in the image for every frame captured by the camera. This is very useful to enhance computer vision algorithms as it adds depth information to image. For example, when the nacelle ( 13 ) is detected using LiDAR, a computer vision algorithm for detecting nacelle ( 13 ) may add robustness and precision. The computer vision algorithm searches for three blades ( 11 ,  11 ′), each blade can be considered as a pair of parallel segments, converging in a central point, separated by 120 degrees angles. The LiDAR results show which pixels in the image are close to the borders of the blade ( 11 ,  11 ′). In a preferred embodiment of the invention, the nacelle ( 13 ) is detected when both LiDAR and computer vision report its detection. 
     Although the windmill detection and tracking capabilities provided by LiDAR as described before theoretically make navigation agnostic to dimensions and position of the windmill ( 10 ), it is desirable to provide an initial estimate of the relative position of the drone ( 1 ) and the windmill pole base ( 30 ), as well as the main dimensions of the windmill ( 10 ). This is for the navigation to be safer and more robust to drone sensor errors and environmental uncertainties. All target locations are defined as poses where the RPAS is assumed to be horizontally stabilized, i.e. the pitch and roll angles are zero. Therefore, the waypoints corresponding to those targets P can be defined as an array of four elements: the three linear Cartesian coordinates (x≡front, y≡left and z≡upwards) and the angular heading  e . 
       P=[x, y, z,  e ] 
     This navigation scheme assumes that the drone ( 1 ) is configured and armed on flat terrain, within a 10-20 meters range from the windmill pole ( 12 ) and approximately facing towards it, so as to ensure that the nearest object detected by the LIDAR after take-off is the pole ( 12 ) itself. 
     As shown in  FIG. 3 , upon inspection configuration and initialization, the home location P H =[0, 0, 0, 0] is defined as the current pose of the drone ( 1 ) and an automated standard take-off manoeuvre is commanded. Once a minimum take-off altitude threshold z T  is reached, the on-board computer, OBC, of the drone ( 1 ) takes control and starts commanding its navigation towards an initial waypoint directly above the home location at an altitude 3 m above, said initial waypoint P T =[0, 0, 0, z T +3]. Once a nominal inspection flight is completed, the OBC commands the drone ( 1 ) to navigate towards a final waypoint P L =[0, 0, 0, z L −3], directly above the home location and at an altitude 3m inferior to a maximum landing altitude threshold (z L ). Once said threshold is reached, an automated standard landing manoeuvre is commanded targeting the home location and the OBC releases control. The aim of these altitude thresholds and the buffers between themselves and the initial/final waypoints, as pictured in  FIG. 3 , is to ensure safe and robust control transitions between OBC and automated take-off/landing manoeuvers. In case of critically low battery or anomalous behavior, navigation can be instantly aborted by the human pilot at any point by triggering an automatic return to home manoeuvre. This manoeuvre follows one of two possible behaviors:
         a. If the drone ( 1 ) is horizontally within 10 m of the home position P H  or is inspecting the shells of the oblique blades ( 11 ′) from below, the drone ( 1 ) will navigate horizontally directly to the location vertically above the home position, then descend towards it and land.   b. If the drone ( 1 ) is horizontally further than 10m from the home position PH and is not inspecting the shells of the oblique blades ( 11 ′) from below, the drone ( 1 ) will first ascend vertically until a defined altitude threshold (z S ), then navigate horizontally to the location vertically above the home position, and finally descend towards it and land. This additional ascent manoeuvre, as shown in  FIG. 4 , is performed to ensure clearance of the windmill&#39;s structure. Therefore, the altitude threshold (z S ) corresponds to the sum of the windmill&#39;s nacelle height (n H ), the ground altitude offset (g AO ) between the windmill pole base ( 30 ) and the RPAS home location (P H ), the nacelle radius n D /2, n D  denoting the nacelle diameter, the blade length (b L ) plus a safety buffer of 20 meters, i.e.,       

         z   S   =n   H   +g   AO   +n   D 2 +b   L +20 
     The altitude threshold (z S ) of the second case described above acts both ways, meaning that if during normal operation the drone ( 1 ) reaches that altitude level, which indicates an indefinite/anomalous ascent behavior, an abort will be automatically generated causing the drone ( 1 ) to return to the home position and land. In addition to this automated return to home manoeuvre, the human pilot is enabled to override the commands from the OBC of the drone ( 1 ) at any point, taking manual control of the drone ( 1 ) and landing it with the radio controller. 
       FIG. 5  shows a flow diagram of the aforementioned different control behaviours to manoeuvre the drone ( 1 ). 
     Upon inspection initialization disclosed before, a skeleton of main navigation waypoints is pre-configured according to the main position and dimensions of the windmill ( 10 ), as well as the desired blade inspection distances at the narrowest section of the blade ( 11 ,  11 ′), i.e. the tip, and at the widest section of the blade ( 11 ,  11 ′), i.e. the longest cross-sectional chord line on the shells. These waypoints establish the start and target locations for every trajectory to be performed during a full windmill inspection, with the first and last waypoints corresponding to the aforementioned post-takeoff and pre-landing waypoints. A total of 24 waypoints are defined for the blade inspection phases, corresponding to the waypoints in front of the blade&#39;s root and tip extremes for each of the four sides, i.e. leading/attack edge, trailing/exit edge and lower/upper shells of each of the three blades ( 11 ,  11 ′). Additionally, safety buffer factors are applied to the nacelle height (n H ) and the blade length (b L ) in order to obtain conservative estimates and guarantee that the altitude of the nacelle and the length of the blade are cleared to avoid collisions. Taking this into account, the blade inspection waypoints are defined radially around the rotation axis of the nacelle ( 13 ). The distance from said axis to the root inspection waypoints is equal to the diameter (n D ) of the nacelle ( 13 ), while the distance from the axis to the tip inspection waypoints is equal to the blade length (b L ). Both radial distances are modified by the aforementioned safety buffer factors. An additional nacelle control waypoint P N , at a pre-configured distance d N  from the nacelle ( 13 ) and aligned with its axis, is defined as the entry/exit location to be visited before/after the blade inspection phases. The initial assumption is that the nacelle axis is perfectly aligned with the takeoff heading of the drone ( 1 ). The 8 waypoints pertaining to each of the three blades ( 11 ,  11 ′) inspection phases obey a number of relative positioning conditions that configure them as the corners of a trapezoidal prism, with rhombi as parallel bottom/top faces. These rhombi are non-equal but their diagonals are aligned among themselves, one of them being parallel to the plane containing the basal axes of three blades ( 11 ,  11 ′) and the other diagonal being perpendicular to it. In the configuration where the nacelle ( 13 ) is braked, this implies that one of the diagonals is aligned with the chord line of the blades, which links the leading and trailing edges of each cross-section, while the other is perpendicular to it. The initial assumption is that the top face of all prisms is a square with diagonals equal to twice the desired inspection distance at the tip, d T , of the blades ( 11 ,  11 ′). On the other hand, their base face has a minor diagonal with that same length and a major diagonal with a length of twice the desired inspection distance at the root, d R , of the blade shells ( 11 ,  11 ′). The coordinates of all these waypoints are susceptible to in-flight modifications to account for the actual dimensions/position of the windmill ( 10 ) or accumulated sensor errors. However, when one of those waypoints is modified, the correction is propagated the rest fulfilling a set of assumptions:
         Cartesian corrections, both horizontal and in altitude, of the nacelle control waypoint P N  are performed equally to all blade inspection waypoints, i.e., the difference in altitude or horizontal position is applied to all waypoints as a pure translation.   Heading corrections in the nacelle control waypoint P N  are propagated to all blade inspection waypoints as a rotation of the difference in heading angle around the vertical axis going through the corrected pole position estimate i.e., once Cartesian corrections have been applied.   Normal corrections in blade inspection waypoints are only propagated within their corresponding bottom/top prism face, maintaining modifications of both rhombi decoupled. This propagation can occur in one of two manners:
           i) If the modified waypoint is the first one to be visited in its corresponding top/bottom prism face, the difference in its   
               

     Cartesian coordinates is applied as a pure translation to the rest of waypoints belonging to the same prism face.
             ii) If another waypoint has been previously visited in the same top/bottom prism face, the correction is propagated so as to maintain the rhombus defined by the latest two waypoints visited and the heading of both rhombus diagonals. These known values determine the length of the rhombus side and the unit vectors and internal semi-angles of its first/second corner diagonals, so that its third and fourth corners can be corrected.       Radial corrections in the tip face of any prism are propagated directly as equal pure translations to the rest of waypoints belonging to the same tip face. For the vertical blade ( 11 ), this translation only affects the altitude coordinate, while for oblique blades ( 11 ′) it also affects the horizontal coordinates according to the heading angle of the nacelle ( 13 ) and the corresponding blade inclination angle: approximately ±120 degrees from the upwards direction or approximately ±30 degrees from the horizontal plane.       

     The transitions between these waypoints can be performed applying the following trajectories types:
         Straight path: the start waypoint (P S ) and final waypoint (P F ) are linked by a straight line and have identical headings, so that it is maintained constant along the whole manoeuvre. The linear Cartesian coordinates vary linearly with an interpolation parameter is according to the start and final coordinate values, as shown in equation 1:       

         x ( t   s )= x   s +( x   F   −x   S ) t   S    t   S ∈[0,1]
 
         y ( t   s )= y   s +( y   F   −y   S ) t   S    t   S ∈[0,1]
 
         z ( t   s )= z   s +( z   F   −z   S ) t   S    t   S ∈[0,1]
 
       θ( t   s )=θ s =θ F    t   S ∈[0,1]  equation 1
         Corner turn: the manoeuvre is divided into three stages, where all the heading variation is concentrated in a single point turn, executed in-between two purely lateral translations with constant headings that cover the distance in between the initial and final target waypoints. This results in an initial straight trajectory from the start waypoint (P S ) to a first interim waypoint (P C1 ), a point turn between P C1  and a second interim waypoint (P C2 ) and a final straight trajectory from P C2  to final waypoint (P F ), as described by equation 2 and illustrated by  FIG. 6 .       

         P   s   →P   C1   : [x   S +( x   C1   −x   S ) t   C   , y   S +( y   C1   −y   S ) t   C   , z   S   =z   C1 , θ S =θ C1   ], t   C ∈[0,1]
 
         P   C1   →P   C2   : [x   C1   =x   C2   , y   C1   =y   C2   , z   C1   =z   C2 , θ C1   +t   θ (θ C2 −θ C1 )],  t   θ ∈[0,1]
 
         P   C2   →P   F   : [x   C2 +( x   F   −x   C2 ) t   C   , y   C2 +( y   F   −y   C2 ) t   C   , z   C2   =z   F , θ C2 =θ F   ], t   C ∈[0,1]  equation 2
         Orbital turn: the manoeuvre is executed as a continuum, uniformly varying the heading as the drone ( 1 ) translates laterally, following an arc that goes through the start and final target waypoints with its curvature center at the intersection of the initial and final heading directions of the drone ( 1 ). The resulting trajectory is defined by the intersection ([x R , y R ]) of the lines defined by the horizontal coordinates and heading angles of the start waypoint (P S ) and final waypoint (P F ) and the distance from any of these waypoints (P S , P F ) to said intersection ([x R , y R ]), following equation 3 as shown by  FIG. 7 .       

       θ( t   R )=θ S +(θ F −θ S ) t   R    t   R ∈[0,1]
 
         x ( t   R )= x   R −√{square root over (( x   R   −x   S ) 2 +( y   r   −y   S ) 2 )} cos(θ( t   R ))  t   R ∈[0,1]
 
         y ( t   R )= y   R −√{square root over (( x   R   −x   S ) 2 +( y   R   −y   S ) 2 )} sin(θ( t   R ))  t   R ∈[0,1]
 
         z ( t   R )= z   S   =z   F    t   R ∈[0,1]  equation 3
 
     The pre-generated trajectories determined by the waypoints described before are valid for a successful inspection only in the event of having perfect knowledge at all times of all dimensions of the windmill ( 10 ), positions of the blades ( 11 ,  11 ′) and GPS location of the drone ( 1 ). Since these are not attainable assumptions, it is necessary to perform a range of trajectory adjustments according to the described object detections and windmill tracking by LiDAR, so as to correct any errors or uncertainties in the aforementioned data. The nature and aim of these adjustments is to:
         Find the correct alignment with the axis of the nacelle ( 13 ), i.e. the heading normal to the plane formed by the three blades ( 11 ,  11 ′), in order to sweep along the blade edges and shells as perpendicularly as possible and be able to locate accurately any detected damages. When using orbital turns, the adjustment is independent from the take-off location relative to the nacelle ( 13 ), since a single continuous turn will suffice to reach the correct location. However, in the case of corner turns, as described before, the adjustment manoeuvre can imply:
           Performing no turns if taking off frontally to the nacelle ( 13 ).   Performing one turn if taking off laterally to the nacelle ( 13 ).   Performing two turns if taking off from behind the nacelle ( 13 ).   
           Find the correct height of the nacelle ( 13 ), i.e. the altitude at which the two lower blades ( 11 ′) and the pole ( 12 ) as detected by the LiDAR converge, in order to avoid collisions when navigating in the vicinity of the nacelle&#39;s rear protrusion or missing the root of the blades in the inspection footage. This can imply:
           Elongating the initial ascent, gradually raising the target location by a fixed amount, in those cases where the detection of the nacelle ( 13 ) by the LiDAR has not occurred when the initially estimated altitude is reached.   Shortening the initial ascent, instantly bringing the manoeuvre to an end, in those cases where the LiDAR detection has already occurred before the initially estimated altitude is reached.   
           Find the correct location of the tip of the blades ( 11 ,  11 ′) by the LiDAR, i.e. in 3D-case the tip is detected, in 2D-case, the position is the one at which the inspected blade is no longer detected, in order to ensure that the tip of the blades ( 11 ,  11 ′) is captured in the inspection footage. This can imply:
           Elongating the sweep along the blade ( 11 ,  11 ′), gradually increasing the distance from the manoeuvre start to the target location by a fixed amount, in those cases where the tip detection by the LiDAR has not occurred when the initially estimated target is reached.   Shortening the sweep along the blade ( 11 ,  11 ′), instantly bringing the manoeuvre to an end, in those cases where the LiDAR detection of the tip has already occurred before the initially estimated target is reached.   
           Maintain the blades centered and at the desired inspection distance (a) in order to get full coverage and focused footage for a complete damage inspection. The desired distance from the blade ( 11 ,  11 ′) can be calculated according to different criteria:
           Constant distance, where the blade ( 11 ,  11 ′) is kept at the same distance regardless of side under inspection and altitude, as in equation 4. This is ideal for cameras with a shallow field of focus and cases where image occupancy of the blade ( 11 ,  11 ′) is not critical. In equation 4: Symbols ‘b’, ‘s’ and ‘e’ denote the identifier of the inspected blade, side and extreme respectively. Symbols ‘A’, ‘L’, ‘E’ and ‘E’ denote the different sides of a blade: leading (attack) edge, lower shell, trailing exit edge and upper shell respectively.   
               

         d   l ( b, s, e, x, y, z )= d   T   =d   R , ∀ S   ∈{A, L, E, U}   equation 4
             Constant image occupancy, where the portion of the image occupied by the blade ( 11 ,  11 ′) is maintained according to the width of the blade as detected by the LiDAR and the characteristics of the camera equipped by the drone ( 1 ). This is ideal to maximize the amount of detail obtained in the narrower sections, i.e. blade tip from edges, while still getting a full view of the wider sections, i.e. blade root from shells.   Interpolated distance, where the distance is kept constant on the edges of the blade ( 11 ,  11 ′) due to their roughly constant width but is linearly interpolated with the ratio of the distance from the current location to the root of the blade ( 11 ,  11 ′) being inspected over the total length r R  of the blade ( 11 ,  11 ′), r R (b, s, x, y, z) being calculated using equation 5. The resulting equations, shown in equation 6, are a useful simplification of the constant image occupancy criterion shown above, which does not guarantee constant occupancy but maintains most of its benefits without the need for explicitly calculating image occupancy of the blade ( 11 ,  11 ′).           

     
       
         
           
             
               
                 
                   
                     
                       r 
                       R 
                     
                      
                     
                       ( 
                       
                         b 
                         , 
                         s 
                         , 
                         x 
                         , 
                         y 
                         , 
                         z 
                       
                       ) 
                     
                   
                   = 
                   
                     
                       
                         
                           
                             ( 
                             
                               x 
                               - 
                               
                                 x 
                                 bsR 
                               
                             
                             ) 
                           
                           2 
                         
                         + 
                         
                           
                             ( 
                             
                               y 
                               - 
                               
                                 y 
                                 bsR 
                               
                             
                             ) 
                           
                           2 
                         
                         + 
                         
                           
                             ( 
                             
                               z 
                               - 
                               
                                 z 
                                 bsR 
                               
                             
                             ) 
                           
                           2 
                         
                       
                     
                     
                       
                         
                           
                             ( 
                             
                               
                                 x 
                                 bsT 
                               
                               - 
                               
                                 x 
                                 bsR 
                               
                             
                             ) 
                           
                           2 
                         
                         + 
                         
                           
                             ( 
                             
                               
                                 y 
                                 bsT 
                               
                               - 
                               
                                 y 
                                 bsR 
                               
                             
                             ) 
                           
                           2 
                         
                         + 
                         
                           
                             ( 
                             
                               
                                 z 
                                 bsT 
                               
                               - 
                               
                                 z 
                                 bsR 
                               
                             
                             ) 
                           
                           2 
                         
                       
                     
                   
                 
               
               
                 
                   equation 
                    
                   
                       
                   
                    
                   5 
                 
               
             
             
               
                 
                   
                     
                       
                         
                           d 
                           I 
                         
                          
                         
                           ( 
                           
                             b 
                             , 
                             s 
                             , 
                             e 
                             , 
                             x 
                             , 
                             y 
                             , 
                             z 
                           
                           ) 
                         
                       
                       = 
                       
                         d 
                         T 
                       
                     
                     , 
                     
                       ∀ 
                       
                         s 
                         ∈ 
                         
                           
                             { 
                             
                               A 
                               , 
                               E 
                             
                             } 
                           
                            
                           
                               
                           
                            
                           
                             ∀ 
                             
                               z 
                               ∈ 
                               
                                 [ 
                                 
                                   
                                     z 
                                     
                                       b 
                                        
                                       
                                         { 
                                         
                                           A 
                                           E 
                                         
                                         } 
                                       
                                        
                                       R 
                                     
                                   
                                   , 
                                   
                                     z 
                                     
                                       b 
                                        
                                       
                                         { 
                                         
                                           A 
                                           E 
                                         
                                         } 
                                       
                                        
                                       T 
                                     
                                   
                                 
                                 ] 
                               
                             
                           
                         
                       
                     
                   
                    
                   
                     
 
                   
                    
                   
                     
                       
                         
                           d 
                           I 
                         
                          
                         
                           ( 
                           
                             b 
                             , 
                             s 
                             , 
                             e 
                             , 
                             x 
                             , 
                             y 
                             , 
                             z 
                           
                           ) 
                         
                       
                       = 
                       
                         
                           d 
                           T 
                         
                         + 
                         
                           
                             
                               r 
                               R 
                             
                              
                             
                               ( 
                               
                                 b 
                                 , 
                                 
                                   L 
                                   U 
                                 
                                 , 
                                 x 
                                 , 
                                 y 
                                 , 
                                 z 
                               
                               ) 
                             
                           
                           · 
                           
                             ( 
                             
                               
                                 d 
                                 r 
                               
                               - 
                               
                                 d 
                                 T 
                               
                             
                             ) 
                           
                         
                       
                     
                     , 
                     
                       ∀ 
                       
                         s 
                         ∈ 
                         
                           
                             { 
                             
                               L 
                               , 
                               U 
                             
                             } 
                           
                            
                           
                               
                           
                            
                           
                             ∀ 
                             
                               z 
                               ∈ 
                               
                                 [ 
                                 
                                   
                                     z 
                                     
                                       b 
                                        
                                       
                                         { 
                                         
                                           L 
                                           U 
                                         
                                         } 
                                       
                                        
                                       R 
                                     
                                   
                                   , 
                                   
                                     z 
                                     
                                       b 
                                        
                                       
                                         { 
                                         
                                           L 
                                           U 
                                         
                                         } 
                                       
                                        
                                       T 
                                     
                                   
                                 
                                 ] 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   equation 
                    
                   
                       
                   
                    
                   6 
                 
               
             
           
         
       
     
     Once the desired pose according to LiDAR object detections and windmill tracking is obtained, it is used to correct the trajectory followed by the drone ( 1 ) using one or more of three different types of adjustments:
         Reactive: The adjusted desired position is used to update the immediate target of the drone ( 1 ), whether it is the final target of the manoeuvre or an interim target of the trajectory, while continuing the execution of the manoeuvre. This ensures continuous reactive adjustment for the drone ( 1 ) to smoothly adjust to any changes in the desired trajectory as soon as the LIDAR detects them, as depicted by continuous-line trajectories in  FIGS. 8A-8C . Only if the magnitude of the drone ( 1 ) pose error/s exceeds predefined thresholds, the reactive adjustment will halt the progress of the manoeuvre, creating an ad-hoc adjustment target, until the error/s are brought back within acceptable levels and the manoeuvre is resumed, as shown by the dashed-line trajectories in  FIGS. 8A-8C . These thresholds will ensure that:
           The blade ( 11 ) is not too close, i.e. the error between the desired inspection distance (d I ) and the actual distance Δd=d−d I , to the blade ( 11 ) is lower than a configurable negative threshold (d C ), to prevent risk of collision and ensure the image is focused, as seen in  FIG. 8A .   The blade ( 11 ) is not too far, i.e. the distance error is higher than a configurable positive threshold (d F ), in order to ensure the image is focused and prevent excessive deviation from the desired trajectory, as shown by  FIG. 8B .   The blade ( 11 ) is within the field of view of the camera, i.e. that the maximum angle of the blade detected by the LiDAR ( e M) is smaller in absolute value to a configurable threshold ( e O), so that both edges are within the captured image, as in  FIG. 8C . This is achieved by making said threshold smaller or equal to half the horizontal field of view of the camera equipped by the drone ( 1 ). These kind of reactive adjustments are a hard priority of the navigation strategy, since complete footage capture throughout all sweep trajectories of all blades is necessary to enable full damage detection.   
           Predictive: If the current desired position of the drone ( 1 ) is not the final target of the manoeuvre, but an interim target of the trajectory, the adjustment can be extrapolated to adjust the final target of the manoeuvre accordingly. The extrapolation depends on the type of manoeuvre, its characteristics and its starting waypoint. This type of adjustment aims at minimizing the magnitude of reactive adjustments and the likelihood of breaching manoeuvre-halting thresholds in the remainder of the manoeuvre, thus making the trajectory smoother and more efficient.   Corrective: When the final target of an inspection manoeuvre is reached, specific adjustment manoeuvres are performed to refine the location of the corresponding waypoint. Once the adjustment manoeuvre is completed, it is then propagated incrementally to the waypoints yet to be visited. This type of adjustments have a double goal:
           Making the start and target locations of remaining manoeuvres as accurate as possible, in order to minimize the frequency and magnitude of reactive/predictive adjustments.   Guaranteeing that areas of special interest, i.e. the roots and tips of the blades ( 11 ,  11 ′), are captured by the inspection footage with emphasized care and extension.   
               

     All the described trajectory planning and adjustments are managed and calculated by the OBC of the drone ( 1 ). This is done according to the configuration data and override remote control commands received from the user interface, i.e. tablet/laptop and radio controller, and sensor data provided by the LiDAR sensor/camera and the autopilot. 
     The resulting trajectories and adjustments are then sent as pose/velocity commands to the autopilot, which translates them into the appropriate control signals to actuate the motors for the drone ( 1 ) to perform the desired motion in a stabilized manner. Said commands transmitted from the OBC to the autopilot can be of two different types:
         Interim target pose commands transmitted to the autopilot, which then commands the drone ( 1 ) to reach the desired pose. This is only suitable for autopilots capable of internal pose control. In this case, the target of the autopilot corresponds to the interim trajectory location the drone ( 1 ) must reach to advance towards the final target while it effectively tracks the trajectory.   Linear and angular velocity commands transmitted to the autopilot, which in turn controls the attitude of the drone ( 1 ) to achieve the desired velocities in a stabilized fashion. In this case, the interim target poses from the previous case are not directly transmitted, but rather internally used by the OBC to calculate the drone ( 1 ) pose error and calculate the desired velocities required to correct it and smoothly reach that desired location. This type of commands centralizes trajectory tracking and velocity calculations in the OBC, reducing the dependency on the specific autopilot type used and improving the control over behavior and performance of the drone ( 1 ).       

     All data connections and flow between the different components of the overall system mentioned above are pictured in  FIG. 9 . 
     Note that in this text, the term “comprises” and its derivations (such as “comprising”, etc.) should not be understood in an excluding sense, that is, these terms should not be interpreted as excluding the possibility that what is described and defined may include further elements, steps, etc.