@jjlmoya/utils-drones 1.36.0 → 1.37.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 +1 -1
- package/src/category/index.ts +4 -0
- package/src/entries.ts +4 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- 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/tools.ts +4 -0
|
@@ -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 = '드론 임무 배터리 예비 전력 계획기';
|
|
7
|
+
const description = '드론 임무를 위한 귀환 안전 배터리 예비율, 맞바람 풍속 손실 및 최대 안전 정복 불능 지점 반경을 계산합니다.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: '맞바람 비행 시 소모 전력이 왜 급증하나요?',
|
|
12
|
+
answer: '맞바람에서는 공기 저항을 극복하고 대지 속도를 유지하기 위해 드론의 피치 각도가 커져 모터 전류 소모가 비선형적으로 증가합니다.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '목표 지역 체류 시간이 포인트 오브 노 리턴에 어떻게 반영되나요?',
|
|
16
|
+
answer: '목표 지역에서의 정지 비행 체류 시간은 배터리 에너지를 직접 소모하므로 이동 가능한 안전 왕복 반경이 줄어듭니다.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '부하 상태에서 LiPo 배터리 전압 강하가 발생하는 이유는 무엇인가요?',
|
|
20
|
+
answer: '고전류 방전 시 리튬 셀 내부 저항 손실이 증가하여 실효 사용 가능 와트시(Wh)가 감소하기 때문입니다.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToSteps = [
|
|
25
|
+
{
|
|
26
|
+
name: '배터리 및 추진 사양 입력',
|
|
27
|
+
text: '배터리 용량(mAh), 정격 전압(V) 및 평균 순항 전류(A)를 입력합니다.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: '편도 거리 및 목표 체류 시간 설정',
|
|
31
|
+
text: '목표 지점까지의 편도 거리와 현장 정지 비행 작업 시간을 지정합니다.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '풍속 및 풍향 설정',
|
|
35
|
+
text: '가는 길 대비 풍속과 풍향을 선택하여 공기역학적 전력 보정을 적용합니다.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '안전 반경 및 텔레메트리 확인',
|
|
39
|
+
text: '계산된 복귀 불능 지점, 구간별 전력 소모량 및 착륙 시 예상 배터리 잔량을 확인합니다.',
|
|
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: 'KRW' },
|
|
73
|
+
} as WithContext<SoftwareApplication>,
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
export const content: DroneMissionBatteryReservePlannerLocaleContent = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui: {
|
|
81
|
+
title: '드론 임무 배터리 예비 전력 계획기',
|
|
82
|
+
subtitle: '귀환 안전 마진, 바람 영향 및 비행 반경 계산',
|
|
83
|
+
description: '맞바람 보정 및 복귀 불능 임계값을 갖춘 정밀 드론 비행 예비 전력 계산기.',
|
|
84
|
+
sections: {
|
|
85
|
+
batteryPropulsion: '1. 배터리 및 추진 시스템',
|
|
86
|
+
flightAtmosphere: '2. 비행 프로필 및 대기',
|
|
87
|
+
},
|
|
88
|
+
inputs: {
|
|
89
|
+
unitSystemLabel: '단위계',
|
|
90
|
+
metricLabel: '미터법',
|
|
91
|
+
imperialLabel: '야드파운드법',
|
|
92
|
+
presetLabel: '빠른 임무 프리셋',
|
|
93
|
+
batteryCapacityLabel: '배터리 용량',
|
|
94
|
+
batteryVoltageLabel: '정격 전압',
|
|
95
|
+
averageCurrentLabel: '평균 순항 전류',
|
|
96
|
+
cruiseSpeedLabel: '대공 순항 속도',
|
|
97
|
+
oneWayDistanceLabel: '편도 목표 거리',
|
|
98
|
+
targetHoverTimeLabel: '목표 지역 체류 시간',
|
|
99
|
+
windSpeedLabel: '풍속',
|
|
100
|
+
windDirectionLabel: '가는 길 대비 풍향',
|
|
101
|
+
windHeadwindLabel: '가는 길 맞바람',
|
|
102
|
+
windTailwindLabel: '가는 길 뒷바람',
|
|
103
|
+
windCrosswindLabel: '측풍',
|
|
104
|
+
reservePolicyLabel: '안전 예비 마진',
|
|
105
|
+
},
|
|
106
|
+
presets: {
|
|
107
|
+
mappingSurvey: '측량 및 매핑',
|
|
108
|
+
fpvRecon: 'FPV 장거리 정찰',
|
|
109
|
+
cinematicInspection: '구조물 정밀 점검',
|
|
110
|
+
microRecon: '마이크로 드론 정찰',
|
|
111
|
+
surveyMeta: '측량',
|
|
112
|
+
scoutMeta: '정찰',
|
|
113
|
+
hoverMeta: '체류',
|
|
114
|
+
},
|
|
115
|
+
results: {
|
|
116
|
+
totalCapacityEnergy: '총 에너지 용량',
|
|
117
|
+
usableEnergy: '임무 사용 가능 에너지',
|
|
118
|
+
reserveEnergyBuffer: '안전 예비 에너지 버퍼',
|
|
119
|
+
totalAutonomyTime: '총 비행 가능 시간',
|
|
120
|
+
maxSafeMissionRadius: '복귀 불능 지점 반경',
|
|
121
|
+
outboundLegTime: '가는 길 비행 시간',
|
|
122
|
+
targetHoverTime: '목표 지역 체류 시간',
|
|
123
|
+
returnLegTime: '오는 길 비행 시간',
|
|
124
|
+
totalMissionTime: '총 이동 시간',
|
|
125
|
+
remainingEnergyLanding: '착륙 시 예상 배터리 잔량',
|
|
126
|
+
feasibilityStatus: '임무 수행 가능성 평가',
|
|
127
|
+
voltageSagSubLabel: '전압 강하 손실',
|
|
128
|
+
maxRadiusSubLabel: '체류 시간 고려 최대 안전 반경',
|
|
129
|
+
powerSubLabel: '전력',
|
|
130
|
+
},
|
|
131
|
+
statusBadges: {
|
|
132
|
+
optimalTitle: '최적 예비 전력 마진',
|
|
133
|
+
optimalSubtitle: '충분한 착륙 예비 전력을 갖춘 안전 비행 영역',
|
|
134
|
+
tightTitle: '예비 전력 부족 경고',
|
|
135
|
+
tightSubtitle: '착륙 예비 전력이 부족합니다. 전압 강하에 주의하세요',
|
|
136
|
+
criticalTitle: '비상 에너지 경보 발령',
|
|
137
|
+
criticalSubtitle: '예비 전력을 초과했습니다. 즉시 귀환을 시작하세요',
|
|
138
|
+
exceededTitle: '안전 용량 초과 임무',
|
|
139
|
+
exceededSubtitle: '안전하게 착륙하기 위한 배터리 전력이 부족합니다',
|
|
140
|
+
},
|
|
141
|
+
chart: {
|
|
142
|
+
batteryProfileTitle: '비선형 배분 에너지 프로필',
|
|
143
|
+
modelTitle: '공기역학 파워 및 풍속 모델',
|
|
144
|
+
windLabel: '풍속',
|
|
145
|
+
homeNode: '기지',
|
|
146
|
+
targetNode: '목표',
|
|
147
|
+
landNode: '착륙',
|
|
148
|
+
launchPadLabel: '이륙 지점',
|
|
149
|
+
surveyHoverLabel: '목표 체류',
|
|
150
|
+
safeRadiusLabel: '안전 반경',
|
|
151
|
+
outboundSegment: '가는 길 비행',
|
|
152
|
+
targetSegment: '목표 체류',
|
|
153
|
+
returnSegment: '오는 길 비행',
|
|
154
|
+
reserveSegment: '예비 전력',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
seo: [
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: '맞바람 비행 시 공기역학적 전력 손실',
|
|
161
|
+
level: 2,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: '무인 항공기의 비행 안전은 비선형 공기역학 법칙에 기반합니다. 맞바람 상황에서의 비행은 전진 속도를 유지하기 위해 기체 기울기가 커져 모터 소모 전력이 크게 증가합니다.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: '계획기는 풍속과 풍향 조건에 따라 각 비행 구간의 소모 전력을 동적으로 계산합니다.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: '목표 지역 체류 시간 고려',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: '측량 및 점검 임무에서는 현장 상공에서의 정지 비행이 필요합니다. 이 에너지 소모량은 복귀 가능한 최대 반경을 계산하기 전에 차감됩니다.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'임무 한계를 계산하기 전에 목표 체류 시간을 지정하세요.',
|
|
184
|
+
'맞바람 구간에서의 전력 급증 현상을 고려하세요.',
|
|
185
|
+
'고부하 시 LiPo 셀의 전압 강하를 추적하세요.',
|
|
186
|
+
'설정한 예비 기준선에 도달하면 즉시 귀환을 시작하세요.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'tip',
|
|
191
|
+
title: 'LiPo 배터리 전압 강하 경고',
|
|
192
|
+
html: '고전류 방전은 내부 저항으로 인한 전압 강하를 유발하여 실제 사용 가능한 와트시 에너지를 줄입니다.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: '드론 배터리 예비 전력 계산 공식',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'table',
|
|
201
|
+
headers: ['파라미터', '계산 모델', '단위'],
|
|
202
|
+
rows: [
|
|
203
|
+
['총 에너지 용량', '용량 (mAh) x 전압 (V) / 1000', '와트시 (Wh)'],
|
|
204
|
+
['전압 강하 손실', '총 에너지 x 전압강하 계수', '와트시 (Wh)'],
|
|
205
|
+
['맞바람 소모 전력', '기본 전력 x (1 + 0.65 x 바람비율)^1.3', '와트 (W)'],
|
|
206
|
+
['최대 안전 반경', '(사용 가능 에너지 - 체류 에너지) / Km당 소모량', '킬로미터 (km)'],
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'title',
|
|
211
|
+
text: 'UAV 비행 계획 베스트 프랙티스',
|
|
212
|
+
level: 2,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'paragraph',
|
|
216
|
+
html: '상업적 운항 안전성을 유지하기 위해 사전 계산값과 실제 텔레메트리 로그를 항상 대조하세요.',
|
|
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 = 'dron-missie-accureserve-planner';
|
|
6
|
+
const title = 'Drone Missie Accureserve Planner';
|
|
7
|
+
const description = 'Bereken veilige accureserves voor terugkeer, tegenwindverliezen en maximale vluchtradius voor UAV-missies.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Waarom verbruikt vliegen tegen de wind in meer energie?',
|
|
12
|
+
answer: 'Vliegen tegen de wind vereist een steilere hellingshoek om de luchtweerstand te overwinnen en de grondsnelheid te behouden, wat de motorstroom niet-lineair verhoogt.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Hoe beïnvloedt de zweeftijd boven het doel de point of no return?',
|
|
16
|
+
answer: 'Zweeftijd boven de doelzone verbruikt direct bruikbare accu-energie voordat de resterende veilige vliegradius wordt berekend.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Wat veroorzaakt spanninginval bij LiPo-accu s onder zware belasting?',
|
|
20
|
+
answer: 'Hoge stroomafname verhoogt de inwendige weerstandsverliezen in lithiumcellen, waardoor de effectief bruikbare watturen afnemen.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToSteps = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Voer accu- en aandrijfspecificaties in',
|
|
27
|
+
text: 'Voer de capaciteit in mAh, nominale spanning en gemiddelde stroomafname in.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Stel vluchtafstand en doelzweeftijd in',
|
|
31
|
+
text: 'Bepaal de enkele reisafstand en de geplande zweeftijd boven de doelzone.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Configureer windsnelheid en richting',
|
|
35
|
+
text: 'Selecteer de windsnelheid en de richting ten opzichte van de heenreis.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Controleer veiligheidsradius en telemetrie',
|
|
39
|
+
text: 'Analyseer de berekende point of no return, het stroomverbruik per fase en de resterende lading bij landing.',
|
|
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: 'Drone Missie Accureserve Planner',
|
|
82
|
+
subtitle: 'Bereken veilige accureserves voor terugkeer, windinvloeden en vliegradia',
|
|
83
|
+
description: 'Nauwkeurige planningssoftware voor dronevluchten met tegenwindcorrecties en point of no return drempels.',
|
|
84
|
+
sections: {
|
|
85
|
+
batteryPropulsion: '1. Accu & Aandrijving',
|
|
86
|
+
flightAtmosphere: '2. Vluchtprofiel & Atmosfeer',
|
|
87
|
+
},
|
|
88
|
+
inputs: {
|
|
89
|
+
unitSystemLabel: 'Eenhedensysteem',
|
|
90
|
+
metricLabel: 'Metrisch',
|
|
91
|
+
imperialLabel: 'Imperiaal',
|
|
92
|
+
presetLabel: 'Snelle Missie Presets',
|
|
93
|
+
batteryCapacityLabel: 'Accucapaciteit',
|
|
94
|
+
batteryVoltageLabel: 'Nominale Spanning',
|
|
95
|
+
averageCurrentLabel: 'Gemiddelde Kruisstroom',
|
|
96
|
+
cruiseSpeedLabel: 'Luchtsnelheid Kruissnelheid',
|
|
97
|
+
oneWayDistanceLabel: 'Enkele Reisafstand',
|
|
98
|
+
targetHoverTimeLabel: 'Operationele Duur op Doel',
|
|
99
|
+
windSpeedLabel: 'Windsnelheid',
|
|
100
|
+
windDirectionLabel: 'Windrichting t.o.v. Heenreis',
|
|
101
|
+
windHeadwindLabel: 'Tegenwind op Heenreis',
|
|
102
|
+
windTailwindLabel: 'Mee-wind op Heenreis',
|
|
103
|
+
windCrosswindLabel: 'Zijwind',
|
|
104
|
+
reservePolicyLabel: 'Veiligheids-Reservebuffer',
|
|
105
|
+
},
|
|
106
|
+
presets: {
|
|
107
|
+
mappingSurvey: 'Fotogrammetrie & Kartografie',
|
|
108
|
+
fpvRecon: 'FPV Long Range Verkenning',
|
|
109
|
+
cinematicInspection: 'Cinematografische Inspectie',
|
|
110
|
+
microRecon: 'Micro Drone Missie',
|
|
111
|
+
surveyMeta: 'kartografie',
|
|
112
|
+
scoutMeta: 'verkenning',
|
|
113
|
+
hoverMeta: 'zweven',
|
|
114
|
+
},
|
|
115
|
+
results: {
|
|
116
|
+
totalCapacityEnergy: 'Totale Energiecapaciteit',
|
|
117
|
+
usableEnergy: 'Bruikbare Missie-energie',
|
|
118
|
+
reserveEnergyBuffer: 'Reserve-energiebuffer',
|
|
119
|
+
totalAutonomyTime: 'Totale Vluchtautonomie',
|
|
120
|
+
maxSafeMissionRadius: 'Point of No Return Radius',
|
|
121
|
+
outboundLegTime: 'Duur Heenreis',
|
|
122
|
+
targetHoverTime: 'Duur Zweven op Doel',
|
|
123
|
+
returnLegTime: 'Duur Terugreis',
|
|
124
|
+
totalMissionTime: 'Totale Transittijd',
|
|
125
|
+
remainingEnergyLanding: 'Geschatte Acculading bij Landing',
|
|
126
|
+
feasibilityStatus: 'Beoordeling Haalbaarheid Missie',
|
|
127
|
+
voltageSagSubLabel: 'Spanninginval',
|
|
128
|
+
maxRadiusSubLabel: 'Max veilige radius met zweven',
|
|
129
|
+
powerSubLabel: 'Vermogen',
|
|
130
|
+
},
|
|
131
|
+
statusBadges: {
|
|
132
|
+
optimalTitle: 'OPTIMALE ENERGIERESERVE MARGE',
|
|
133
|
+
optimalSubtitle: 'Veilig vluchtprofiel met voldoende reserve bij landing',
|
|
134
|
+
tightTitle: 'KRAPPE ENERGIERESERVE MARGE',
|
|
135
|
+
tightSubtitle: 'Lage reserve bij landing, controleer de accuspanning nauwlettend',
|
|
136
|
+
criticalTitle: 'KRITIEKE ENERGIEWAARSCHUWING',
|
|
137
|
+
criticalSubtitle: 'Reserve overschreden, zet direct de terugkeer in',
|
|
138
|
+
exceededTitle: 'MISSIE OVERSCHRIJDT VEILIGE CAPACITEIT',
|
|
139
|
+
exceededSubtitle: 'Onvoldoende accu energie om de missie veilig af te ronden',
|
|
140
|
+
},
|
|
141
|
+
chart: {
|
|
142
|
+
batteryProfileTitle: 'NIET-LINEAIR ENERGIEVERDELINGSPROFIEL',
|
|
143
|
+
modelTitle: 'AERODYNAMISCH VERMOGENS- EN WINDMODEL',
|
|
144
|
+
windLabel: 'Wind',
|
|
145
|
+
homeNode: 'HOME',
|
|
146
|
+
targetNode: 'DOEL',
|
|
147
|
+
landNode: 'LANDING',
|
|
148
|
+
launchPadLabel: 'Startplaats',
|
|
149
|
+
surveyHoverLabel: 'Zweven op doel',
|
|
150
|
+
safeRadiusLabel: 'Veilige radius',
|
|
151
|
+
outboundSegment: 'Heenreis',
|
|
152
|
+
targetSegment: 'Zweven',
|
|
153
|
+
returnSegment: 'Terugreis',
|
|
154
|
+
reserveSegment: 'Reserve',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
seo: [
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Aerodynamische Vermogensverliezen bij Tegenwind',
|
|
161
|
+
level: 2,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'De vliegveiligheid van onbemande luchtvaartuigen berust op niet-lineaire natuurkundige principes. Tegen de wind in vliegen vereist een steilere hellingshoek om de luchtweerstand te overwinnen en de grondsnelheid te behouden.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Onze planner berekent dynamisch het vermogensverbruik per vluchtsegment rekening houdend met de windomstandigheden.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'Berekening van Zweeftijd boven het Doelgebied',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Inspectie- en kartografiedrones brengen tijd zwevend door boven het werkgebied. Deze fase verbruikt continu energie voor de terugreis.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'Voer de zweeftijd in voordat u de vluchtgrenzen berekent.',
|
|
184
|
+
'Houd rekening met vermogenspieken bij tegenwind.',
|
|
185
|
+
'Monitort spanninginval bij LiPo-cellen onder zware belasting.',
|
|
186
|
+
'Zet de terugkeer in zodra de reservebuffer wordt bereikt.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'tip',
|
|
191
|
+
title: 'Waarschuwing voor Spanninginval bij LiPo Accu s',
|
|
192
|
+
html: 'Hoge stromen veroorzaken tijdelijke spanningsval door inwendige weerstand, wat de bruikbare energie vermindert.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Formules voor het Berekenen van de Accureserve',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'table',
|
|
201
|
+
headers: ['Parameter', 'Formule / Model', 'Eenheid'],
|
|
202
|
+
rows: [
|
|
203
|
+
['Bruto Energie', 'Capaciteit (mAh) x Spanning (V) / 1000', 'Wattuur (Wh)'],
|
|
204
|
+
['Verlies door Inval', 'Bruto Energie x Sag Factor', 'Wattuur (Wh)'],
|
|
205
|
+
['Vermogen bij Wind', 'Basisvermogen x (1 + 0.65 x WindRatio)^1.3', 'Watt (W)'],
|
|
206
|
+
['Max Veilige Radius', '(Bruikbare Energie - Zweef-energie) / Verbruik per Km', 'Kilometer (km)'],
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'title',
|
|
211
|
+
text: 'Best Practices voor Vluchtplanning met Drones',
|
|
212
|
+
level: 2,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'paragraph',
|
|
216
|
+
html: 'Vergelijk automatische telemetrie altijd met vluchtberekeningen vooraf voor maximale operationele veiligheid.',
|
|
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 = 'planer-rezerwy-baterii-misji-drona';
|
|
6
|
+
const title = 'Planer Rezerwy Baterii Misji Drona';
|
|
7
|
+
const description = 'Oblicz bezpieczne rezerwy energii na powrót drona, straty mocy przy wietrze oraz maksymalny promień bezpiecznego lotu.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Dlaczego lot pod wiatr zużywa znacznie więcej energii?',
|
|
12
|
+
answer: 'Lot pod wiatr wymaga większego kąta pochylenia drona do pokonania oporu powietrza i utrzymania prędkości względem ziemi, co wywołuje nieliniowy wzrost prądu.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Jak czas zawisu nad celem wpływa na punkt bez powrotu?',
|
|
16
|
+
answer: 'Czas pracy w zawisie nad obiektem zużywa stałą część energii baterii, zmniejszając pozostały promień lotu tam i z powrotem.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Co powoduje spadek napięcia LiPo pod obciążeniem?',
|
|
20
|
+
answer: 'Duży pobór prądu zwiększa straty na rezystancji wewnętrznej ogniw litowych, zmniejszając efektywnie użyteczną liczbę watogodzin.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToSteps = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Wprowadź dane baterii i napędu',
|
|
27
|
+
text: 'Podaj pojemność w mAh, napięcie nominalne oraz średni pobór prądu.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Ustaw dystans i czas pracy nad celem',
|
|
31
|
+
text: 'Określ odległość w jedną stronę oraz planowany czas zawisu na miejscu.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Skonfiguruj prędkość i kierunek wiatru',
|
|
35
|
+
text: 'Wybierz prędkość wiatru oraz jego kierunek względem trasy lotu.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Przeanalizuj promień i telemetrię',
|
|
39
|
+
text: 'Sprawdź obliczony punkt bez powrotu, pobór mocy na odcinkach oraz poziom naładowania przy lądowaniu.',
|
|
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: 'Planer Rezerwy Baterii Misji Drona',
|
|
82
|
+
subtitle: 'Oblicz marginesy bezpieczeństwa na powrót, wpływ wiatru i promień misji',
|
|
83
|
+
description: 'Precyzyjne planowanie misji drona z uwzględnieniem poprawek na wiatr i punktu bez powrotu.',
|
|
84
|
+
sections: {
|
|
85
|
+
batteryPropulsion: '1. Bateria i Napęd',
|
|
86
|
+
flightAtmosphere: '2. Profil Lotu i Atmosfera',
|
|
87
|
+
},
|
|
88
|
+
inputs: {
|
|
89
|
+
unitSystemLabel: 'System Jednostek',
|
|
90
|
+
metricLabel: 'Metryczny',
|
|
91
|
+
imperialLabel: 'Imperialny',
|
|
92
|
+
presetLabel: 'Szybkie Ustawienia Misji',
|
|
93
|
+
batteryCapacityLabel: 'Pojemność Baterii',
|
|
94
|
+
batteryVoltageLabel: 'Napięcie Nominalne',
|
|
95
|
+
averageCurrentLabel: 'Średni Prąd Przelotowy',
|
|
96
|
+
cruiseSpeedLabel: 'Prędkość Przelotowa',
|
|
97
|
+
oneWayDistanceLabel: 'Dystans w Jedną Stronę',
|
|
98
|
+
targetHoverTimeLabel: 'Czas Pracy nad Celem',
|
|
99
|
+
windSpeedLabel: 'Prędkość Wiatru',
|
|
100
|
+
windDirectionLabel: 'Kierunek Wiatru Względem Trasy',
|
|
101
|
+
windHeadwindLabel: 'Wiatr w Twarz',
|
|
102
|
+
windTailwindLabel: 'Wiatr w Plecy',
|
|
103
|
+
windCrosswindLabel: 'Wiatr Boczny',
|
|
104
|
+
reservePolicyLabel: 'Bufor Rezerwy Bezpieczeństwa',
|
|
105
|
+
},
|
|
106
|
+
presets: {
|
|
107
|
+
mappingSurvey: 'Fotogrametria i Mapowanie',
|
|
108
|
+
fpvRecon: 'Zwiad FPV Dalekiego Zasięgu',
|
|
109
|
+
cinematicInspection: 'Inspekcja Konstrukcji',
|
|
110
|
+
microRecon: 'Misja Mikro Drona',
|
|
111
|
+
surveyMeta: 'mapowanie',
|
|
112
|
+
scoutMeta: 'zwiad',
|
|
113
|
+
hoverMeta: 'zawis',
|
|
114
|
+
},
|
|
115
|
+
results: {
|
|
116
|
+
totalCapacityEnergy: 'Całkowita Pojemność Energii',
|
|
117
|
+
usableEnergy: 'Użyteczna Energia Misji',
|
|
118
|
+
reserveEnergyBuffer: 'Bufor Rezerwy Energii',
|
|
119
|
+
totalAutonomyTime: 'Całkowity Czas Autonomii',
|
|
120
|
+
maxSafeMissionRadius: 'Promień Punktu Bez Powrotu',
|
|
121
|
+
outboundLegTime: 'Czas Lotu do Celu',
|
|
122
|
+
targetHoverTime: 'Czas Zawisu nad Celem',
|
|
123
|
+
returnLegTime: 'Czas Lotu Powrotnego',
|
|
124
|
+
totalMissionTime: 'Całkowity Czas Przelotu',
|
|
125
|
+
remainingEnergyLanding: 'Szacowany Poziom Baterii przy Lądowaniu',
|
|
126
|
+
feasibilityStatus: 'Ocena Wykonalności Misji',
|
|
127
|
+
voltageSagSubLabel: 'Spadek napięcia',
|
|
128
|
+
maxRadiusSubLabel: 'Maks. bezpieczny promień z zawisem',
|
|
129
|
+
powerSubLabel: 'Moc',
|
|
130
|
+
},
|
|
131
|
+
statusBadges: {
|
|
132
|
+
optimalTitle: 'OPTYMALNY MARGINES REZERWY ENERGII',
|
|
133
|
+
optimalSubtitle: 'Bezpieczny profil lotu z wystarczającą rezerwą na lądowanie',
|
|
134
|
+
tightTitle: 'NAPIĘTY MARGINES REZERWY ENERGII',
|
|
135
|
+
tightSubtitle: 'Niska rezerwa na lądowanie, uważnie monitoruj napięcie baterii',
|
|
136
|
+
criticalTitle: 'KRYTYCZNE OSTRZEŻENIE O ENERGII',
|
|
137
|
+
criticalSubtitle: 'Rezerwa przekroczona, natychmiast rozpocznij powrót',
|
|
138
|
+
exceededTitle: 'MISJA PRZEKRACZA BEZPIECZNĄ POJEMNOŚĆ',
|
|
139
|
+
exceededSubtitle: 'Niewystarczająca ilość energii do bezpiecznego ukończenia misji',
|
|
140
|
+
},
|
|
141
|
+
chart: {
|
|
142
|
+
batteryProfileTitle: 'NIELINIOWY PROFIL ALOKACJI ENERGII',
|
|
143
|
+
modelTitle: 'MODEL MOCY AERODYNAMICZNEJ I WIATRU',
|
|
144
|
+
windLabel: 'Wiatr',
|
|
145
|
+
homeNode: 'BAZA',
|
|
146
|
+
targetNode: 'CEL',
|
|
147
|
+
landNode: 'LĄD',
|
|
148
|
+
launchPadLabel: 'Miejsce startu',
|
|
149
|
+
surveyHoverLabel: 'Zawis nad celem',
|
|
150
|
+
safeRadiusLabel: 'Promień bezpieczny',
|
|
151
|
+
outboundSegment: 'Lot do celu',
|
|
152
|
+
targetSegment: 'Zawis',
|
|
153
|
+
returnSegment: 'Powrót',
|
|
154
|
+
reserveSegment: 'Rezerwa',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
seo: [
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Straty Mocy Aerodynamicznej przy Locie Pod Wiatr',
|
|
161
|
+
level: 2,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'Bezpieczeństwo lotu drona opiera się na nieliniowych prawach fizyki. Lot pod wiatr wymaga większego pochylenia drona do pokonania oporu powietrza i utrzymania prędkości.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Nasz kalkulator dynamicznie wylicza zapotrzebowanie na moc na poszczególnych odcinkach trasy.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'Uwzględnienie Czasu Zawisu w Strefie Celu',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Prace fotogrametryczne wymagają czasu zawisu nad obiektem. Ten pobór energii jest odejmowany przed wyznaczeniem promienia powrotu.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'Wprowadź czas zawisu przed obliczeniem granic misji.',
|
|
184
|
+
'Uwzględnij wzrost mocy przy locie pod wiatr.',
|
|
185
|
+
'Monitoruj spadek napięcia LiPo pod obciążeniem.',
|
|
186
|
+
'Rozpocznij powrót po osiągnięciu rezerwy bezpieczeństwa.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'tip',
|
|
191
|
+
title: 'Ostrzeżenie o Spadku Napięcia LiPo',
|
|
192
|
+
html: 'Duże prądy wywołują spadek napięcia przez rezystancję wewnętrzną ogniw, zmniejszając użyteczną energię.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Wzory Obliczeniowe Rezerwy Baterii Drona',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'table',
|
|
201
|
+
headers: ['Parametr', 'Wzór / Model', 'Jednostka'],
|
|
202
|
+
rows: [
|
|
203
|
+
['Energia Brutto', 'Pojemność (mAh) x Napięcie (V) / 1000', 'Watogodziny (Wh)'],
|
|
204
|
+
['Strata na Spadku', 'Energia Brutto x Współczynnik Sag', 'Watogodziny (Wh)'],
|
|
205
|
+
['Moc przy Wietrze', 'Moc Bazowa x (1 + 0.65 x WindRatio)^1.3', 'Waty (W)'],
|
|
206
|
+
['Maks. Safe Radius', '(Energia Użyteczna - Energia Zawisu) / Zużycie na Km', 'Kilometry (km)'],
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'title',
|
|
211
|
+
text: 'Dobre Praktyki Planowania Lotów UAV',
|
|
212
|
+
level: 2,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
type: 'paragraph',
|
|
216
|
+
html: 'Zawsze porównuj dane z telemetrii z wyliczeniami przedlotowymi w celu zachowania wysokiego poziomu bezpieczeństwa.',
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
faq: faqItems,
|
|
220
|
+
bibliography,
|
|
221
|
+
howTo: howToSteps,
|
|
222
|
+
schemas,
|
|
223
|
+
};
|