-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathchapter05.tex
More file actions
761 lines (545 loc) · 46.3 KB
/
Copy pathchapter05.tex
File metadata and controls
761 lines (545 loc) · 46.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
\renewcommand{\deutschertitel}{Objekterkennung}
\renewcommand{\englischertitel}{Object Detection}
\chapter[\texorpdfstring{\protect{\vspace{2pt}\englischertitel}}{\englischertitel}]{}
\kapitel{\deutschertitel}
\thispagestyle{empty}
\label{KapitelObjekterkennung}
\begin{paracol}{2}[]
{\raggedright\huge\bfseries\sffamily \englischertitel \par\ } \\[1.8ex]
\switchcolumn
{\raggedright\huge\bfseries\sffamily \deutschertitel \par\ } \\[1.8ex]
\coleng
Object detection is one of the most well-known applications of artificial intelligence. Among the best-known open-source solutions enabling object detection are the TensorFlow (Lite) machine learning framework combined with the OpenCV (\textsl{Open Computer Vision}) library for image processing and object recognition. An alternative approach is the object detection framework \textsl{You Only Look Once} (YOLO).
\colger
Objekterkennung ist eine der bekanntesten KI-Anwendungen. Zu den bekanntesten quelloffenen Softwarelösungen, die Objekterkennung ermöglichen, gehören das Framework TensorFlow (Lite) für maschinelles Lernen in Zusammenarbeit mit der Bibliothek OpenCV (\textsl{Open Computer Vision}) zur Bildverarbeitung und Objekterkennung. Eine alternative Lösung ist das Objekterkennungs-Framework \textsl{You Only Look Once} (YOLO).
\coleng
Object detection with FPV drones can be implemented in two basic ways. Both design concepts have advantages and disadvantages depending on factors such as available budget, hardware, the distance between drone and operator, the number of drones, and personal preferences.
\colger
Objekterkennung mit FPV-Drohnen kann auf zwei grundsätzliche Arten implementiert werden. Beide Realisierungskonzepte haben Vor- und Nachteile, deren Gewichtung unter anderem von den finanziellen Möglichkeiten, den verfügbaren Hardwarekomponenten, der Entfernung zwischen Drohne und Benutzer, der Anzahl der Drohnen und nicht zuletzt den persönlichen Präferenzen abhängt.
\coleng
\begin{itemize}
\item \textbf{Edge Node Concept:} The AI functionality is performed by a computer that flies with the drone. This approach is described in Section~\ref{AbschnittObjekterkennungHuckepack}. The additional hardware increases cost, weight, and power consumption, which reduces flight time. Using a higher-capacity battery to compensate further increases the total weight. However, this design offers excellent scalability because the sensor data is processed directly on the drone. Only the results (aggregated data) need to be transmitted during or after the flight, drastically reducing the data volume. This approach follows the edge computing paradigm, which is especially advantageous in multi-drone scenarios where simultaneous data collection would otherwise overload communication channels.
\end{itemize}
\colger
\begin{itemize}
\item \textbf{Realisierungskonzept Edge-Knoten:} Die KI-Funktionalität wird von einem Computer übernommen, der mit der Drohne mitfliegt. Diese Alternative beschreibt Abschnitt~\ref{AbschnittObjekterkennungHuckepack}. Die Anschaffung zusätzlicher Hardware verursacht Kosten und erhöht das Gewicht der Drohne. Zudem benötigt die zusätzliche Hardware Strom, was die Flugzeit reduziert. Wird ein Akku mit höherer Kapazität eingesetzt, steigt das Gewicht weiter. Vorteile dieses Konzepts sind die sehr gute Skalierbarkeit, da die Verarbeitung der Sensordaten direkt auf der Drohne erfolgt. Nur die Ergebnisse (aggregierten Daten) müssen während des Flugs oder danach übertragen werden, wodurch die Datenmenge drastisch reduziert wird. Es handelt sich somit um eine Variante des Edge-Computing. Besonders wichtig ist diese Datenreduktion in Szenarien mit mehreren Drohnen, die gleichzeitig fliegen und Daten erfassen.
\end{itemize}
\coleng
\begin{itemize}
\item \textbf{Full Data Transmission Concept:} The AI processing is performed by a ground-based computer that receives the drone’s live video feed. This approach is described in Section~\ref{AbschnittObjekterkennungVideoGrabber}. A simple implementation uses FPV goggles with an AV output and a video capture device. Advantages include the low additional cost (a video grabber costs about 15--20 €) and the fact that the drone’s weight remains unchanged. No extra data transmission capacity is required since the drone already transmits its live video feed. However, in multi-drone scenarios, the central AI processing can demand significant computational resources, potentially requiring additional ground-based AI hardware.
\end{itemize}
\colger
\begin{itemize}
\item \textbf{Realisierungskonzept Übertragung aller Live-Daten:} Die KI-Funktionalität wird von einem Computer am Boden übernommen, der Zugriff auf das Livebild der Drohne hat. Diese Alternative beschreibt Abschnitt~\ref{AbschnittObjekterkennungVideoGrabber}. Eine einfache Implementierungsmöglichkeit bietet eine Videobrille mit AV-Ausgang und ein Videograbber. Vorteile dieses Konzepts sind die geringen zusätzlichen Anschaffungskosten (ein Videograbber kostet etwa 15--20 €) und das unveränderte Gewicht der Drohne. Zusätzliche Übertragungskapazitäten sind nicht erforderlich, da das Livebild ohnehin übertragen wird. In Szenarien mit mehreren Drohnen kann der zentrale Rechenaufwand der Objekterkennung jedoch stark ansteigen und zusätzliche KI-Hardware am Boden erforderlich machen.
\end{itemize}
\colende
\renewcommand{\deutschertitel}{Objekterkennung mit zusätzlicher Hardware an der Drohne}
\renewcommand{\englischertitel}{Object Detection by additional Hardware on the Drone}
\makroabschnitt
\label{AbschnittObjekterkennungHuckepack}
It is possible to integrate the hardware and software required for object detection as additional components directly into the drone, allowing them to fly onboard. Ideally, these components consist of a compact and energy-efficient single-board computer. Table~\ref{TabelleRaspberryPiUnterschiede} shows the different sizes and power requirements of various generations of the Raspberry Pi single-board computer.
\colger
Es ist möglich, die zur Objekterkennung nötige Hard- und Software als zusätzliche Komponenten in die Drohne zu integrieren und diese Komponenten mitfliegen zu lassen. Sinnvollerweise handelt es sich dabei um einen platz- und stromsparenden Einplatinencomputer. Tabelle~\ref{TabelleRaspberryPiUnterschiede} zeigt die unterschiedlichen Dimensionen und Strombedarfe verschiedener Generationen des Einplatinencomputers Raspberry Pi.
\colende
\begin{table}[htb!]
\centering
\captionabove{Generations of the Raspberry\,Pi Single-Board Computer}
\label{TabelleRaspberryPiUnterschiede}
\setlength{\tabcolsep}{5pt} % Default value: 6pt
\renewcommand{\arraystretch}{1.0} % Default
\begin{tabular}{lcrlrrr}
\toprule
Generation & CPU Cores & \multicolumn{1}{c}{RAM} & \multicolumn{1}{c}{Size} & \multicolumn{1}{c}{Weight} & \multicolumn{1}{c}{Current Draw} & \multicolumn{1}{c}{Current Draw} \\
& & & & & \multicolumn{1}{c}{(idle)} & \multicolumn{1}{c}{(peak)} \\
\midrule
Pi Zero W & 1\,\(@\)\,1000\,MHz & 512\,MB & 65x30x5\,mm & \(\sim 9\)\,g & \(\sim\)\,120\,mA & \(\sim\)\,350\,mA \\
Pi Zero 2 W & 4\,\(@\)\,1000\,MHz & 512\,MB & 65x30x5\,mm & \(\sim 10\)\,g & \(\sim\)\,140\,mA & \(\sim\)\,600\,mA \\
Pi 3 B+ & 4\,\(@\)\,1200\,MHz & 1\,GB & 85x56x16\,mm & \(\sim 50\)\,g & \(\sim\)\,500\,mA & \(\sim\)\,1400\,mA \\
Pi 4 B & 4\,\(@\)\,1500\,MHz & 1-8\,GB & 85x56x16\,mm & \(\sim 50\)\,g & \(\sim\)\,600\,mA & \(\sim\)\,1500\,mA \\
Pi 5 & 4\,\(@\)\,2400\,MHz & 2-16\,GB & 85x56x16\,mm & \(\sim 70\)\,g & \(\sim\)\,700\,mA & \(\sim\)\,2500\,mA \\
\bottomrule
\end{tabular}
\end{table}
\FloatBarrier
\colstart
Compared to the approximately credit card--sized Raspberry Pi models, the Raspberry Pi Zero series is significantly smaller, lighter, and consumes less power. The processing performance of the Raspberry Pi 2 W is sufficient to run common AI frameworks alongside the operating system. Figure~\ref{AbbildungRaspberryPiZero2WH} shows a Raspberry Pi 2 WH.
\colger
Im Vergleich zu den etwa scheckkartengroßen Modellreihen sind die Raspberry Pi Zero-Modelle deutlich kleiner, leichter und benötigen weniger Strom. Die Prozessorleistung des Raspberry Pi 2 W ist ausreichend, um gängige KI-Frameworks neben dem Betriebssystem zu betreiben. Abbildung~\ref{AbbildungRaspberryPiZero2WH} zeigt einen Raspberry Pi 2 WH.
\colende
\begin{figure}[htb]
\centering
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{raspberry_pi_2_wh_front.png}
\vspace{0pt} % sorgt für Top-Ausrichtung
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{raspberry_pi_2_wh_back.png}
\vspace{0pt}
\end{minipage}
\caption{Raspberry Pi\,2\,WH (Front and Back)}
\label{AbbildungRaspberryPiZero2WH}
\end{figure}
\FloatBarrier
\colstart
Since it is not possible to forward the live FPV camera feed from the flight controller or VTX to the Raspberry Pi, the drone must carry an additional camera that is compatible with the single-board computer. A simple and cost-effective solution is to use the Raspberry Pi Camera Modules v1, v2, or v3, which primarily differ in resolution. All of them weigh only about 3-4 g and have similar dimensions (approximately 25\(\times\)24\(\times\)10 mm). Alternatively, the Raspberry Pi AI Camera (see Section~\ref{AbschnittKIBeschleunigerVergleich}) can be used.
\colger
Da es nicht möglich ist, über den Flugcontroller oder über den VTX das Livebild der FPV-Kamera auch an den Raspberry Pi weiterzuleiten, muss die Drohne eine weitere, zum Einplatinencomputer kompatible Kamera transportieren. Eine einfache und kostengünstige Lösung sind die Raspberry Pi Camera Module v1, v2 und v3. Diese unterscheiden sich primär in der Auflösung. Sie wiegen alle nur 3-4 g und sind ähnlich groß (ca. 25\(\times\)24\(\times\)10 mm). Alternativ kann auch die Raspberry Pi AI Camera (siehe Abschnitt~\ref{AbschnittKIBeschleunigerVergleich}) verwendet werden.
\coleng
Since a Raspberry Pi, regardless of model, does not have sufficient processing power to perform real-time object detection on video streams, additional hardware is required to accelerate AI applications. In the solution presented here, a Google Coral TPU Accelerator is used for this purpose. The following section describes this and alternative implementation concepts.
\colger
Da ein Raspberry Pi Einplatinencomputer, egal welcher Baureihe, nicht über die Prozessorleistung verfügt, um Objekterkennung in einem Videostream zu realisieren, ist zusätzliche Hardware zur Beschleunigung der KI-Anwendung nötig. Beim hier vorgestellten Lösungsweg kommt zur Beschleunigung ein Google Coral TPU Accelerator zum Einsatz. Der folgende Abschnitt beschreibt diesen und alternative Implementierungskonzepte.
\colende
\renewcommand{\deutschertitel}{Vergleich von KI-Beschleunigern}
\renewcommand{\englischertitel}{Comparison of AI Accelerators}
\makrounterabschnitt
\label{AbschnittKIBeschleunigerVergleich}
This section presents the advantages and disadvantages of several AI accelerators: the Google Coral TPU Accelerator, the Intel Neural Compute Stick 2, the Raspberry Pi AI Camera, and the Raspberry Pi AI Hat. Table~\ref{TabelleUnterschiedeCoralAICameraNCS2} summarizes key specifications and performance characteristics.
\colger
Dieser Abschnitt stellt die Vor- und Nachteile der KI-Beschleuniger Google Coral TPU Accelerator, Intel Neural Compute Stick 2, Raspberry Pi AI Camera und Raspberry Pi AI Hat vor. Eine Übersicht relevanter Informationen dazu enthält Tabelle~\ref{TabelleUnterschiedeCoralAICameraNCS2}.
\coleng
Released in 2019, the Google Coral TPU Accelerator (see Figure~\ref{AbbildungGoogleCoralTPUAccelerator}) provides 4 trillion operations per second (Tera-operations per second -- TOPS), consumes approximately 500-900 mA depending on performance mode, and measures only 65\(\times\)30\(\times\)8 mm with a weight of around 20 g. An additional USB cable for connection adds 10-15 g. The retail price is about €80-90. A notable drawback is that Google has invested little effort in maintaining or updating drivers and libraries since 2022, making it increasingly difficult to operate the device on modern and future operating systems.
\colger
Der 2019 erschienene Google Coral TPU Accelerator (siehe Abbildung~\ref{AbbildungGoogleCoralTPUAccelerator}) bietet 4 Billionen Operationen pro Sekunde (Tera-operations per second -- TOPS), verbraucht je nach Geschwindigkeitseinstellung ca. 500-900 mA und ist nur 65\(\times\)30\(\times\)8 mm groß. Das Gewicht dieses KI-Beschleunigers beträgt ca. 20 g. Zusätzlich ist ein USB-Kabel zum Anschluss nötig, das weitere 10-15 g wiegt. Der Kaufpreis liegt bei etwa 80-90 €. Ein Nachteil des Google Coral TPU Accelerator ist, dass der Hersteller seit 2022 keine signifikanten Ressourcen in die Weiterentwicklung der Treiber und Bibliotheken investiert hat und die Entwicklung seitdem vollständig zum Stillstand gekommen ist, was den Betrieb auf aktuellen und zukünftigen Betriebssystemen erschwert.
\colende
\begin{figure}[htb]
\centering
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Google_Coral_TPU_Accelerator_front.pdf}
\vspace{0pt} % sorgt für Top-Ausrichtung
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Google_Coral_TPU_Accelerator_back.pdf}
\vspace{0pt}
\end{minipage}
\caption{Google Coral TPU Accelerator (Front and Back)}
\label{AbbildungGoogleCoralTPUAccelerator}
\end{figure}
\FloatBarrier
\colstart
An alternative AI accelerator that also connects via USB is the Intel Neural Compute Stick 2 (NCS2), released in 2019 (see Figure~\ref{AbbildungIntelNCS2}). It offers 4 TOPS, consumes approximately 200-500 mA depending on performance mode, and measures 73\(\times\)28\(\times\)14 mm while weighing about 30 g (without an extension cable). The purchase price is around €100. The NCS2 requires the OpenVINO Toolkit framework, which is free software actively developed by Intel. It converts models from frameworks such as TensorFlow (Lite), PyTorch, ONNX, Keras, and Caffe into a format optimized for Intel hardware and manages execution on compatible devices. It also supports integration with various versions of YOLO. However, starting new projects with the NCS2 is not recommended, as Intel discontinued hardware support with OpenVINO 2022.3 and has not invested significant resources in maintaining the necessary software since 2022, making operation on current and future operating systems increasingly difficult.
\colger
Ein alternativer KI-Beschleuniger, der ebenfalls über die USB-Schnittstelle angeschlossen wird, ist der 2019 erschienene Intel Neural Compute Stick 2 -- NCS2 (siehe Abbildung~\ref{AbbildungIntelNCS2}). Dieser bietet ebenfalls 4 TOPS, verbraucht je nach Geschwindigkeitseinstellung ca. 200-500 mA, ist 73\(\times\)28\(\times\)14 mm groß und wiegt (ohne Verlängerungskabel) etwa 30 g. Der Kaufpreis liegt bei rund 100 €. Der NCS2 benötigt das Framework OpenVINO Toolkit, das freie Software ist und von Intel entwickelt wird. Es konvertiert Modelle aus Frameworks wie TensorFlow (Lite), PyTorch, ONNX, Keras und Caffe in ein für Intel-Hardware optimiertes Format und steuert die Ausführung auf kompatibler Hardware. Auch eine Zusammenarbeit mit verschiedenen Versionen von YOLO ist möglich. Neue Projekte mit dem NCS2 zu realisieren ist jedoch nicht empfehlenswert, da Intel die Unterstützung der Hardware mit OpenVINO 2022.3 eingestellt und seit 2022 keine signifikanten Ressourcen mehr in die Weiterentwicklung der zum Betrieb nötigen Software investiert hat, was den Betrieb auf aktuellen und zukünftigen Betriebssystemen erschwert.
\colende
\begin{figure}[htb]
\centering
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Intel_Neuronal_Compute_Stick2_front.png}
\vspace{0pt} % sorgt für Top-Ausrichtung
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Intel_Neuronal_Compute_Stick2_back.png}
\vspace{0pt}
\end{minipage}
\caption{Intel Neuronal Compute Stick\,2 (Front and Back)}
\label{AbbildungIntelNCS2}
\end{figure}
\FloatBarrier
\colstart
A more modern alternative to connecting an AI accelerator via the USB interface is the Raspberry Pi AI Camera (see Figure~\ref{AbbildungRaspberryPIAICameraModule}), released in 2024. It already includes an integrated AI accelerator whose exact performance in TOPS is not publicly specified, but it is capable of processing up to 30 frames per second for object recognition. The power consumption is approximately 300-600 mA, depending on the operating mode. The purchase price of the Raspberry Pi AI Camera is around €80, which is higher than that of other camera modules. However, it can fully replace an external AI accelerator such as the Google Coral TPU Accelerator. With a weight of only about 6 g, this results in significant weight savings and lower overall system costs.
\colger
Eine modernere Alternative zum Anschluss eines KI-Beschleunigers über die USB-Schnittstelle ist die 2024 erschienene Raspberry Pi AI Camera (siehe Abbildung~\ref{AbbildungRaspberryPIAICameraModule}). Diese enthält bereits einen integrierten KI-Beschleuniger, dessen Leistungsfähigkeit in TOPS nicht bekannt ist, der jedoch bis zu 30 Bilder pro Sekunde zur Objekterkennung verarbeiten kann. Der Stromverbrauch beträgt je nach Betriebsart etwa 300-600 mA. Der Kaufpreis der Raspberry Pi AI Camera liegt mit rund 80 € zwar höher als der anderer Kamera-Module, sie kann jedoch einen externen KI-Beschleuniger wie den Google Coral TPU Accelerator vollständig ersetzen. Bei einem Gewicht von nur etwa 6 g führt dies zu einer deutlichen Gewichtsersparnis und geringeren Gesamtkosten.
\colende
\begin{figure}[htb]
\centering
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Raspberry_Pi_AI_Camera_Module_Vorderseite.png}
\vspace{0pt} % sorgt für Top-Ausrichtung
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Raspberry_Pi_AI_Camera_Module_Rueckseite.png}
\vspace{0pt}
\end{minipage}
\caption{Raspberry AI Camera (Front and Back)}
\label{AbbildungRaspberryPIAICameraModule}
\end{figure}
\FloatBarrier
\colstart
In addition to the Raspberry Pi AI Camera, which is ideal for use with the Raspberry Pi Zero 2 W single-board computer, the Raspberry Pi Foundation also offers the AI Kit and AI HAT+ in two different performance variants. All three options are HAT (Hardware Attached on Top) expansion boards for the Raspberry Pi 5. The AI Kit can host an M.2 AI accelerator module and comes with a Hailo-8L chip capable of 13 TOPS. The two AI HAT+ variants feature soldered Hailo accelerators with performance levels of 13 TOPS (see Figure~\ref{AbbildungRaspberryPiAIHATPlus13TOPs}) and 26 TOPS, respectively. The newer AI HAT+ 2 features a Hailo-10H accelerator that delivers up to 40 TOPS as an expansion module. These HATs cost around €80-150 and offer high AI performance. However, carrying and powering a Raspberry Pi 5 together with such a HAT is not practical in many drone scenarios.
\colger
Neben der Raspberry Pi AI Camera, die sich ideal für den Einsatz mit dem Raspberry Pi Zero 2 W Einplatinencomputer eignet, bietet die Raspberry Pi Foundation auch die KI-Erweiterungen AI Kit und AI HAT+ in zwei unterschiedlichen Geschwindigkeitsvarianten an. Alle drei Varianten sind Erweiterungsplatinen (sogenannte HATs) für den Raspberry Pi 5. Das AI Kit kann einen KI-Beschleuniger als M.2-Erweiterungsmodul aufnehmen und wird mit einem Hailo-8L-Beschleuniger ausgeliefert, der 13 TOPS erreicht. Die beiden Versionen des AI HAT+ enthalten fest verlötete Hailo-Beschleuniger mit 13 TOPS (siehe Abbildung~\ref{AbbildungRaspberryPiAIHATPlus13TOPs}) bzw. 26 TOPS. Das neuere AI HAT+ 2 verfügt über einen Hailo-10H-Beschleuniger, der 40 TOPS erreicht. Diese HATs kosten etwa 80-150 € und bieten eine starke KI-Leistung. Der Transport und die Stromversorgung eines Raspberry Pi 5 mit einem solchen HAT ist in vielen Anwendungsszenarien jedoch nicht praktikabel.
\colende
\begin{figure}[htb]
\centering
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Raspberry_Pi_AI_HAT_Plus_13_TOPS_top_small.png}
\vspace{0pt} % sorgt für Top-Ausrichtung
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=\linewidth]{Raspberry_Pi_AI_HAT_Plus_13_TOPS_top2_small.png}
\vspace{0pt}
\end{minipage}
\caption{Raspberry AI AI HAT+ with 13 TOPS}
\label{AbbildungRaspberryPiAIHATPlus13TOPs}
\end{figure}
\FloatBarrier
\begin{table}[htb!]
\centering
\captionabove{Options for additional Hardware on the Drone that accelerates AI Operations (Edge Computing Scenario)}
\label{TabelleUnterschiedeCoralAICameraNCS2}
\setlength{\tabcolsep}{3pt} % Default value: 6pt
\renewcommand{\arraystretch}{1.0} % Default
\begin{tabular}{llrrrrl}
\toprule
AI Hardware & Interface & TOPS & Weight & Size [mm] & Current Draw & \multicolumn{1}{c}{Support} \\
\midrule
Google Coral TPU & USB 3.0 & 4 & \(\sim\)\,20\,g & 65x30x8 & 500-900\,mA & Discontinued \\
Intel NCS\,2 & USB 3.0 & 4 & \(\sim\)\,30\,g & 73x28x14 & 200-500\,mA & Discontinued \\
RPi AI Camera & CSI & ? & \(\sim\)\,6\,g & 25x24x10 & 300-600\,mA & Active \\
RPi AI\,Kit/HAT+ (2) & HAT (PCIe) & 13 & \(\sim\)\,40\,g & 65x57x6 & 400-800\,mA & Active \\
\bottomrule
\end{tabular}
\end{table}
\FloatBarrier
\colstart
For various reasons, such as short-term hardware availability, it has not yet been possible to integrate the Raspberry Pi AI Camera into a drone project. Therefore, the implementation approach presented in the next section uses the Google Coral TPU Accelerator.
\colger
Aus verschiedenen Gründen, wie der kurzfristigen Hardwareverfügbarkeit, war es bislang nicht möglich, die Raspberry Pi AI Camera in ein Drohnenprojekt zu integrieren. Aus diesem Grund verwendet der im nächsten Abschnitt vorgestellte Lösungsweg den Google Coral TPU Accelerator.
\colende
\renewcommand{\deutschertitel}{Aufbau und Implementierung}
\renewcommand{\englischertitel}{Construction and Implementation}
\makrounterabschnitt
\label{AbschnittObjekterkennungImplementierungHuckepack}
Figure~\ref{AbbildungKompoentenEinerDrohneMitRaspberryPiundCoral} shows the components of the FPV drone from Figure~\ref{AbbildungKompoentenEinerDrohneOhneKI}, expanded by the components required for onboard image recognition: the Raspberry Pi single-board computer, a Raspberry Pi Camera Module v2, the Google Coral TPU Accelerator, and a BEC -- Battery Eliminator Circuit (see Figure~\ref{AbbildungBEC}) for converting the battery voltage to 5\,V.
\colger
Abbildung~\ref{AbbildungKompoentenEinerDrohneMitRaspberryPiundCoral} zeigt die Komponenten der FPV-Drohne aus Abbildung~\ref{AbbildungKompoentenEinerDrohneOhneKI}, erweitert um die für die lokale Bilderkennung erforderlichen Komponenten: den Raspberry Pi Einplatinencomputer, ein Raspberry Pi Camera Module v2, den Google Coral TPU Accelerator sowie einen Abwärtsregler bzw. BEC (siehe Abbildung~\ref{AbbildungBEC}) zur Umwandlung der elektrischen Spannung des Akkus in 5\,V.
\colende
\begin{figure}[htb]
\centering
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=.33\linewidth]{BEC_Voltage_Regulator_iFlight_Micro_front.png}
\vspace{0pt} % sorgt für Top-Ausrichtung
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\centering
\includegraphics[width=.33\linewidth]{BEC_Voltage_Regulator_iFlight_Micro_back.png}
\vspace{0pt}
\end{minipage}
\caption{Battery Eliminator Circuit -- BEC (Front and Back) that Converts Higher Battery Voltage into a stable, lower Voltage to safely power Electronic Components}
\label{AbbildungBEC}
\end{figure}
\FloatBarrier
\colstart
The SpeedyBee F405 AIO flight controller used here provides only six UART interfaces, leaving little flexibility, as shown in Figure~\ref{AbbildungKompoentenEinerDrohneMitRaspberryPiundCoral}. The video transmitter (UART3), GPS module (UART5), and receiver (UART6) each require one UART interface. In addition, one UART (UART1) is reserved for administration via Wi-Fi and USB. Of the remaining interfaces, UART2 supports only simplex mode (receive-only). This leaves a single fully functional (bidirectional) UART interface, which is used to connect the Raspberry Pi Zero\,2\,W. This connection allows command exchange between the flight controller and the single-board computer.
\colger
Der verwendete SpeedyBee F405 AIO Flugcontroller verfügt nur über sechs UART-Schnittstellen, was -- wie in Abbildung~\ref{AbbildungKompoentenEinerDrohneMitRaspberryPiundCoral} gezeigt -- nur wenig Spielraum lässt. Videosender (UART3), GPS-Modul (UART5) und Empfänger (UART6) benötigen jeweils eine UART-Schnittstelle. Zusätzlich wird für die Administration über die WLAN- und USB-Schnittstellen (UART1) eine weitere Schnittstelle belegt. Von den verbleibenden Schnittstellen unterstützt UART2 nur den Simplex-Betrieb (nur Lesen). Damit verbleibt lediglich eine einzige vollwertige (bidirektionale) UART-Schnittstelle, über die der Raspberry Pi Zero\,2\,W angeschlossen wird. Darüber können Kommandos zwischen Flugcontroller und Einplatinencomputer ausgetauscht werden.
\coleng
One disadvantage of the Google Coral TPU Accelerator is that the manufacturer has not invested further resources in driver or library development. The required Python library PyCoral -- an extension of TensorFlow Lite enabling integration with the Coral TPU -- supports Python 3.9 at most. No further updates are expected. Installation on Raspberry Pi OS (32-bit) Bullseye (Debian 11) is recommended, as Coral packages and PyCoral work reliably there. Newer operating systems based on Debian 12 or 13 are difficult to use with this hardware.
\colger
Ein Nachteil des Google Coral TPU Accelerator ist, dass der Hersteller keine weiteren Ressourcen in die Weiterentwicklung der Treiber und Bibliotheken investiert. Die benötigte Python-Bibliothek PyCoral, die TensorFlow Lite um die Unterstützung der Google Coral TPU erweitert, unterstützt maximal Python 3.9. Neue Versionen sind nicht mehr zu erwarten. Die Installation auf Raspberry Pi OS (32-bit) Bullseye (Debian 11) ist empfehlenswert, da dort die Coral-Pakete mit PyCoral zuverlässig funktionieren. Neuere Betriebssysteme auf Basis von Debian 12 oder 13 sind hingegen sehr schwierig zu verwenden.
\colende
\begin{figure}[htb!]
\centering
\includegraphics[width=\linewidth]{Komponenten_der_Drohne_Diagramm_v1_en.pdf}
\caption{Components of a FPV Drone with additional Hardware Components for Object Detection by the Drone itself}
\label{AbbildungKompoentenEinerDrohneMitRaspberryPiundCoral}
\end{figure}
\FloatBarrier
\renewcommand{\deutschertitel}{Gesamtgewicht und Anschaffungskosten}
\renewcommand{\englischertitel}{Total Weight and Purchase Cost}
\makrounterabschnitt
\label{AbschnittObjekterkennungKostenHuckepack}
For building the drone, a frame size between 3.5 and 5 inches is recommended. If the drone is also intended to be flown indoors, a 3.5-inch CineWhoop frame is advisable. The components used in a research project at Frankfurt University of Applied Sciences are listed in Table~\ref{TabelleDrohne35GoogleCoral}.
\colger
Zum Aufbau der Drohne empfiehlt sich ein Rahmen mit 3,5 bis 5 Zoll. Soll die Drohne auch innerhalb geschlossener Räume geflogen werden können, empfiehlt sich ein 3,5-Zoll-CineWhoop-Rahmen. Die im Rahmen eines Forschungsprojekts an der Frankfurt University of Applied Sciences verwendeten Komponenten sind in Tabelle~\ref{TabelleDrohne35GoogleCoral} aufgeführt.
\colende
\begin{table}[htb!]
\centering
\caption{Components of a Drone for Object Detection with a Raspberry Pi Zero\,2\,W and a Google Coral TPU Accelerator}
\label{TabelleDrohne35GoogleCoral}
\setlength{\tabcolsep}{6pt}
\renewcommand{\arraystretch}{1.0}
\begin{spreadtab}{{tabular}{llrr}}
\toprule
@Product & @Category & @Weight [g] & @Price [\euro{}] \\
\midrule
@SpeedyBee Bee35 PRO 3.5 & @Frame & 130 & 55 \\
@SpeedyBee F405 AIO 40A 3-6S & @Flight Controller & 14 & 70 \\
@Radiomaster RP1 2,4GHz & @Receiver & 3 & 25 \\
@Flywoo NIN 1404 V2 3750KV & @Motors & 40 & 65 \\
@Gemfan D90-5 3.5 Inch Ducted 5-Blade & @Propellers & 4 & 3 \\
@SpeedyBee TX800 VTX + SMA Adapter & @Video Transmitter & 10 & 40 \\
@Foxeer Lollipop 4 RHCP SMA & @FPV Antenna & 5 & 20 \\
@HGLRC M100-5883 & @GPS and Compass & 8 & 20 \\
@Caddx Ratel Pro & @FPV Camera & 10 & 55 \\
@Li-Ion 2500mAh 4S1P 14,8V 12C & @Battery & 200 & 25 \\
@Raspberry Pi Zero 2 WH & @Single-Board-Computer & 10 & 20 \\
@Raspberry Pi Zero case & @Case & 15 & 5 \\
@32GB microSD card & @Storage & 1 & 7 \\
@Raspberry Pi Camera Module 8MP v2 & @Camera & 4 & 17 \\
@Adafruit Camera Module case & @Case & 8 & 5 \\
@Google Coral TPU & @AI Hardware & 20 & 85 \\
@USB-C cable for Coral TPU & @Cable & 10 & 5 \\
@Additional cables, straps and panels & @Cables + fixing material & 10 & 5 \\
\bottomrule
@Sum & & sum(c2:c19) & sum(d2:d19) \\
\end{spreadtab}
\end{table}
\FloatBarrier
\colstart
The components listed in Table~\ref{TabelleDrohne35GoogleCoral} refer exclusively to the essential parts of the drone itself. Additional required equipment such as a remote controller (80-160\,\euro{}), FPV goggles (120-250\,\euro{}), and a charger (50-100\,\euro{}) must already be available or purchased separately. The prices of the individual components depend on personal preferences and financial means.
\colger
Die in Tabelle~\ref{TabelleDrohne35GoogleCoral} aufgeführten Komponenten betreffen ausschließlich die notwendigen Bestandteile der Drohne selbst. Weiteres erforderliches Zubehör wie Fernsteuerung (80-160\,\euro{}), FPV-Brille (120-250\,\euro{}) und Ladegerät (50-100\,\euro{}) muss bereits vorhanden sein oder zusätzlich beschafft werden. Die Preise der einzelnen Komponenten hängen auch von persönlichen Präferenzen und finanziellen Möglichkeiten ab.
\colende
\renewcommand{\deutschertitel}{Objekterkennung durch Auswertung des Livebilds am Boden}
\renewcommand{\englischertitel}{Object Detection by using the Live Image on the Ground}
\makroabschnitt
\label{AbschnittObjekterkennungVideoGrabber}
An easy way to access a live video feed is to use the AV interface provided by some FPV goggles (see Table~\ref{TabelleVideobrillen}). The analog signal can then be digitized with a video grabber device and transmitted to a computer or another device (e.g., a smartphone) for further processing. Figure~\ref{AbbildungVideobrillemitVideograbber} shows the connection of a video grabber to a pair of FPV goggles.
\colger
Eine einfache Möglichkeit, auf das Livebild zuzugreifen, bietet die gegebenenfalls vorhandene AV-Schnittstelle der Videobrille (siehe Tabelle~\ref{TabelleVideobrillen}). Das Videosignal kann mithilfe eines Videograbbers digitalisiert und zur Verarbeitung an einen Computer oder an ein anderes Gerät (z.B. ein Smartphone) weitergeleitet werden. Abbildung~\ref{AbbildungVideobrillemitVideograbber} zeigt den Anschluss eines Videograbbers an eine Videobrille.
\colende
\begin{figure}[htb!]
\centering
\includegraphics[width=\linewidth]{Videobrille_mit_Videograbber.jpg}
\caption{Video Grabber Device connected to the A/V Port of an FPV Goggle}
\label{AbbildungVideobrillemitVideograbber}
\end{figure}
\FloatBarrier
\colstart
There are various tools and commands for accessing video and audio streams. This section presents a selection of useful Linux tools and commands.
\colger
Zum Zugriff auf den Video- und Audiostrom existieren verschiedene Programme und hilfreiche Kommandos. Dieser Abschnitt stellt einige nützliche Programme und Kommandos unter Linux vor.
\coleng
Information from the operating system kernel about the video grabber can be obtained, among other things, using the command \verb!dmesg!.
\colger
Informationen des Betriebssystemkerns zum Videograbber liefert unter anderem das Kommando \verb!dmesg!.
\colende
\lstdefinestyle{shell}{
backgroundcolor=\color{gray!10},
basicstyle=\ttfamily\small,
frame=single,
breaklines=true, % <-- Zeilenumbruch aktivieren
breakatwhitespace=true, % <-- nur bei Leerzeichen umbrechen
postbreak=\mbox{\textcolor{gray}{$\hookrightarrow$}\space}, % Pfeil am Zeilenende
showstringspaces=false,
xleftmargin=0em,
xrightmargin=0em,
framerule=0.5pt,
rulecolor=\color{gray!60}
}
\begin{lstlisting}[style=shell]
$ sudo dmesg -w
[17896.642801] usb 2-2: USB disconnect, device number 91
[17897.851011] usb 2-2: new high-speed USB device number 92 using xhci_hcd
[17897.991360] usb 2-2: New USB device found, idVendor=534d, idProduct=0021, bcdDevice=21.01
[17897.991376] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[17897.991383] usb 2-2: Product: USB Video
[17897.991389] usb 2-2: Manufacturer: MACROSILICON
[17897.991395] usb 2-2: SerialNumber: 20200909
[17898.055173] usb 2-2: Found UVC 1.00 device USB Video (534d:0021)
[17898.063678] hid-generic 0003:534D:0021.004E: hiddev4,hidraw6: USB HID v1.10 Device [MACROSILICON USB Video] on usb-0000:06:00.3-2/input4
\end{lstlisting}
\FloatBarrier
\colstart
The command \verb!lsusb! provides information about the connected USB devices.
\colger
Das Kommando \verb!lsusb! liefert Informationen zu den angeschlossenen USB-Geräten.
\colende
\begin{lstlisting}[style=shell]
$ lsusb
Bus 002 Device 090: ID 534d:0021 MacroSilicon MS210x Video Grabber [EasierCAP]
\end{lstlisting}
\FloatBarrier
\colstart
The command \verb!v4l2-ctl! helps in identifying the desired device \verb!/dev/videoX!.
\colger
Das Kommando \verb!v4l2-ctl! unterstützt beim Auffinden des gewünschten Geräts \verb!/dev/videoX!.
\colende
\begin{lstlisting}[style=shell]
$ v4l2-ctl --list-devices
USB Video: USB Video (usb-0000:06:00.3-2):
/dev/video6
/dev/video7
/dev/media3
\end{lstlisting}
\FloatBarrier
\colstart
The video stream can be viewed in a window using tools such as \verb!cheese!, \verb!gst-launch-1.0! (GStreamer), \verb!guvcview!, \verb!ffplay!, \verb!mpv!, and \verb!vlc! (VideoLAN Client).
\colger
Den Videostrom in einem Fenster anzeigen kann man unter anderem mit den Werkzeugen \verb!cheese!, \verb!gst-launch-1.0! (GStreamer), \verb!guvcview!, \verb!ffplay!, \verb!mpv! und \verb!vlc! (VideoLAN Client).
\colende
\begin{lstlisting}[style=shell]
$ cheese
$ gst-launch-1.0 v4l2src device=/dev/video6 ! videoconvert ! autovideosink
$ guvcview -d /dev/video6
$ ffplay -f v4l2 -i /dev/video6
$ mpv /dev/video6
$ vlc v4l2:///dev/video6
\end{lstlisting}
\FloatBarrier
\colstart
Most of the mentioned tools can also redirect (save) video and audio streams to local files and convert them into various file formats.
\colger
Die meisten der genannten Werkzeuge können auch Video- und Audioströme in lokale Dateien umleiten (speichern) und in verschiedene Dateiformate konvertieren.
\coleng
There are also apps for the Android operating system that can display a video stream provided through the USB interface. One example is USB Camera (Pro).
\colger
Auch für das Betriebssystem Android gibt es Apps, die einen über die USB-Schnittstelle bereitgestellten Videostrom anzeigen können. Ein Beispiel ist USB Camera (Pro).
\colende
\begin{figure}[htb!]
\centering
\includegraphics[width=\linewidth]{Object_Detection_using_USB_video_grabber.png}
\caption{Object Detection using a USB Video Grabber connected to a FPV Goggles}
\label{ObjectDetectionDashboardUsingUSBVideoGrabber}
\end{figure}
\FloatBarrier
\colstart
Once the live analog video signal from the FPV goggles has been digitized using a USB video grabber and transmitted to a ground-based computing system, a wide range of real-time video processing techniques can be applied. A practical and widely used solution for this purpose is the OpenCV (Open Source Computer Vision) library, which provides efficient tools for real-time image acquisition, processing, and analysis using Python.
\colger
Sobald das analoge Live-Videosignal der FPV-Brille mithilfe eines USB-Videograbbers digitalisiert und an ein bodengebundenes Rechensystem übertragen wurde, können vielfältige Verfahren zur Echtzeit-Bildverarbeitung angewendet werden. Eine praxisnahe und weit verbreitete Lösung stellt die Bibliothek OpenCV (Open Source Computer Vision) dar, die effiziente Werkzeuge zur Echtzeit-Bildaufnahme, -verarbeitung und -analyse mit Python bereitstellt.
\coleng
The digitized video stream is treated by the operating system as a standard camera input, allowing OpenCV to capture frames in real time. This approach makes the system platform-independent and suitable for Linux, macOS, and Windows environments.
\colger
Der digitalisierte Videostream wird vom Betriebssystem als gewöhnliche Kameraquelle behandelt, wodurch OpenCV die Einzelbilder in Echtzeit erfassen kann. Dieser Ansatz ist plattformunabhängig und eignet sich für Linux-, macOS- und Windows-Systeme.
\coleng
After acquiring the live video frames, various computer vision and object detection algorithms can be applied, including but not limited to:
\colger
Nachdem die Live-Videobilder erfasst wurden, können verschiedene Verfahren der Bildverarbeitung und Objekterkennung angewendet werden. Dazu zählen unter anderem:
\coleng
\begin{itemize}
\item Region- or area-based detection
\end{itemize}
\colger
\begin{itemize}
\item Regionen- oder flächenbasierte Erkennung
\end{itemize}
\coleng
\begin{itemize}
\item Detection of other drones or aerial objects in the sky
\end{itemize}
\colger
\begin{itemize}
\item Erkennung anderer Drohnen oder fliegender Objekte im Luftraum
\end{itemize}
\coleng
\begin{itemize}
\item Obstacle detection and tracking
\end{itemize}
\colger
\begin{itemize}
\item Hinderniserkennung und -verfolgung
\end{itemize}
\coleng
\begin{itemize}
\item Motion analysis and situational awareness
\end{itemize}
\colger
\begin{itemize}
\item Bewegungsanalyse und Situationsbewertung
\end{itemize}
\coleng
In addition to visual information, FPV video streams may contain embedded telemetry data such as altitude, speed, GPS position, battery voltage, and the current flight mode. This telemetry data can be extracted and synchronized with visual detections. This enables advanced applications such as geo-referenced object detection, situational assessment, and flight-state-aware decision-making.
\colger
Zusätzlich zu den visuellen Informationen können FPV-Videostreams eingebettete Telemetriedaten enthalten, beispielsweise Höhe, Geschwindigkeit, GPS-Position, Akkuspannung und den aktuellen Flugmodus. Diese Telemetriedaten lassen sich extrahieren und mit visuellen Erkennungen synchronisieren. Dadurch werden weiterführende Anwendungen wie georeferenzierte Objekterkennung, Lagebewertung und flugzustandsabhängige Entscheidungsfindung ermöglicht.
\colende
\begin{figure}
\begin{lstlisting}[style=shell]
camera = cv2.VideoCapture(CAMERA_INDEX) # Linux and macOS
camera = cv2.VideoCapture(CAMERA_INDEX, cv2.CAP_DSHOW) # Windows
success, frame = camera.read()
\end{lstlisting}
\caption{Reading Video Stream from a Video Grabber using OpenCV in Python}
\label{ReadingUSBVideoStreamMitOpenCV}
\end{figure}
\FloatBarrier
\colstart
Figure~\ref{ReadingUSBVideoStreamMitOpenCV} shows an example of how a video stream from a USB video grabber can be accessed using OpenCV in Python. The device index specifies the camera input as recognized by the operating system. In many cases, index 0 is used when no additional camera devices are connected. On systems with multiple video sources, a different index may be required. On Windows systems, it is recommended to explicitly use the DirectShow backend by specifying \verb!cv2.CAP_DSHOW! to ensure stable access to USB video grabbers.
\colger
Abbildung~\ref{ReadingUSBVideoStreamMitOpenCV} zeigt ein Beispiel für den Zugriff auf einen Videostream eines USB-Videograbbers mit OpenCV in Python. Der Geräteindex gibt dabei die vom Betriebssystem erkannte Kameraquelle an. In vielen Fällen wird der Index 0 verwendet, sofern keine weiteren Kamerageräte angeschlossen sind. Bei Systemen mit mehreren Videoquellen kann ein anderer Index erforderlich sein. Unter Windows wird empfohlen, explizit das DirectShow-Backend mit \verb!cv2.CAP_DSHOW! zu verwenden, um einen stabilen Zugriff auf USB-Videograbber sicherzustellen.
\coleng
Figure~\ref{DroneDetectionUSBVideoGrab} shows a minimal example that demonstrates real-time drone detection using a USB video grabber and OpenCV. In this example, a pretrained YOLO model is used that is capable of detecting drones in aerial scenes. The model was trained on a dedicated drone detection dataset and is publicly available at \url{https://www.kaggle.com/code/zlatan599/drone-detection/output}. After the live video frames are captured with OpenCV, they are passed to the YOLO model for inference. Detected objects are then visualized using bounding boxes and associated confidence scores.
\colger
Abbildung~\ref{DroneDetectionUSBVideoGrab} zeigt ein minimales Beispiel zur Echtzeit-Erkennung von Drohnen mithilfe eines USB-Videograbbers und OpenCV. In diesem Beispiel wird ein vortrainiertes YOLO-Modell eingesetzt, das für die Erkennung von Drohnen in Luftaufnahmen geeignet ist. Das Modell wurde mit einem speziellen Datensatz zur Drohnenerkennung trainiert und ist öffentlich unter \url{https://www.kaggle.com/code/zlatan599/drone-detection/output} verfügbar. Nachdem die Live-Videoframes mit OpenCV erfasst wurden, werden sie zur Inferenz an das YOLO-Modell übergeben. Erkannte Objekte werden anschließend durch Begrenzungsrahmen und zugehörige Konfidenzwerte visualisiert.
\colende
\begin{figure}
\begin{lstlisting}[style=shell]
import cv2
from ultralytics import YOLO
CAMERA_INDEX = 0 # SET YOUR CAMERA INDEX HERE
MODEL_PATH = "models/final_drone_model.pt"
IMG_SIZE = (640, 480)
# Open camera (DirectShow is REQUIRED on Windows)
# camera = cv2.VideoCapture(CAMERA_INDEX, cv2.CAP_DSHOW)
camera = cv2.VideoCapture(CAMERA_INDEX)
if not camera.isOpened():
raise RuntimeError("Could not open camera")
camera.set(cv2.CAP_PROP_FRAME_WIDTH, IMG_SIZE[0])
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, IMG_SIZE[1])
model = YOLO(MODEL_PATH)
class_names = model.names
print("YOLO loaded. Press CRL + c to exit.")
while True:
ret, frame = camera.read()
if not ret:
print("Failed to grab frame")
break
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
results = model.predict(frame_rgb, verbose=False)[0]
if results.boxes is not None:
boxes = results.boxes.xyxy.cpu().numpy()
scores = results.boxes.conf.cpu().numpy()
classes = results.boxes.cls.cpu().numpy().astype(int)
for box, score, cls in zip(boxes, scores, classes):
x1, y1, x2, y2 = map(int, box)
cv2.rectangle(frame, (x1, y1), (x2, y2),
(0, 255, 0), 2)
label = f"{class_names[cls]} {score:.2f}"
cv2.putText(frame, label,
(x1, max(y1 - 10, 0)),
cv2.FONT_HERSHEY_SIMPLEX,
0.6, (0, 255, 0), 2)
cv2.imshow("Drone Detection", frame)
if cv2.waitKey(1) & 0xFF == 27:
break
camera.release()
cv2.destroyAllWindows()
\end{lstlisting}
\caption{Real-time drone detection using a USB video grabber on the ground system}
\label{DroneDetectionUSBVideoGrab}
\end{figure}
\FloatBarrier
\renewcommand{\deutschertitel}{Gesamtgewicht und Anschaffungskosten}
\renewcommand{\englischertitel}{Total Weight and Purchase Cost}
\makrounterabschnitt
\label{AbschnittObjekterkennungKostenVideoGrabber}
Table~\ref{TabelleDrohne35Videograbber} lists the components of the drone from Table~\ref{TabelleDrohne35GoogleCoral}, excluding the hardware required for object detection. Specifically, this includes the Raspberry Pi Zero, the camera module, the Google Coral TPU, and the corresponding cables and enclosures. Additional accessories such as the remote control, FPV goggles, and charger must also be available or purchased separately. In addition, a video grabber (15-25 \euro{}) and a computer are required.
\colger
Tabelle~\ref{TabelleDrohne35Videograbber} enthält die Komponenten der Drohne aus Tabelle~\ref{TabelleDrohne35GoogleCoral}, reduziert um die Hardware, die für die Objekterkennung erforderlich ist. Konkret sind das der Raspberry Pi Zero, das Kameramodul, die Google Coral TPU sowie die entsprechenden Kabel und Gehäuse. Weiteres notwendiges Zubehör wie Fernsteuerung, FPV-Brille und Ladegerät muss selbstverständlich ebenfalls bereits vorhanden sein oder zusätzlich beschafft werden. Zusätzlich werden ein Videograbber (15-25 \euro{}) und ein Computer benötigt.
\colende
\begin{table}[htb!]
\centering
\caption{Components of a Drone for Object Detection by using the Live Image on the Ground}
\label{TabelleDrohne35Videograbber}
\setlength{\tabcolsep}{6pt}
\renewcommand{\arraystretch}{1.0}
\begin{spreadtab}{{tabular}{llrr}}
\toprule
@Product & @Category & @Weight [g] & @Price [\euro{}] \\
\midrule
@SpeedyBee Bee35 PRO 3.5 & @Frame & 130 & 55 \\
@SpeedyBee F405 AIO 40A 3-6S & @Flight Controller & 14 & 70 \\
@Radiomaster RP1 2,4GHz & @Receiver & 3 & 25 \\
@Flywoo NIN 1404 V2 3750KV & @Motors & 40 & 65 \\
@Gemfan D90-5 3.5 Inch Ducted 5-Blade & @Propellers & 4 & 3 \\
@SpeedyBee TX800 VTX + SMA Adapter & @Video Transmitter & 10 & 40 \\
@Foxeer Lollipop 4 RHCP SMA & @FPV Antenna & 5 & 20 \\
@HGLRC M100-5883 & @GPS and Compass & 8 & 20 \\
@Caddx Ratel Pro & @FPV Camera & 10 & 55 \\
@Li-Ion 2500mAh 4S1P 14,8V 12C & @Battery & 200 & 25 \\
@Additional cables, straps and panels & @Cables + fixing material & 10 & 5 \\
\bottomrule
@Sum & & sum(c2:c11) & sum(d2:d11) \\
\end{spreadtab}
\end{table}
\FloatBarrier