Small UAS-Based Wind Feature Identification System Part 1: Integration and Validation
<p>Reference frames utilized in the formulation of the identification of wind vector problem.</p> "> Figure 2
<p>Typical shear profile that shows the increase of wind speed over as the altitude increases. The relationship is exponential between the two variables.</p> "> Figure 3
<p>Typical discrete gust profile that shows a growth over the wind on a short period of time from the initial wind speed of the gust magnitude, and a permanent increase at the end of the gust length.</p> "> Figure 4
<p>Typical weibull distribution from a National Oceanic and Atmospheric Administration (NOAA) measurement station at an altitude of 30 <math display="inline"> <semantics> <mi mathvariant="normal">m</mi> </semantics> </math>.</p> "> Figure 5
<p>High level software architecture that shows the flow of information of the wind identification system.</p> "> Figure 6
<p>Architecture design with communications handler.</p> "> Figure 7
<p>Database interfacing with communication handler.</p> "> Figure 8
<p>Simulink model of the simulation environment for the wind identification system.</p> "> Figure 9
<p>Effects of different simulated features on the vehicle trajectory: (<b>a</b>) the effect of a shear wind with increasing deviation as altitude rises; (<b>b</b>) the effects of a discrete gust with a constant deviation on the trajectory in a single direction; (<b>c</b>) a chaotic deviation due to the effects of a continuous gust; and finally (<b>d</b>) the total effects of the wind present at the same time.</p> "> Figure 10
<p>Wind Speed/Altitude maps of the different simulation scenarios: (<b>a</b>) the wind shear as an increase of wind speed with altitude; (<b>b</b>) a sudden increase in wind speed at a certain altitude (discrete gust); (<b>c</b>) a continuous gust with a chaotic effect and rapid increases and decreases of wind speed; and (<b>d</b>) the sum of the three effects.</p> "> Figure 11
<p>Actual, estimated an predicted wind speed (<b>a</b>) and wind speed error (<b>b</b>) in the considered scenario. The predicted wind starts with high dispersion, however, it converges to the actual value within 100 s.</p> "> Figure 12
<p>Information flow for on-the-loop experiments of the wind identification system. The blocks show the multi-platform interfaces that allowed the validation tests.</p> "> Figure 13
<p>Sensor and UAS platform utilized in experiments. (<b>a</b>) UAS SkyWalker X8, (SkyWalker Technology Co., Ltd, Wuhan, China) with carbon fiber frame equipped with a 12 × 6 prop with 2 × 20 g servomotor; (<b>b</b>) Digital airspeed sensor utilized in experiments which contains a 4525DO sensor (TE Connectivity Ltd., Schaffhausen, Switzerland) which enables a resolution of 0.84 Pa [<a href="#B33-sensors-17-00008" class="html-bibr">33</a>].</p> "> Figure 14
<p>UAS Trajectory for validation of the wind information system. (<b>a</b>) shows a medium altitude with few spirals; (<b>b</b>) shows the shortest flight; (<b>c</b>) shows a flight with spirals performed at an altitude of 120 m; and (<b>d</b>) shows a flight with wide spirals at an altitude of 120 m.</p> "> Figure 15
<p>(<b>a</b>) shows the estimation, most probable wind speeds and last shear wind prediction generated throughout the flight; (<b>b</b>) indicates the wind speed estimation (blue line), wind speed prediction (red dots) and airspeed (orange line).</p> "> Figure 16
<p>Estimation, most probable wind speeds and last wind prediction generated throughout the flight shown in <a href="#sensors-17-00008-f014" class="html-fig">Figure 14</a>b.</p> "> Figure 17
<p>Estimation, most probable wind speeds and last wind prediction generated throughout the flight illustrated in <a href="#sensors-17-00008-f014" class="html-fig">Figure 14</a>c.</p> "> Figure 18
<p>Estimation, most probable wind speeds and last wind prediction generated throughout the flight depicted in <a href="#sensors-17-00008-f014" class="html-fig">Figure 14</a>c.</p> "> Figure 19
<p>Predicted (red circles) vs. Estimated wind speed (blue line): (<b>a</b>) shows the difference between the estimation and the prediction of the wind speeds with the airspeed (orange) as a reference; (<b>b</b>) shows the actual difference between these two quantities which appears to be bounded and shows a normal behavior.</p> ">
Abstract
:1. Introduction
2. Wind Field Estimation and Wind Field Prediction
2.1. Wind Field Estimation
2.2. Wind Field Prediction
2.2.1. Wind Shear Model
2.2.2. Discrete Gust Model
2.2.3. Continuous Gust Model
2.2.4. Weibull Distribution
2.2.5. Genetic Algorithm and the Weibull Distribution Parameters
2.3. Wind Mapping
3. System Architecture
3.1. Communication Block and Handler
3.1.1. Hardware Communication
3.1.2. Module Communication
3.2. Wind Prediction
Algorithm 1 Wind prediction algorithm. | |
1: procedure RequestWindEstimation | |
2: WindEst = CommHandler.Request.CurrentWindVel | ▹ Request a wind speed estimation (see Equation (2)). |
3: WDb(CommHandler.Request.WVelCount++)= WindEst; | ▹ Store WindEst to Database. |
4: end procedure | |
5: procedure DetectFeature(WDb) | ▹ Requires Wind Database (WDb) with at least 30 elements |
6: Start=False; | |
7: if WDb.Size then | |
8: Start = True; | ▹ Start detection of features. |
9: else | |
10: CommHandler.Alert = InsufficienElements; | ▹ Wait until DB has sufficient elements. |
11: end if | |
12: if Start==True then | |
13: WDb = OrderAltitudes(WDb); | ▹ Order WDb based on altitude. |
14: for AltMax do | ▹ Check for altitudes 1 to maximum altitude. |
15: NearAlts = FindNearAltitudes(WDb,i,thres); | |
16: AdNearAlts = CommHandler.RequestDb(i); | ▹ Additional WDb elements to master Db. |
17: NearAlts = [NearAlts:AdNearAlts]; | ▹ Group elements. |
18: WindVelMP = FindMPWVel(NearAlts) | ▹ Find most probable wind speed at altitude i . |
19: MPS(i) = Store(WindVelMP); | ▹ Store the most probable wind speeds. |
20: end for | |
21: Prandtl = CalcPrandtl(MPS) | ▹ Calculate Prandtl coefficient from Equation (6). |
22: if Prandtl.Exist = True then | |
19: ξ = Prandtl; | |
24: CommHandler.Alert = ShearDetected; | |
25: end if | |
26: ; | |
27: if Exist(Prandtl) = False then | |
28: DetectJumps(WDb.Velocity,Std(WDb.Velocity)) | ▹ Look for jumps in running std. dev. |
29: end if | |
30: if CommHandler.Request.Alert.JumpDetected = True then | |
31: JumpCounter++; | |
32: end if | |
33: if JumpCounter≥threshold then | |
34: Commhandler.Alert = ContGustDetected; | ▹ Is a continuous gust. |
35: else | |
36: Commhandler.Alert = DiscGustDetected; | ▹ Is a discrete gust. |
37: end if | |
38: if CommHandler.Request.Alert.DiscGustDetected = True then | |
39: Gust = DetectJumps.Jumpsize | |
40: else if CommHandler.Request.Alert.DiscGustDetected then | |
41: ContGust = PerformGaussianRegressionWDb | ▹ See note **. |
42: end if | |
43: else | |
44: CommHandler.Alert = NoFeatureDetected; | ▹ No feature was detected. |
45: end if | |
46: end procedure | |
** The system may perform a long-term and a short term prediction. For this research activity only the short-term which is a Standard GP regression. The non-homogeneous GP regression requires a vast amount of information which is part of future activities. |
Algorithm 2 Grouping near altitudes algorithm. | |
1: procedure FindNearAltitudes(WDb,alt,thres) | ▹ Find altitudes in WDb close to alt. |
2: Counter = 0; | |
3: for WDb.Size do | |
4: if alt-thres≤WDb(i).Altitude≤alt+thres then | |
5: NearAlts(Counter++) = WDb(i); | ▹ Store whole WDb. |
6: end if | |
7: end for | |
8: return NearAlts; | |
9: end procedure |
Algorithm 3 Weibull parameter calculation algorithm. | |
1: procedure FindMPWVel(NearAlts) | ▹ Find altitudes. |
2: CalcKappa(NearAlts) | ▹ Calculate shaping parameter using GA. |
3: | ▹ Calculate scaling parameter from Equation (17). |
4: end procedure | |
5: procedure CalcKappa(Altitudes) | ▹ GA Implementation (see note***). |
6: PopulationSize = 50; | |
7: FunctionTolerance = ; | |
8: MaxGenerations = 100; | |
9: CrossOverFraction = 0.8; | |
10: StdAlt = Std(NearAlts); | ▹ Calculate standard deviation. |
11: MeanAlt = Mean(NearAlts); | ▹ Calculate mean. |
12: PopKappa == rand(PopulationSize); | ▹ Initialize with random population. |
13: while FunctionTolerance do | |
14: for PopKappa.Size do | |
15: Results(j) = ObjFunc(PopKappa(j),StdAlt,MeanAlt); | ▹ Evaluate Objetive Function. |
16: end for | |
17: Parents = Selection(Results,PopKappa); | ▹ Selection of elements for newGeneration Equation (16). |
18: Reproduction(Parents,PopKappa,MaxGenerations;) | ▹ Creation of new population. |
19: Crossover(CrossOverFraction); | ▹ Scattered crossover function. |
20: Migration(); | ▹ Gaussian Mutation function. |
21: end while | |
22: end procedure | |
*** The selected parameters were the same ones utilized in previous implementations [8,9]. |
Algorithm 4 Wind Prediction Algorithm. | |
1: procedure CalcPrandlt(WindSpeeds) | ▹ Determine Prandtl Coefficient. |
2: Prandtl.Exist = False; | ▹ Initialize values. |
3: Prandtl.Value = 0; | |
4: for do | ▹ Evaluate potential Prandtl coefficient. |
5: for MaxAlt do | ▹ Evaluate for altitudes in MPWS. |
6: CalError = ComparePrandtlValues | |
7: end for | |
8: if Mean(Error)≤thres and Std(erorr)≤thres then | |
9: Prandtl.Exist = True; | ▹ If coefficient gives a minimum average error. |
10: Prandtl.Value = m; | ▹ Prandtl coefficient is m. |
11: break; | |
12: end if | |
4: end for | |
4: return Prandtl | |
15: end procedure |
Algorithm 5 Jump detection algorithm. | |
1: procedure DetectJumps(WindSpeeds) | ▹ Look for jumps in running std dev. |
2: PrevStd = Std(WindSpeeds(k − 1)); | ▹ Look for previous std. dev. |
3: DiffStd = PrevStd-Std(WindSpeeds) | ▹ Difference between std. deviations. |
4: AcumDiffStd(count + 1) = DisffStd | |
5: if DiffStd ≥ thres then | ▹ If error is bigger than threshold. |
6: CommHandler.Alert = JumpDetected | |
7: JumpSize = Mean(AcumDiffStd) | ▹ Estimate the size of the jump. |
8: end if | |
9: end procedure |
3.3. Data Storage and Wind Database
Algorithm 6 Database Access, Query and Writing Algorithm. | |
1: procedure WaitForRequest() | |
2: if = Write then | |
3: WriteDB(); | |
4: else if = Query then | |
5: Query(,Cond); | |
6: else | |
7: TriggerException; | |
8: end if | |
9: end procedure | |
10: procedure WriteDB(,WindVector) | |
11: Con→ CreateDriver(); | ▹ Create Database Driver |
12: Con→GetDriverInstance(); | ▹ Used to get the Driver Instance and Load the DB. |
13: Con→setSchema() | ▹ Set the DB to write to |
14: Stmt→WindVector | |
15: end procedure | |
16: procedure QueryDB(,Cond) State Con→ CreateDriver(); | |
17: Con→GetDriverInstance(); | |
18: Con→setSchema(); | |
19: execute; | |
20: stmt→executeQuery(Condition); | ▹ See note below. |
21: end procedure |
3.4. Alert Generation Module
4. Simulation and Experimental Results
4.1. Simulation Test Bed Description
4.2. Simulation Results
4.3. Software-in-the-Loop Experiments
4.4. Software-in-the-Loop Experiments Results
5. Results Discussion
6. Conclusions and Future Work
Acknowledgments
Author Contributions
Conflicts of Interest
Abbreviations
ADC | Analog to Digital converter |
AOA | Angle of Attack |
APM | Autopilot Module |
COTS | Commercial-Off-The-Shelf |
CPU | Central Processing Unit |
DB | Database |
EKF | Extended Kalman Filter |
GA | Genetic Algorithm |
GEV | Generalized Extreme Value |
GNSS | Global Navigation Satellite System |
GP | Gaussian Proccess |
IMU | Inertial Measurement Unit |
LPGL | GNU Lesser General Public License |
PID | Proportional, Integral, Derivative |
RAM | Random Access Memory |
SITL | Software-In-The-Loop |
SQL | Structured Query Language |
TN | Truncated Normal (Distribution) |
UAV | Unmanned Aerial Vehicle |
UDP | User Datagram Protocol |
UKF | Unscented Kalman Filter |
References
- Biradar, A.S. Wind Estimation and Effects of Wind on Waypoint Navigation of UAVs. Master’s Thesis, Arizona State University, Tempe, AZ, USA, 2014. [Google Scholar]
- Langelaan, J.W.; Alley, N.; Neidhoefer, J. Wind Field Estimation for Small Unmanned Aerial Vehicles. J. Guid. Control Dyn. 2011, 34, 109–117. [Google Scholar] [CrossRef]
- Johansen, T.; Crisofaro, A.; Sorensen, K.; Fossen, T. On estimation of wind velocity, angle-ofattack and sideslip angle of small UAVs using standard sensors. In Proceedings of the International Conference on Unmanned Aircraft Systems, Denver, CO, USA, 9–12 June 2015; pp. 510–519.
- Lawrance, N.; Sukkarieh, S. Simultaneous Exploration and Exploitation of a Wind Field for a Small Gliding UAV. In Proceedings of the AIAA Guidance, Navigation and Control Conference, Toronto, ON, Canada, 2–5 August 2010.
- Larrabee, T.; Chao, H.; Gu, Y.; Napolitano, M. Wind field estimation in UAV formation flight. In Proceedings of the American Control Conference, Portland, OR, USA, 4–6 June 2014; pp. 5408–5413.
- Neumann, P.; Bartholmai, M. Real-time wind estimation on a micro unmanned aerial vehicle using its inertial measurement unit. Sens. Actuators A. Phys. 2015, 235, 300–310. [Google Scholar] [CrossRef]
- Condomines, J.F.; Bronz, M.; Erdely, J.F. Experimental Wind Field Estimation and Aircraft Identification. In Proceedings of the International Micro Air Vehicles Conference and Flight Competition, Aachen, Germany, 15–16 September 2015.
- Rodriguez, L.; Cobano, J.; Ollero, A. Wind Characterization and Mapping Using Fixed-Wing Small Unmanned Aerial Systems. In Proceedings of the International Conference on Unmanned Aircraft Systems, Arlington, VA, USA, 7–13 June 2016; pp. 178–184.
- Rodriguez, L.; Cobano, J.; Ollero, A. Wind Fiel Estimation and Identification Having Shear Wind and Discrete Gust Features with a Small UAS. In Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems, Daejon, Korea, 9–14 October 2016.
- Cobano, J.A.; Alejo, D.; Vera, S.; Heredia, G.; Sukkarieh, S.; Ollero, A. Distributed Thermal Identification and Exploitation for Multiple Soaring UAVs. In Human Behavior Understanding in Networked Sensing: Theory and Applications of Networks of Sensors; Spagnolo, P., Mazzeo, L.P., Distante, C., Eds.; Springer: Cham, Switzerland, 2014; pp. 359–378. [Google Scholar]
- Cutler, M.J.; McLain, T.W.; Beard, R.W.; Capozzi, B. Energy Harvesting and Mission Effectiveness for Small Unmanned Aircraft. In Proceedings of the AIAA Guidance, Navigation and Control Conference, Toronto, ON, Canada, 2–5 August 2010.
- Chakrabarty, A.; Langelaan, J.W. Flight Path Planning for UAV Atmospheric Energy Harvesting Using Heuristic Search. In Proceedings of the AIAA Guidance, Navigation and Control Conference, Toronto, ON, Canada, 2–5 August 2010.
- Montella, C.; Spletzer, J.R. Reinforcement Learning for Autonomous Dynamic Soaring in Shear Winds. In Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems, Chicago, IL, USA, 14–18 September 2014.
- Bird, J.; Langelaan, J.; Montella, C.; SPletzer, J.; Grenestedt, J. Closing the Loop in Dynamic Soaring. In Proceedings of the AIAA Guidance, Navigation, and Control Conference, National Harbor, MD, USA, 13–17 January 2014.
- Bencatel, R.; Kabamba, P.; Girard, A. Perpetual Dynamic Soaring in Linear Wind Shear. J. Guid. Control. Dyn. 2014, 37, 1712–1716. [Google Scholar] [CrossRef]
- Rucco, A.; Aguiar, P.A.; Lobo Pereira, F.; Borges de Sousa, J. A Predictive Path-Following Approach for Fixed-Wing Unmanned Aerial Vehicles in Presence of Wind Disturbances. In Robot 2015 Second Iberian Robotics Conference; Springer: Cham, Switzerland, 2015; Volume 417, pp. 623–634. [Google Scholar]
- U.S. Department of Defense. Military Specification, Flying Qualities of Piloted Airplanes MIL-F-8785C; U.S. Department of Defense: Washington, DC, USA, 1980.
- U.S. Department of Defense. Handbook, Flying Qualities of Piloted Airplanes MIL-F-8785C; U.S. Department of Defense: Washington, DC, USA, 1997.
- The MathWorks, Inc. MATLAB Reference Pages, Dryden Wind Turbulence Model (Continuous); The MathWorks, Inc.: Natick, MA, USA, 2010. [Google Scholar]
- Gao, C. Autonomous Soaring and Surveillance in Wind Fields with an Unmanned Aerial Vehicle. Ph.D. Thesis, University of Toronto, Toronto, ON, Canada, 2015. [Google Scholar]
- Park, C.; Huang, J.; Ding, Y. Domain decomposition for fast Gaussian process regression. J. Mach. Learn. Res. 2011, 12, 1697–1728. [Google Scholar]
- Lerch, S.; Thorarinsdottir, T.L. Comparison of nonhomogeneous regression models for probabilistic wind speed forecasting. Tellus A 2013, 65, 21206. [Google Scholar] [CrossRef]
- Liu, F.J.; Chen, P.H.; Kuo, S.S.; Su, D.C.; Chang, T.P.; Yu, Y.H.; Lin, T.C. Wind characterization analysis incorporating genetic algorithm: A case study in Taiwan Strait. Energy 2011, 36, 2611–2619. [Google Scholar] [CrossRef]
- 3DR. Pixhawk Autopilot, Quick Start Guide. 2014. Available online: https://goo.gl/lhi0jx (accessed on 1 August 2016). [Google Scholar]
- Hardkernel Co., LTD. Odroid Platforms, ODROID-C2. 2013. Available online: http://goo.gl/8nQVKO (accessed on 1 August 2016).
- Control, Q. MAVLink Micro Air Vehicle Communication Protocol. 2016. Available online: http://qgroundcontrol.org/mavlink/start (accessed on 15 September 2016). [Google Scholar]
- Meier, L. Mavconn- Micro Air Vehicle Middleware. 2014. Available online: http://goo.gl/P82kbG (accessed on 15 September 2016). [Google Scholar]
- Pixhawk, Computer Vision on Autonomous Aerial Robots. MAVCONN- MICRO AIR VEHICLE MIDDLEWARE. 2014. Available online: http://goo.gl/P82kbG (accessed on 15 September 2016). [Google Scholar]
- Tar, K. Some statistical characteristics of monthly average wind speed at various heights. Renew. Sustain. Energy Rev. 2008, 12, 1712–1724. [Google Scholar] [CrossRef]
- Passner, J.; Knapp, I.; Ding, Y. Using Wrf-Arw Data to Forecast Turbulence at Small Scales. In Proceedings of the 13th Conference on Aviation, Range, and Aerospace Meteorology, Waltham, MA, USA, 17–20 April 2007; Volume 13.
- Dynamics, U. AeroSim Blockset Version 1.01 User’s Guide. Available online: https://goo.gl/gWNWhC (accessed on 5 December 2016).
- Team, A.D. SITL Simulator (Software in the Loop). 2016. Available online: https://goo.gl/thkBTu (accessed on 18 November 2016). [Google Scholar]
- JDrones. Digital Airspeed Sensor. 2016. Available online: https://goo.gl/1T73k2 (accessed on 1 August 2016). [Google Scholar]
CPU | Amlogic S905 SoC, Cortex-A53 2 GHz, 64 bit ARMv8 Architecture @28 nm |
RAM | 2 GB 32 bit DDR3 912 MHz |
Flash Storage | Micro-SD UHS-1 @83MHz/SDR50, eMMC5.0 storage option |
ADC | 10 bit SAR 2 channels |
Size | 85 mm × 56 mm (3.35 inch × 2.2 inch) |
Weight | 40 g (1.41 oz) |
Function | Publishing Rate | Priority |
---|---|---|
APM Comm Request | 2 | 1 |
Wind Estimation | 1 | 1 |
Wind Prediction | 0.25 * | 2 |
Database Management | 0.2 | 3 |
Database Search | 0.25 | 2 |
Alert Generation | 0.1 | 4 |
Alert Type | Data Type | Priority Value |
---|---|---|
Feature Is Present | Boolean | 1 |
Wind Shear Detected | Boolean | 1 |
Discrete Gust Detected | Boolean | 2 |
Continous Gust Detected | Boolean | 3 |
Prediction Time Window | Integer | 2 |
Uncertainty Level | Double | 4 |
Component | Specification |
---|---|
CPU | Intel Core i7-5500U CPU 2.40 GHz × 4 |
RAM | 15.6 GiB |
Graphics | Intel HD Graphics 5500 (Broadwell GT2) |
OS Type | 64-Bit |
OS | Ubuntu 16.04 lts |
Parameter | Value |
---|---|
Trim airspeed | 25 m/s |
Trim altitude | 150 m |
Trim bank angle | |
Fuel mass | 2 kg |
Flap setting | 0 |
Parameter | Value |
---|---|
Wing Span | 2122 |
Wing Area | 80 |
Max Payload | 2 |
Center of Gravity | 435 away from nose |
Flight 1 | Flight 2 | Flight 3 | Flight 4 | |
---|---|---|---|---|
Duration | 521 s | 315 s | 631 s | 749 s |
Distance Traveled | 5.1 km | 3.7 km | 6.3 km | 7.4 km |
Maximum Altitude | 179 m | 125 m | 134 m | 146 m |
Scenario | |||
---|---|---|---|
1 | 4.24 | ||
2 | 1.1579 & 3.1425 | 0.4531 & 1.6671 | 0.5314 & 0.6628 |
3 | 2.9820 | ||
4 | 5.7425 |
Flight | ||
---|---|---|
1 | m/s | m/s |
2 | m/s | m/s |
3 | m/s | m/s |
4 | m/s | m/s |
© 2016 by the authors; licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC-BY) license (http://creativecommons.org/licenses/by/4.0/).
Share and Cite
Rodriguez Salazar, L.; Cobano, J.A.; Ollero, A. Small UAS-Based Wind Feature Identification System Part 1: Integration and Validation. Sensors 2017, 17, 8. https://doi.org/10.3390/s17010008
Rodriguez Salazar L, Cobano JA, Ollero A. Small UAS-Based Wind Feature Identification System Part 1: Integration and Validation. Sensors. 2017; 17(1):8. https://doi.org/10.3390/s17010008
Chicago/Turabian StyleRodriguez Salazar, Leopoldo, Jose A. Cobano, and Anibal Ollero. 2017. "Small UAS-Based Wind Feature Identification System Part 1: Integration and Validation" Sensors 17, no. 1: 8. https://doi.org/10.3390/s17010008