@jjlmoya/utils-drones 1.36.0 → 1.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +17 -5
- package/scripts/postinstall.mjs +2 -4
- package/src/category/index.ts +4 -0
- package/src/components/ProductionBreadcrumb.astro +134 -0
- package/src/components/ProductionStructuredData.astro +46 -0
- package/src/components/ProductionWidget.astro +182 -0
- package/src/entries.ts +4 -0
- package/src/i18n/header-ui.ts +15 -0
- package/src/i18n/language-ui.ts +9 -0
- package/src/i18n/languages.ts +24 -0
- package/src/identity/brands.ts +5 -0
- package/src/layouts/ProductionCategoryPage.astro +184 -0
- package/src/layouts/ProductionPage.astro +218 -0
- package/src/layouts/ProductionUtilityPage.astro +283 -0
- package/src/mfe/assets.ts +39 -0
- package/src/mfe/category-ui.ts +34 -0
- package/src/mfe/manifest.ts +45 -0
- package/src/mfe/routes.ts +50 -0
- package/src/pages/[locale]/[utilities]/[categories]/[category]/[slug]/manifest.json.ts +49 -0
- package/src/pages/[locale]/[utilities]/[categories]/[category]/[slug].astro +100 -0
- package/src/pages/[locale]/[utilities]/[categories]/[category].astro +44 -0
- package/src/pages/index.astro +3 -4
- package/src/pages/utilidades/[slug]/manifest.json.ts +28 -0
- package/src/pages/utilidades/[slug].astro +90 -0
- package/src/pages/utilidades/categorias/[category].astro +38 -0
- package/src/tests/diacritics_density.test.ts +1 -1
- package/src/tests/inverted_punctuation.test.ts +1 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/mfe_cache_contract.test.ts +11 -0
- package/src/tests/mfe_manifest.test.ts +28 -0
- package/src/tests/registry_contract.test.ts +67 -0
- package/src/tests/script_density.test.ts +1 -1
- package/src/tests/seo_length.test.ts +1 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tests/translation_copy.test.ts +2 -2
- package/src/tool/antenna-length-calculator/index.ts +1 -0
- package/src/tool/drone-flight-time/index.ts +1 -0
- package/src/tool/drone-mission-battery-reserve-planner/bibliography.astro +6 -0
- package/src/tool/drone-mission-battery-reserve-planner/bibliography.ts +7 -0
- package/src/tool/drone-mission-battery-reserve-planner/component.astro +229 -0
- package/src/tool/drone-mission-battery-reserve-planner/controller.ts +124 -0
- package/src/tool/drone-mission-battery-reserve-planner/dom-views.ts +114 -0
- package/src/tool/drone-mission-battery-reserve-planner/drone-mission-battery-reserve-planner.css +392 -0
- package/src/tool/drone-mission-battery-reserve-planner/entry.ts +27 -0
- package/src/tool/drone-mission-battery-reserve-planner/evaluator.ts +23 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/de.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/en.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/es.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/fr.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/id.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/it.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/ja.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/ko.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/nl.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/pl.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/pt.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/ru.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/sv.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/tr.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/i18n/zh.ts +223 -0
- package/src/tool/drone-mission-battery-reserve-planner/index.ts +11 -0
- package/src/tool/drone-mission-battery-reserve-planner/logic.test.ts +94 -0
- package/src/tool/drone-mission-battery-reserve-planner/logic.ts +203 -0
- package/src/tool/drone-mission-battery-reserve-planner/seo.astro +15 -0
- package/src/tool/drone-mission-battery-reserve-planner/storage.ts +59 -0
- package/src/tool/drone-mission-battery-reserve-planner/ui.ts +78 -0
- package/src/tool/gps-coordinates-converter/index.ts +1 -0
- package/src/tools.ts +4 -0
- package/src/types.ts +4 -6
- package/src/worker.ts +25 -0
- package/src/pages/[locale]/[slug].astro +0 -161
- package/src/pages/[locale].astro +0 -251
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import type { DroneMissionBatteryReservePlannerLocaleContent } from '../entry';
|
|
2
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
const slug = 'drone-mission-battery-reserve-planner';
|
|
6
|
+
const title = 'Drone Mission Battery Reserve Planner';
|
|
7
|
+
const description = 'Calculate safe return to home energy margins, aerodynamic wind power penalties, target hover duration and non-linear battery depletion for UAV operations.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Why does flying against a headwind consume more power than just flying longer?',
|
|
12
|
+
answer: 'Flying into a headwind requires a steeper pitch angle to overcome aerodynamic drag and maintain groundspeed, increasing total motor thrust and current draw non-linearly.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'How is target area hover time factored into the point of no return?',
|
|
16
|
+
answer: 'Operational hover time at the target area subtracts energy directly from the usable battery capacity before calculating the maximum remaining round-trip transit distance.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'What causes LiPo voltage sag under heavy load?',
|
|
20
|
+
answer: 'High current draw increases internal resistance losses within lithium cells, reducing effective usable Watt-hours compared to nominal capacity.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToSteps = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Enter Battery & Propulsion Specs',
|
|
27
|
+
text: 'Input battery capacity, nominal voltage and average hover cruise current draw.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Set Mission Distance & Target Hover Time',
|
|
31
|
+
text: 'Specify one-way leg distance and expected operational hover duration over the target zone.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Configure Wind Speed & Vector',
|
|
35
|
+
text: 'Select ambient wind speed and heading relative to the outbound leg to apply aerodynamic power penalties.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Review Non-Linear Telemetry & Safe Radius',
|
|
39
|
+
text: 'Analyze the calculated point of no return, leg-by-leg power draw, voltage sag loss and touchdown battery level.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const schemas: DroneMissionBatteryReservePlannerLocaleContent['schemas'] = [
|
|
44
|
+
{
|
|
45
|
+
'@context': 'https://schema.org',
|
|
46
|
+
'@type': 'FAQPage',
|
|
47
|
+
mainEntity: faqItems.map((item) => ({
|
|
48
|
+
'@type': 'Question',
|
|
49
|
+
name: item.question,
|
|
50
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
51
|
+
})),
|
|
52
|
+
} as WithContext<FAQPage>,
|
|
53
|
+
{
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'HowTo',
|
|
56
|
+
name: title,
|
|
57
|
+
description: description,
|
|
58
|
+
step: howToSteps.map((step, i) => ({
|
|
59
|
+
'@type': 'HowToStep',
|
|
60
|
+
position: i + 1,
|
|
61
|
+
name: step.name,
|
|
62
|
+
text: step.text,
|
|
63
|
+
})),
|
|
64
|
+
} as WithContext<HowTo>,
|
|
65
|
+
{
|
|
66
|
+
'@context': 'https://schema.org',
|
|
67
|
+
'@type': 'SoftwareApplication',
|
|
68
|
+
name: title,
|
|
69
|
+
description: description,
|
|
70
|
+
applicationCategory: 'UtilityApplication',
|
|
71
|
+
operatingSystem: 'Web',
|
|
72
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
73
|
+
} as WithContext<SoftwareApplication>,
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
export const content: DroneMissionBatteryReservePlannerLocaleContent = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui: {
|
|
81
|
+
title: 'Drone Mission Battery Reserve Planner',
|
|
82
|
+
subtitle: 'Calculate safe return to home energy margins, wind legs and mission radii',
|
|
83
|
+
description: 'Plan UAV flight missions with precision battery reserve calculations, headwind adjustments and point of no return safety thresholds.',
|
|
84
|
+
sections: {
|
|
85
|
+
batteryPropulsion: '1. Battery & Propulsion',
|
|
86
|
+
flightAtmosphere: '2. Flight Profile & Atmosphere',
|
|
87
|
+
},
|
|
88
|
+
inputs: {
|
|
89
|
+
unitSystemLabel: 'Unit System',
|
|
90
|
+
metricLabel: 'Metric',
|
|
91
|
+
imperialLabel: 'Imperial',
|
|
92
|
+
presetLabel: 'Quick Mission Presets',
|
|
93
|
+
batteryCapacityLabel: 'Battery Capacity',
|
|
94
|
+
batteryVoltageLabel: 'Nominal Voltage',
|
|
95
|
+
averageCurrentLabel: 'Average Hover Cruise Current',
|
|
96
|
+
cruiseSpeedLabel: 'Airspeed Cruise Speed',
|
|
97
|
+
oneWayDistanceLabel: 'One-Way Transit Distance',
|
|
98
|
+
targetHoverTimeLabel: 'Target Area Operational Duration',
|
|
99
|
+
windSpeedLabel: 'Ambient Wind Speed',
|
|
100
|
+
windDirectionLabel: 'Wind Heading Relative to Outbound',
|
|
101
|
+
windHeadwindLabel: 'Headwind Outbound',
|
|
102
|
+
windTailwindLabel: 'Tailwind Outbound',
|
|
103
|
+
windCrosswindLabel: 'Crosswind',
|
|
104
|
+
reservePolicyLabel: 'Safety Reserve Buffer',
|
|
105
|
+
},
|
|
106
|
+
presets: {
|
|
107
|
+
mappingSurvey: 'Orthophoto Mapping Survey',
|
|
108
|
+
fpvRecon: 'FPV Long Range Recon',
|
|
109
|
+
cinematicInspection: 'Cinematic Structural Inspection',
|
|
110
|
+
microRecon: 'Micro Scout Drone Mission',
|
|
111
|
+
surveyMeta: 'survey',
|
|
112
|
+
scoutMeta: 'scout',
|
|
113
|
+
hoverMeta: 'hover',
|
|
114
|
+
},
|
|
115
|
+
results: {
|
|
116
|
+
totalCapacityEnergy: 'Total Energy Capacity',
|
|
117
|
+
usableEnergy: 'Usable Mission Energy',
|
|
118
|
+
reserveEnergyBuffer: 'Reserve Buffer Energy',
|
|
119
|
+
totalAutonomyTime: 'Total Flight Autonomy',
|
|
120
|
+
maxSafeMissionRadius: 'Point of No Return Radius',
|
|
121
|
+
outboundLegTime: 'Outbound Leg Duration',
|
|
122
|
+
targetHoverTime: 'Target Hover Duration',
|
|
123
|
+
returnLegTime: 'Return Leg Duration',
|
|
124
|
+
totalMissionTime: 'Total Transit Duration',
|
|
125
|
+
remainingEnergyLanding: 'Estimated Touchdown Battery Level',
|
|
126
|
+
feasibilityStatus: 'Mission Feasibility Assessment',
|
|
127
|
+
voltageSagSubLabel: 'Voltage sag',
|
|
128
|
+
maxRadiusSubLabel: 'Max safe radius w/ target hover',
|
|
129
|
+
powerSubLabel: 'Power',
|
|
130
|
+
},
|
|
131
|
+
statusBadges: {
|
|
132
|
+
optimalTitle: 'OPTIMAL ENERGY RESERVE MARGIN',
|
|
133
|
+
optimalSubtitle: 'Safe flight envelope with sufficient landing reserve margin',
|
|
134
|
+
tightTitle: 'TIGHT ENERGY RESERVE MARGIN',
|
|
135
|
+
tightSubtitle: 'Low landing reserve margin, monitor battery voltage closely',
|
|
136
|
+
criticalTitle: 'CRITICAL ENERGY WARNING',
|
|
137
|
+
criticalSubtitle: 'Battery reserve breached, initiate Return to Home immediately',
|
|
138
|
+
exceededTitle: 'MISSION EXCEEDS SAFE BATTERY CAPACITY',
|
|
139
|
+
exceededSubtitle: 'Insufficient battery energy to complete mission and land safely',
|
|
140
|
+
},
|
|
141
|
+
chart: {
|
|
142
|
+
batteryProfileTitle: 'NON-LINEAR ENERGY ALLOCATION PROFILE',
|
|
143
|
+
modelTitle: 'AERODYNAMIC POWER & WIND MODEL',
|
|
144
|
+
windLabel: 'Wind',
|
|
145
|
+
homeNode: 'HOME',
|
|
146
|
+
targetNode: 'TARGET',
|
|
147
|
+
landNode: 'LAND',
|
|
148
|
+
launchPadLabel: 'Launch Pad',
|
|
149
|
+
surveyHoverLabel: 'Survey Hover',
|
|
150
|
+
safeRadiusLabel: 'Safe Radius',
|
|
151
|
+
outboundSegment: 'Outbound',
|
|
152
|
+
targetSegment: 'Hover',
|
|
153
|
+
returnSegment: 'Return',
|
|
154
|
+
reserveSegment: 'Reserve',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
seo: [
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Aerodynamic Power Penalties in Headwind Operations',
|
|
161
|
+
level: 2,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'Flight safety in unmanned aerial vehicle operations relies heavily on non-linear aerodynamic physics. Flying outbound into a headwind requires a steeper pitch angle to overcome aerodynamic drag and maintain groundspeed. This increases motor thrust requirements and current draw exponentially, meaning an outbound headwind leg consumes substantially more Watt-hours per minute than a calm or tailwind return flight.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Our planner dynamically computes leg-by-leg power variations, accounting for increased motor loading during headwinds and power reduction during tailwind legs.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'Factoring Target Area Hover & Survey Duration',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Drones operate over target areas for mapping, photogrammetry, cinematic filming, or inspection tasks. Spending ten minutes hovering over a target area consumes a fixed slice of battery energy, directly reducing the maximum safe transit radius available for outbound and return legs. The point of no return formula subtracts target operational energy prior to solving for transit limits.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'Input planned survey hover duration before calculating mission boundaries.',
|
|
184
|
+
'Account for headwind power spikes on the outbound leg when flying against prevailing winds.',
|
|
185
|
+
'Monitor battery cell voltage sag under load rather than relying solely on open-circuit voltage.',
|
|
186
|
+
'Initiate Return to Home immediately upon reaching your pre-calculated reserve buffer.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'tip',
|
|
191
|
+
title: 'LiPo and LiHV Voltage Sag Warning',
|
|
192
|
+
html: 'High current draw increases internal resistance heat losses inside lithium polymer cells, resulting in voltage sag. High C-rate discharge reduces total usable Watt-hours by five to twelve percent compared to static nominal ratings.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'UAV Battery Reserve Calculation Formulas',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'table',
|
|
201
|
+
headers: ['Parameter', 'Formula / Model', 'Unit'],
|
|
202
|
+
rows: [
|
|
203
|
+
['Gross Energy Capacity', 'Capacity (mAh) x Voltage (V) / 1000', 'Watt-hours (Wh)'],
|
|
204
|
+
['Voltage Sag Loss', 'Gross Energy x Sag Factor (C-Rate Dependent)', 'Watt-hours (Wh)'],
|
|
205
|
+
['Headwind Power Draw', 'Base Power x (1 + 0.65 x WindRatio)^1.3', 'Watts (W)'],
|
|
206
|
+
['Max Safe Radius', '(Usable Energy - Hover Energy) / EnergyPerKmRoundTrip', 'Kilometers (km)'],
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'title',
|
|
211
|
+
text: 'Best Practices for UAV Flight Planning and Mission Execution',
|
|
212
|
+
level: 2,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'paragraph',
|
|
216
|
+
html: 'Always cross-reference automated telemetry logs with pre-flight calculations. Maintaining a detailed log of battery discharge curves, internal resistance readings, and ambient wind conditions ensures high operational safety across all commercial UAV missions.',
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
faq: faqItems,
|
|
220
|
+
bibliography,
|
|
221
|
+
howTo: howToSteps,
|
|
222
|
+
schemas,
|
|
223
|
+
};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import type { DroneMissionBatteryReservePlannerLocaleContent } from '../entry';
|
|
2
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
const slug = 'planificador-reserva-bateria-mision-drone';
|
|
6
|
+
const title = 'Planificador de Reserva de Batería para Misiones de Drones';
|
|
7
|
+
const description = 'Calcula márgenes de seguridad de batería para regreso a casa, penalizaciones de viento y radio máximo de vuelo para misiones UAV.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: '¿Por qué volar con viento en contra consume más energía de la esperada?',
|
|
12
|
+
answer: 'El viento en contra exige un mayor ángulo de inclinación para vencer la resistencia aerodinámica y mantener la velocidad terrestre, lo que dispara exponencialmente el empuje del motor y el consumo de corriente.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '¿Cómo influye el tiempo de trabajo sobre el objetivo en el punto de no retorno?',
|
|
16
|
+
answer: 'El tiempo en zona de misión consume una cantidad fija de energía de la batería, reduciendo directamente la energía disponible para el vuelo de ida y vuelta.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '¿Qué provoca la caída de tensión bajo carga en baterías LiPo?',
|
|
20
|
+
answer: 'El alto consumo de corriente incrementa las pérdidas por resistencia interna en las celdas de litio, reduciendo los vatios hora útiles respecto a la capacidad nominal.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToSteps = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Introduce las especificaciones de batería y propulsión',
|
|
27
|
+
text: 'Indica la capacidad en miliamperios hora, el voltaje nominal y el consumo medio en amperios.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Define la distancia y el tiempo sobre el objetivo',
|
|
31
|
+
text: 'Establece la distancia de ida y el tiempo estimado de sobrevuelo e inspección sobre la zona objetivo.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Configura la velocidad y rumbo del viento',
|
|
35
|
+
text: 'Selecciona la velocidad del viento y su dirección respecto al tramo de ida para aplicar la penalización aerodinámica.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Analiza el radio seguro y la telemetría',
|
|
39
|
+
text: 'Examina el punto de no retorno calculado, la potencia consumida por tramo y el porcentaje de batería al aterrizar.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const schemas: DroneMissionBatteryReservePlannerLocaleContent['schemas'] = [
|
|
44
|
+
{
|
|
45
|
+
'@context': 'https://schema.org',
|
|
46
|
+
'@type': 'FAQPage',
|
|
47
|
+
mainEntity: faqItems.map((item) => ({
|
|
48
|
+
'@type': 'Question',
|
|
49
|
+
name: item.question,
|
|
50
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
51
|
+
})),
|
|
52
|
+
} as WithContext<FAQPage>,
|
|
53
|
+
{
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'HowTo',
|
|
56
|
+
name: title,
|
|
57
|
+
description: description,
|
|
58
|
+
step: howToSteps.map((step, i) => ({
|
|
59
|
+
'@type': 'HowToStep',
|
|
60
|
+
position: i + 1,
|
|
61
|
+
name: step.name,
|
|
62
|
+
text: step.text,
|
|
63
|
+
})),
|
|
64
|
+
} as WithContext<HowTo>,
|
|
65
|
+
{
|
|
66
|
+
'@context': 'https://schema.org',
|
|
67
|
+
'@type': 'SoftwareApplication',
|
|
68
|
+
name: title,
|
|
69
|
+
description: description,
|
|
70
|
+
applicationCategory: 'UtilityApplication',
|
|
71
|
+
operatingSystem: 'Web',
|
|
72
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
73
|
+
} as WithContext<SoftwareApplication>,
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
export const content: DroneMissionBatteryReservePlannerLocaleContent = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui: {
|
|
81
|
+
title: 'Planificador de Reserva de Batería para Misiones de Drones',
|
|
82
|
+
subtitle: 'Calcula márgenes de seguridad para regreso a casa, impacto del viento y radios de misión',
|
|
83
|
+
description: 'Planifica misiones de vuelo UAV con cálculo preciso de reservas de batería, ajustes de viento en contra y umbrales de punto de no retorno.',
|
|
84
|
+
sections: {
|
|
85
|
+
batteryPropulsion: '1. Batería y Propulsión',
|
|
86
|
+
flightAtmosphere: '2. Perfil de Vuelo y Atmósfera',
|
|
87
|
+
},
|
|
88
|
+
inputs: {
|
|
89
|
+
unitSystemLabel: 'Sistema de Unidades',
|
|
90
|
+
metricLabel: 'Métrico',
|
|
91
|
+
imperialLabel: 'Imperial',
|
|
92
|
+
presetLabel: 'Presets Rápidos de Misión',
|
|
93
|
+
batteryCapacityLabel: 'Capacidad de Batería',
|
|
94
|
+
batteryVoltageLabel: 'Voltaje Nominal',
|
|
95
|
+
averageCurrentLabel: 'Consumo Medio en Crucero',
|
|
96
|
+
cruiseSpeedLabel: 'Velocidad del Aire en Crucero',
|
|
97
|
+
oneWayDistanceLabel: 'Distancia de Ida al Objetivo',
|
|
98
|
+
targetHoverTimeLabel: 'Tiempo de Sobrevuelo en Objetivo',
|
|
99
|
+
windSpeedLabel: 'Velocidad del Viento',
|
|
100
|
+
windDirectionLabel: 'Rumbo del Viento Respecto a la Ida',
|
|
101
|
+
windHeadwindLabel: 'Viento en Contra en Ida',
|
|
102
|
+
windTailwindLabel: 'Viento a Favor en Ida',
|
|
103
|
+
windCrosswindLabel: 'Viento Cruzado',
|
|
104
|
+
reservePolicyLabel: 'Buffer de Reserva de Seguridad',
|
|
105
|
+
},
|
|
106
|
+
presets: {
|
|
107
|
+
mappingSurvey: 'Fotogrametría y Mapeo',
|
|
108
|
+
fpvRecon: 'Reconocimiento FPV Long Range',
|
|
109
|
+
cinematicInspection: 'Inspección Estructural Cinematográfica',
|
|
110
|
+
microRecon: 'Misión de Exploración Micro Drone',
|
|
111
|
+
surveyMeta: 'mapeo',
|
|
112
|
+
scoutMeta: 'reconocimiento',
|
|
113
|
+
hoverMeta: 'sobrevuelo',
|
|
114
|
+
},
|
|
115
|
+
results: {
|
|
116
|
+
totalCapacityEnergy: 'Energía Total de Capacidad',
|
|
117
|
+
usableEnergy: 'Energía Útil de Misión',
|
|
118
|
+
reserveEnergyBuffer: 'Buffer de Energía de Reserva',
|
|
119
|
+
totalAutonomyTime: 'Autonomía Total de Vuelo',
|
|
120
|
+
maxSafeMissionRadius: 'Radio del Punto de No Retorno',
|
|
121
|
+
outboundLegTime: 'Duración del Tramo de Ida',
|
|
122
|
+
targetHoverTime: 'Duración de Sobrevuelo en Objetivo',
|
|
123
|
+
returnLegTime: 'Duración del Tramo de Vuelta',
|
|
124
|
+
totalMissionTime: 'Duración Total de Tránsito',
|
|
125
|
+
remainingEnergyLanding: 'Nivel Estimado de Batería al Aterrizar',
|
|
126
|
+
feasibilityStatus: 'Evaluación de Viabilidad de Misión',
|
|
127
|
+
voltageSagSubLabel: 'Caída de tensión',
|
|
128
|
+
maxRadiusSubLabel: 'Radio máximo con tiempo en objetivo',
|
|
129
|
+
powerSubLabel: 'Potencia',
|
|
130
|
+
},
|
|
131
|
+
statusBadges: {
|
|
132
|
+
optimalTitle: 'MARGEN ÓPTIMO DE RESERVA DE ENERGÍA',
|
|
133
|
+
optimalSubtitle: 'Perfil seguro de vuelo con reserva suficiente al aterrizar',
|
|
134
|
+
tightTitle: 'MARGEN DE RESERVA AJUSTADO',
|
|
135
|
+
tightSubtitle: 'Reserva baja al aterrizar, monitoriza el voltaje de la batería',
|
|
136
|
+
criticalTitle: 'ALERTA CRÍTICA DE ENERGÍA',
|
|
137
|
+
criticalSubtitle: 'Reserva superada, inicia el regreso a casa inmediatamente',
|
|
138
|
+
exceededTitle: 'LA MISIÓN EXCEDE LA CAPACIDAD SEGURA',
|
|
139
|
+
exceededSubtitle: 'Energía insuficiente para completar la misión y aterrizar seguro',
|
|
140
|
+
},
|
|
141
|
+
chart: {
|
|
142
|
+
batteryProfileTitle: 'PERFIL NO LINEAL DE ASIGNACIÓN ENERGÉTICA',
|
|
143
|
+
modelTitle: 'MODELO DE POTENCIA AERODINÁMICA Y VIENTO',
|
|
144
|
+
windLabel: 'Viento',
|
|
145
|
+
homeNode: 'BASE',
|
|
146
|
+
targetNode: 'OBJETIVO',
|
|
147
|
+
landNode: 'ATERRIZAJE',
|
|
148
|
+
launchPadLabel: 'Punto de despegue',
|
|
149
|
+
surveyHoverLabel: 'Sobrevuelo en objetivo',
|
|
150
|
+
safeRadiusLabel: 'Radio seguro',
|
|
151
|
+
outboundSegment: 'Ida',
|
|
152
|
+
targetSegment: 'Sobrevuelo',
|
|
153
|
+
returnSegment: 'Vuelta',
|
|
154
|
+
reserveSegment: 'Reserva',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
seo: [
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Penalizaciones de Potencia Aerodinámica con Viento en Contra',
|
|
161
|
+
level: 2,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'La seguridad de vuelo en operaciones con vehículos aéreos no tripulados depende de leyes físicas no lineales. Volar hacia el objetivo con viento en contra requiere un mayor ángulo de inclinación para vencer la resistencia del aire y mantener la velocidad sobre el suelo. Esto incrementa exponencialmente el empuje necesario en los motores y el consumo de corriente.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Nuestro planificador evalúa dinámicamente el consumo por tramo, aplicando correcciones aerodinámicas cuando la aeronave combate ráfagas de viento frontales.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'Cálculo del Tiempo de Sobrevuelo en Zona Objetivo',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Las misiones profesionales de fotogrametría, cartografía e inspección requieren permanecer minutos sobrevolando el área de trabajo. Esta fase consume energía de forma constante antes de emprender el vuelo de regreso.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'Define el tiempo previsto en objetivo antes de calcular los límites de misión.',
|
|
184
|
+
'Anticipa los picos de potencia en ida cuando se vuela contra el viento.',
|
|
185
|
+
'Supervisa la caída de voltaje en celdas LiPo bajo carga.',
|
|
186
|
+
'Inicia el regreso tan pronto como se alcance la reserva calculada.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'tip',
|
|
191
|
+
title: 'Aviso sobre Caída de Tensión en Baterías LiPo',
|
|
192
|
+
html: 'Las corrientes elevadas provocan caídas de voltaje temporales por resistencia interna en las celdas de litio, reduciendo la energía útil total utilizable.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Formulas de Cálculo de Reserva de Batería para Drones',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'table',
|
|
201
|
+
headers: ['Parámetro', 'Fórmula o Modelo', 'Unidad'],
|
|
202
|
+
rows: [
|
|
203
|
+
['Energía Bruta', 'Capacidad (mAh) x Voltaje (V) / 1000', 'Vatios hora (Wh)'],
|
|
204
|
+
['Pérdida por Caída de Tensión', 'Energía Bruta x Factor de Sag', 'Vatios hora (Wh)'],
|
|
205
|
+
['Potencia con Viento', 'Potencia Base x (1 + 0.65 x RatioViento)^1.3', 'Vatios (W)'],
|
|
206
|
+
['Radio Seguro de Misión', '(Energía Útil - Energía Sobrevuelo) / Consumo por Km', 'Kilómetros (km)'],
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'title',
|
|
211
|
+
text: 'Buenas Prácticas en la Planificación de Vuelos UAV',
|
|
212
|
+
level: 2,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'paragraph',
|
|
216
|
+
html: 'Verifica los registros de telemetría tras cada sesión de vuelo para validar la salud de tus celdas y ajustar tus estimaciones en futuras misiones.',
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
faq: faqItems,
|
|
220
|
+
bibliography,
|
|
221
|
+
howTo: howToSteps,
|
|
222
|
+
schemas,
|
|
223
|
+
};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import type { DroneMissionBatteryReservePlannerLocaleContent } from '../entry';
|
|
2
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
const slug = 'planificateur-reserve-batterie-mission-drone';
|
|
6
|
+
const title = 'Planificateur de Réserve de Batterie pour Mission de Drone';
|
|
7
|
+
const description = 'Calculez les marges de sécurité de batterie pour retour à la base, les pénalités de vent de face et le rayon maximal de vol UAV.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Pourquoi le vol face au vent consomme-t-il plus d énergie?',
|
|
12
|
+
answer: 'Voler face au vent exige un angle d inclinaison plus prononcé pour vaincre la traînée aérodynamique et maintenir la vitesse sol, ce qui augmente le courant moteur de manière non linéaire.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Comment le temps de vol stationnaire sur la cible affecte-t-il le point de non-retour?',
|
|
16
|
+
answer: 'Le temps passé sur la zone de mission consomme directement l énergie utile de la batterie, réduisant ainsi la distance maximale franchissable aller-retour.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Quelle est la cause de la chute de tension sous charge des batteries LiPo?',
|
|
20
|
+
answer: 'Un appel de courant élevé augmente les pertes par résistance interne dans les cellules lithium, réduisant les wattheures réellement exploitables.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToSteps = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Saisir les caractéristiques de batterie et de propulsion',
|
|
27
|
+
text: 'Entrez la capacité en mAh, la tension nominale et la consommation moyenne en ampères.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Définir la distance et le temps de vol stationnaire',
|
|
31
|
+
text: 'Spécifiez la distance aller simple et la durée d opération sur zone.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Configurer la vitesse et le vecteur du vent',
|
|
35
|
+
text: 'Sélectionnez la vitesse du vent et son orientation par rapport à l aller.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Analyser le rayon de sécurité et la télémétrie',
|
|
39
|
+
text: 'Examinez le point de non-retour calculé, la puissance par segment et l énergie restante à l atterrissage.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const schemas: DroneMissionBatteryReservePlannerLocaleContent['schemas'] = [
|
|
44
|
+
{
|
|
45
|
+
'@context': 'https://schema.org',
|
|
46
|
+
'@type': 'FAQPage',
|
|
47
|
+
mainEntity: faqItems.map((item) => ({
|
|
48
|
+
'@type': 'Question',
|
|
49
|
+
name: item.question,
|
|
50
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
51
|
+
})),
|
|
52
|
+
} as WithContext<FAQPage>,
|
|
53
|
+
{
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'HowTo',
|
|
56
|
+
name: title,
|
|
57
|
+
description: description,
|
|
58
|
+
step: howToSteps.map((step, i) => ({
|
|
59
|
+
'@type': 'HowToStep',
|
|
60
|
+
position: i + 1,
|
|
61
|
+
name: step.name,
|
|
62
|
+
text: step.text,
|
|
63
|
+
})),
|
|
64
|
+
} as WithContext<HowTo>,
|
|
65
|
+
{
|
|
66
|
+
'@context': 'https://schema.org',
|
|
67
|
+
'@type': 'SoftwareApplication',
|
|
68
|
+
name: title,
|
|
69
|
+
description: description,
|
|
70
|
+
applicationCategory: 'UtilityApplication',
|
|
71
|
+
operatingSystem: 'Web',
|
|
72
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
73
|
+
} as WithContext<SoftwareApplication>,
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
export const content: DroneMissionBatteryReservePlannerLocaleContent = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui: {
|
|
81
|
+
title: 'Planificateur de Réserve de Batterie pour Mission de Drone',
|
|
82
|
+
subtitle: 'Calculez les marges de sécurité pour retour à la base et les rayons de mission',
|
|
83
|
+
description: 'Planifiez vos missions UAV avec calcul précis des réserves de batterie et corrections de vent.',
|
|
84
|
+
sections: {
|
|
85
|
+
batteryPropulsion: '1. Batterie et Propulsion',
|
|
86
|
+
flightAtmosphere: '2. Profil de Vol et Atmosphère',
|
|
87
|
+
},
|
|
88
|
+
inputs: {
|
|
89
|
+
unitSystemLabel: 'Système d Unités',
|
|
90
|
+
metricLabel: 'Métrique',
|
|
91
|
+
imperialLabel: 'Impérial',
|
|
92
|
+
presetLabel: 'Préréglages Rapides de Mission',
|
|
93
|
+
batteryCapacityLabel: 'Capacité de Batterie',
|
|
94
|
+
batteryVoltageLabel: 'Tension Nominale',
|
|
95
|
+
averageCurrentLabel: 'Courant Moyen en Croisière',
|
|
96
|
+
cruiseSpeedLabel: 'Vitesse Air en Croisière',
|
|
97
|
+
oneWayDistanceLabel: 'Distance Aller Simple',
|
|
98
|
+
targetHoverTimeLabel: 'Durée d Opération sur Zone',
|
|
99
|
+
windSpeedLabel: 'Vitesse du Vent',
|
|
100
|
+
windDirectionLabel: 'Orientation du Vent par rapport à l Aller',
|
|
101
|
+
windHeadwindLabel: 'Vent de Face à l Aller',
|
|
102
|
+
windTailwindLabel: 'Vent Arrière à l Aller',
|
|
103
|
+
windCrosswindLabel: 'Vent De Travers',
|
|
104
|
+
reservePolicyLabel: 'Buffer de Réserve de Sécurité',
|
|
105
|
+
},
|
|
106
|
+
presets: {
|
|
107
|
+
mappingSurvey: 'Cartographie et Photogrammétrie',
|
|
108
|
+
fpvRecon: 'Reconnaissance FPV Longue Portée',
|
|
109
|
+
cinematicInspection: 'Inspection Structurale Cinématique',
|
|
110
|
+
microRecon: 'Mission Micro Drone',
|
|
111
|
+
surveyMeta: 'cartographie',
|
|
112
|
+
scoutMeta: 'reconnaissance',
|
|
113
|
+
hoverMeta: 'stationnaire',
|
|
114
|
+
},
|
|
115
|
+
results: {
|
|
116
|
+
totalCapacityEnergy: 'Énergie Totale Brute',
|
|
117
|
+
usableEnergy: 'Énergie Utile de Mission',
|
|
118
|
+
reserveEnergyBuffer: 'Buffer d Énergie de Réserve',
|
|
119
|
+
totalAutonomyTime: 'Autonomie Totale de Vol',
|
|
120
|
+
maxSafeMissionRadius: 'Rayon du Point de Non-Retour',
|
|
121
|
+
outboundLegTime: 'Durée du Vol Aller',
|
|
122
|
+
targetHoverTime: 'Durée Stationnaire sur Cible',
|
|
123
|
+
returnLegTime: 'Durée du Vol Retour',
|
|
124
|
+
totalMissionTime: 'Durée Totale de Transit',
|
|
125
|
+
remainingEnergyLanding: 'Niveau Estimé à l Atterrissage',
|
|
126
|
+
feasibilityStatus: 'Évaluation de Faisabilité de Mission',
|
|
127
|
+
voltageSagSubLabel: 'Chute de tension',
|
|
128
|
+
maxRadiusSubLabel: 'Rayon max avec temps sur zone',
|
|
129
|
+
powerSubLabel: 'Puissance',
|
|
130
|
+
},
|
|
131
|
+
statusBadges: {
|
|
132
|
+
optimalTitle: 'MARGE DE RÉSERVE D ÉNERGIE OPTIMALE',
|
|
133
|
+
optimalSubtitle: 'Profil de vol sûr avec réserve suffisante à l atterrissage',
|
|
134
|
+
tightTitle: 'MARGE DE RÉSERVE TENDUE',
|
|
135
|
+
tightSubtitle: 'Réserve faible à l atterrissage, surveillez la tension batterie',
|
|
136
|
+
criticalTitle: 'ALERTE DE SÉCURITÉ ÉNERGIE',
|
|
137
|
+
criticalSubtitle: 'Réserve franchie, engagez le retour à la base immédiatement',
|
|
138
|
+
exceededTitle: 'LA MISSION DÉPASSE LA CAPACITÉ SÛRE',
|
|
139
|
+
exceededSubtitle: 'Énergie insuffisante pour terminer la mission et atterrir',
|
|
140
|
+
},
|
|
141
|
+
chart: {
|
|
142
|
+
batteryProfileTitle: 'PROFIL NON LINÉAIRE D ALLOCATION ÉNERGÉTIQUE',
|
|
143
|
+
modelTitle: 'MODÈLE DE PUISSANCE AÉRODYNAMIQUE ET VENT',
|
|
144
|
+
windLabel: 'Vent',
|
|
145
|
+
homeNode: 'BASE',
|
|
146
|
+
targetNode: 'CIBLE',
|
|
147
|
+
landNode: 'POSE',
|
|
148
|
+
launchPadLabel: 'Point de décollage',
|
|
149
|
+
surveyHoverLabel: 'Stationnaire sur zone',
|
|
150
|
+
safeRadiusLabel: 'Rayon sûr',
|
|
151
|
+
outboundSegment: 'Aller',
|
|
152
|
+
targetSegment: 'Stationnaire',
|
|
153
|
+
returnSegment: 'Retour',
|
|
154
|
+
reserveSegment: 'Réserve',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
seo: [
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Pénalités de Puissance Aérodynamique face au Vent',
|
|
161
|
+
level: 2,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'La sécurité des vols de drones repose sur des principes physiques non linéaires. Voler face au vent nécessite une inclinaison accrue pour surmonter la traînée et maintenir la vitesse sol. Cela augmente exponentiellement la poussée requise et la consommation de courant.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Notre outil calcule dynamiquement les variations de puissance segment par segment en fonction des conditions météorologiques.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'Prise en Compte du Temps Stationnaire sur Zone',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Les missions de cartographie et d inspection nécessitent de rester en vol stationnaire au-dessus de la cible. Cette phase consomme une énergie constante avant le vol retour.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'Définissez la durée stationnaire avant de calculer les limites de mission.',
|
|
184
|
+
'Anticipez les pics de puissance lors des trajets face au vent.',
|
|
185
|
+
'Surveillez la chute de tension sous charge des cellules LiPo.',
|
|
186
|
+
'Initiez le retour dès que la réserve calculée est atteinte.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'tip',
|
|
191
|
+
title: 'Avertissement sur la Chute de Tension LiPo',
|
|
192
|
+
html: 'Les appels de courant élevés entraînent une chute de tension temporaire liée à la résistance interne, réduisant l énergie utile exploitable.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Formules de Calcul de Réserve de Batterie UAV',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'table',
|
|
201
|
+
headers: ['Paramètre', 'Formule / Modèle', 'Unité'],
|
|
202
|
+
rows: [
|
|
203
|
+
['Énergie Brute', 'Capacité (mAh) x Tension (V) / 1000', 'Wattheures (Wh)'],
|
|
204
|
+
['Perte par Chute de Tension', 'Énergie Brute x Facteur de Sag', 'Wattheures (Wh)'],
|
|
205
|
+
['Puissance face au Vent', 'Puissance de Base x (1 + 0.65 x RatioVent)^1.3', 'Watts (W)'],
|
|
206
|
+
['Rayon de Sécurité Max', '(Énergie Utile - Énergie Stationnaire) / Consommation par Km', 'Kilomètres (km)'],
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'title',
|
|
211
|
+
text: 'Bonnes Pratiques de Planification de Vol UAV',
|
|
212
|
+
level: 2,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'paragraph',
|
|
216
|
+
html: 'Comparez toujours les données de télémétrie avec les calculs avant-vol pour garantir un niveau de sécurité optimal lors de chaque opération.',
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
faq: faqItems,
|
|
220
|
+
bibliography,
|
|
221
|
+
howTo: howToSteps,
|
|
222
|
+
schemas,
|
|
223
|
+
};
|