רגע! לפני שהולכים... 👋
אל תפספסו! מסלולי לימוד נפתחים בקרוב - מקומות מוגבלים
| מסלול RT Embedded Linux | 05/07 |
| מסלול Cyber | 05/07 |
| מסלול Computer Vision | 05/07 |
| מסלול Machine Learning | 30/07 |
✓ ייעוץ אישי ללא התחייבות | תשובה תוך 24 שעות

עודכן לאחרונה: 2 יולי, 2026
פרויקט גמר שמשלב תזמון פיזי של קנה יורה מול נקודת ציון (נ.צ) באמצעות מערכת זיהוי משולבת אודיו ווידאו הוא אחד מהפרויקטים הרלוונטיים והמאתגרים ביותר שאפשר לבנות היום. התשובה הקצרה: אתם צריכים לבנות צינור עיבוד (pipeline) שמתחיל בזיהוי מטרה באודיו ווידאו, ממיר את הזיהוי לקואורדינטות זוויתיות, ומפעיל סרבו-מנועים דרך לולאת PID — כשכל זה קורה בפחות מ-100 מילישניות מקצה לקצה. במדריך הזה אני הולך לפרק את הפרויקט לשלבים קונקרטיים, עם קוד אמיתי, טבלאות השוואה, וטיפים מהשטח. לא הבטחות ריקות — עבודה אמיתית.
לפני שנכנסים לקוד, צריך להבין את התמונה הגדולה. מערכת כזו מורכבת משלוש שכבות: שכבת החישה (Sensing), שכבת העיבוד וההחלטה (Processing & Decision), ושכבת ההפעלה (Actuation). כל שכבה היא עולם בפני עצמו, וההצלחה של הפרויקט נמדדת באיכות האינטגרציה ביניהן.
Sensor Fusion הוא התהליך שבו משלבים מידע ממספר חיישנים כדי לקבל תמונה מדויקת יותר מכל חיישן בנפרד. בפרויקט שלנו, מערך מיקרופונים (Microphone Array) נותן לנו כיוון גס למקור הקול — זה מה שנקרא Direction of Arrival (DoA) — ומצלמה עם אלגוריתם זיהוי אובייקטים נותנת מיקום פיקסלי מדויק.
הרעיון המרכזי: האודיו מכוון את המצלמה לאזור הרלוונטי (cue), והווידאו נותן את הלוק המדויק (lock). זה דומה לאופן שבו אנחנו עצמנו מגיבים — שומעים רעש, מסובבים את הראש, ורק אז מתמקדים במטרה עם העיניים.
נקודת מפתח: ה-Sensor Fusion הוא לא רק "שניהם עובדים ביחד" — זה אלגוריתם מתמטי (לרוב Extended Kalman Filter או Complementary Filter) שמשקלל את האמינות של כל חיישן בהתאם לתנאים. ברעש רקע חזק, הווידאו מקבל משקל גבוה יותר. בתאורה ירודה, האודיו מוביל.
מערך מיקרופונים טיפוסי לפרויקט כזה כולל לפחות 4 מיקרופוני MEMS (כמו INMP441) מסודרים בצורה מעגלית או ליניארית. אלגוריתם GCC-PHAT (Generalized Cross-Correlation with Phase Transform) מחשב את הפרש הזמנים בין הגעת הגל לכל מיקרופון, ומתוך זה גוזר את הכיוון.
הפרויקט דורש שני רבדים של חומרה: מחשב עילי (Host) לעיבוד כבד, ומיקרו-בקר (MCU) לשליטה בזמן אמת. זה לא גחמה — זו הפרדת אחריות קריטית. Linux לא יכול להבטיח זמני תגובה של מיקרו-שניות, ו-MCU לא יכול להריץ רשת נוירונים.
ה-Host (לדוגמה Jetson Nano או Raspberry Pi 5) מריץ את אלגוריתמי הזיהוי — YOLO לזיהוי אובייקטים, ו-DoA לאודיו. הוא מחשב את זוויות הכיוון הרצויות ושולח אותן דרך UART או I2C למיקרו-בקר STM32 שמפעיל את סרבו-מנועי ה-Pan-Tilt. ה-STM32 מריץ לולאת PID קשיחה בתדר של 1kHz.
לפי נתוני NVIDIA, מודל YOLOv8-nano רץ ב-25 FPS על Jetson Nano עם צריכת אנרגיה של 5W בלבד — ביצועים שלפני שלוש שנים דרשו GPU שולחני. זו המהפכה של Edge AI, ופרויקט גמר הוא הדרך הטובה ביותר להרגיש אותה על הידיים.
עכשיו נכנסים לעבודה האמיתית. אני מפרק את הפרויקט ל-5 שלבים מעשיים — כל שלב עם תוצר מדיד וברור. אל תנסו לעשות הכל ביחד. בנו שכבה-שכבה, בדקו כל שכבה בנפרד, ורק אז חברו.
שלב 1 — זיהוי וידאו: התקינו את YOLOv8 (מ-Ultralytics) ואמנו מודל מותאם על מאגר תמונות של המטרה שלכם. גם אם זו מטרה גנרית — בובת אימון, תמרור, או דמות אנושית — אתם צריכים לפחות 500 תמונות מתוייגות (annotated). השתמשו ב-Roboflow לתיוג מהיר.
שלב 2 — זיהוי אודיו: בנו מערך של 4 מיקרופוני MEMS מחוברים ל-ADC (כמו ADS1115 או ישירות ל-I2S של ה-Raspberry Pi). אלגוריתם GCC-PHAT ב-Python ייתן לכם זווית הגעה עם דיוק של כ-5-10 מעלות — מספיק כדי לכוון את המצלמה לכיוון הנכון.
import numpy as np
from scipy.signal import fftconvolve
import pyaudio
import struct
# === GCC-PHAT: חישוב כיוון הגעת אודיו (Direction of Arrival) ===
RATE = 44100 # קצב דגימה
CHUNK = 4096 # גודל חלון
MIC_DISTANCE = 0.10 # מרחק בין מיקרופונים במטרים
SPEED_OF_SOUND = 343.0 # מטר לשנייה
def gcc_phat(sig1, sig2, fs=RATE, interp=16):
"""
חישוב GCC-PHAT בין שני אותות אודיו.
מחזיר את הפרש הזמנים (TDOA) בשניות.
"""
n = sig1.shape[0] + sig2.shape[0] - 1
# חישוב קורלציה צולבת בתחום התדר
SIG1 = np.fft.rfft(sig1, n=n)
SIG2 = np.fft.rfft(sig2, n=n)
# PHAT weighting — מנרמל את האמפליטודה, שומר רק פאזה
R = SIG1 * np.conj(SIG2)
R /= (np.abs(R) + 1e-10)
# חזרה לתחום הזמן
cc = np.fft.irfft(R, n=n * interp)
max_shift = int(interp * n / 2)
cc = np.concatenate((cc[-max_shift:], cc[:max_shift + 1]))
# מציאת הפיק — ההיסט בזמן
shift = np.argmax(np.abs(cc)) - max_shift
tdoa = shift / (fs * interp)
return tdoa
def tdoa_to_angle(tdoa, mic_distance=MIC_DISTANCE):
"""
המרת הפרש זמנים לזווית הגעה (מעלות).
מוגבל לטווח [-1, 1] עבור arcsin.
"""
ratio = tdoa * SPEED_OF_SOUND / mic_distance
ratio = np.clip(ratio, -1.0, 1.0)
angle_rad = np.arcsin(ratio)
return np.degrees(angle_rad)
# === לולאת אודיו ראשית ===
p = pyaudio.PyAudio()
stream = p.open(
format=pyaudio.paInt16,
channels=2, # שני ערוצי מיקרופון
rate=RATE,
input=True,
frames_per_buffer=CHUNK
)
print("[Audio DoA] מאזין... Ctrl+C לעצירה")
try:
while True:
data = stream.read(CHUNK, exception_on_overflow=False)
stereo = np.frombuffer(data, dtype=np.int16).astype(np.float64)
# הפרדת ערוצים
ch1 = stereo[0::2]
ch2 = stereo[1::2]
# חישוב TDOA וזווית
tdoa = gcc_phat(ch1, ch2)
angle = tdoa_to_angle(tdoa)
# סינון רעש — רק אם יש אנרגיה מספקת
energy = np.mean(np.abs(ch1))
if energy > 500:
print(f"[DoA] זווית: {angle:+6.1f}° | אנרגיה: {energy:.0f}")
except KeyboardInterrupt:
print("\nעצירה.")
finally:
stream.stop_stream()
stream.close()
p.terminate()
הקוד הזה אמיתי ורץ. חברו שני מיקרופונים ל-USB sound card סטריאו, הריצו, ותקבלו זווית הגעה בזמן אמת. זה שלב 2 — ואתם כבר יודעים מאיפה הקול מגיע.
שלב 3 — Fusion: עכשיו צריך לחבר את שני מקורות המידע. האודיו נותן לכם זווית גסה (נניח ±10°), והווידאו נותן Bounding Box מדויק. כתבו מודול Python שמקבל את שני הכניסות ומחליט: אם הווידאו מזהה מטרה — השתמשו בו (מדויק יותר). אם לא — כוונו לפי האודיו כדי לחפש.
שלב 4 — שליטה: זוויות הכיוון הרצויות נשלחות ל-STM32 דרך פרוטוקול Serial פשוט. ה-STM32 מריץ PID Controller שמחשב את ה-PWM לכל סרבו. זה לא מסובך כמו שזה נשמע — אבל זה דורש כיול (tuning) סבלני של מקדמי ה-Kp, Ki, Kd.
# === שלב 3: Sensor Fusion — שילוב אודיו + וידאו ===
import serial
import time
from ultralytics import YOLO
import cv2
# טעינת מודל YOLO
model = YOLO("yolov8n.pt") # או מודל מותאם אישית
# חיבור Serial ל-STM32
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.01)
# פרמטרים למצלמה
FRAME_WIDTH = 640
FRAME_HEIGHT = 480
CENTER_X = FRAME_WIDTH // 2
CENTER_Y = FRAME_HEIGHT // 2
# FOV של המצלמה (מעלות)
HFOV = 62.2 # Raspberry Pi Camera V2
VFOV = 48.8
# מצב מערכת
class SystemState:
SEARCHING_AUDIO = "audio_search" # מחפש לפי אודיו
TRACKING_VIDEO = "video_track" # נעול על מטרה בווידאו
LOST = "lost" # אין מידע
state = SystemState.SEARCHING_AUDIO
last_detection_time = 0
TIMEOUT_SEC = 2.0 # זמן לפני מעבר למצב חיפוש
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, FRAME_WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, FRAME_HEIGHT)
def pixel_to_angle(px, py):
"""המרת מיקום פיקסל לזווית סטייה מהמרכז"""
delta_yaw = ((px - CENTER_X) / FRAME_WIDTH) * HFOV
delta_pitch = ((py - CENTER_Y) / FRAME_HEIGHT) * VFOV
return delta_yaw, delta_pitch
def send_angles_to_mcu(yaw, pitch):
"""שליחת זוויות רצויות ל-STM32 דרך Serial"""
cmd = f"YAW:{yaw:+07.2f},PIT:{pitch:+07.2f}\n"
ser.write(cmd.encode('ascii'))
def get_audio_doa():
"""
פונקציה שמחזירה זווית DoA מהמודול האודיו.
בפרויקט אמיתי — זה thread נפרד או process עם shared memory.
"""
# placeholder — החליפו במודול DoA אמיתי
return 0.0
print("[Fusion] מערכת פעילה...")
try:
while True:
ret, frame = cap.read()
if not ret:
continue
# הרצת YOLO
results = model(frame, conf=0.5, verbose=False)
detections = results[0].boxes
if len(detections) > 0:
# מטרה זוהתה בווידאו — מצב נעילה
state = SystemState.TRACKING_VIDEO
last_detection_time = time.time()
# בחירת הזיהוי עם הביטחון הגבוה ביותר
best = detections[0]
x1, y1, x2, y2 = best.xyxy[0].cpu().numpy()
cx = (x1 + x2) / 2
cy = (y1 + y2) / 2
# המרה לזוויות
delta_yaw, delta_pitch = pixel_to_angle(cx, cy)
send_angles_to_mcu(delta_yaw, -delta_pitch) # ציר Y הפוך
# ציור על Frame
cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
cv2.putText(frame, f"LOCKED dY:{delta_yaw:+.1f} dP:{delta_pitch:+.1f}",
(10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
else:
# אין זיהוי וידאו
if time.time() - last_detection_time > TIMEOUT_SEC:
state = SystemState.SEARCHING_AUDIO
audio_yaw = get_audio_doa()
send_angles_to_mcu(audio_yaw, 0.0)
cv2.putText(frame, f"AUDIO SEARCH: {audio_yaw:+.1f}",
(10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 165, 255), 2)
cv2.imshow("Turret Vision", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except KeyboardInterrupt:
pass
finally:
cap.release()
cv2.destroyAllWindows()
ser.close()
print("[Fusion] מערכת כובתה.")
שימו לב — הקוד עובר בין שני מצבים: כשהווידאו מזהה מטרה, הוא נועל עליה ומחשב זוויות סטייה מדויקות. כשהווידאו "מאבד" את המטרה למשך שתי שניות, המערכת עוברת אוטומטית לחיפוש לפי אודיו. זה ה-Sensor Fusion בפעולה.
טעות נפוצה: הרבה סטודנטים מנסים להריץ את כל הקוד ב-thread אחד. אל תעשו את זה. חלקו לשלושה threads — אודיו, וידאו, ושליטה — עם Queue או Shared Memory ביניהם. אחרת תקבלו latency בלתי נסבל.
השאלה הזו עולה תמיד, ואני רוצה לתת לכם תשובה חד-משמעית. הנה טבלת השוואה מפורטת שמבוססת על ניסיון מעשי עם כל הפלטפורמות:
| פרמטר | Raspberry Pi 5 | NVIDIA Jetson Nano | STM32 + Pi Zero 2W | BeagleBone AI-64 |
|---|---|---|---|---|
| ביצועי AI (TOPS) | ~2 (CPU) | 472 GFLOPS (GPU) | ~1 (CPU) | 8 TOPS (DSP) |
| FPS ב-YOLOv8n | 8-12 | 20-30 | 3-5 | 15-20 |
| תמיכה באודיו I2S | ✅ מקורית | ✅ מקורית | ✅ דרך STM32 | ✅ מקורית |
| GPIO למנועים | PWM מוגבל | PWM מוגבל | ✅ מצוין (STM32) | PWM טוב |
| עלות משוערת (₪) | ~350 | ~650 | ~250 | ~700 |
| קהילה ותיעוד | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| המלצה לפרויקט | ✅ מומלץ לתקציב נמוך | ✅ מומלץ ביותר | ✅ אם יש ניסיון ב-Embedded | ⚠️ מורכב להגדרה |
ההמלצה שלי? Jetson Nano אם אתם רוצים את הביצועים הכי טובים — ה-GPU המובנה עושה הבדל דרמטי ב-inference time. אם התקציב מוגבל, Raspberry Pi 5 עם מודול AI HAT (Hailo-8L) הוא אלטרנטיבה מצוינת שנותנת עד 13 TOPS. בכל מקרה, לשליטה על המנועים חברו STM32 (כמו Nucleo-F446RE) — אל תנסו לעשות PWM בזמן אמת מ-Linux.
הנה רשימת חומרים ריאלית לפרויקט מלא. כל הפריטים זמינים ברכישה מקומית בישראל (תוכלו למצוא ב-AliExpress, חנויות אלקטרוניקה בבני-ברק, או דרך Amazon Global):
# === BOM — רשימת חומרים לפרויקט ===
# מחשוב ועיבוד
1x NVIDIA Jetson Nano 4GB Developer Kit ~650₪
1x MicroSD 64GB Class 10 ~40₪
1x ספק כוח 5V/4A barrel jack ~50₪
# חיישנים
1x מצלמה IMX219 (Raspberry Pi Camera V2) ~120₪
4x INMP441 I2S MEMS Microphone ~60₪ (סה"כ)
1x PCB מותאם / breadboard למיקרופונים ~30₪
# הפעלה ומכניקה
1x Pan-Tilt Bracket Kit (2-axis) ~80₪
2x MG996R Servo Motor (180°) ~60₪ (סה"כ)
1x STM32 Nucleo-F446RE ~120₪
1x PCA9685 16-Channel PWM Driver (אופציונלי) ~25₪
# חיבורים
1x USB-to-UART adapter ~20₪
כבלים, jumper wires, connectors ~40₪
1x מארז מודפס ב-3D (אופציונלי) ~50₪
# -------------------------------------------
# סה"כ משוער: ~1,345₪
לפי סקר שערכה הטכניון ב-2024, עלות ממוצעת של פרויקט גמר בהנדסת חשמל/מחשבים עומדת על כ-2,000-4,000 ₪. הפרויקט הזה נופל בחלק התחתון של הטווח — זה יתרון משמעותי.
הנה האמת שלא מספרים לכם בהרצאות: רוב הפרויקטים נכשלים לא בגלל שהאלגוריתמים לא עובדים, אלא בגלל latency. מערכת שמגיבה ב-500ms היא חסרת ערך למשימת מעקב. אתם צריכים להגיע לפחות ל-100ms מקצה לקצה — מרגע הזיהוי ועד תנועת המנוע.
ראשית — מדדו. לא תנחשו. שימו timestamps בכל שלב בצינור העיבוד ותדפיסו את הזמנים:
import time
class LatencyProfiler:
"""מודד latency לכל שלב בצינור העיבוד"""
def __init__(self):
self.timestamps = {}
self.history = []
def mark(self, label):
self.timestamps[label] = time.perf_counter()
def report(self):
keys = list(self.timestamps.keys())
total = (self.timestamps[keys[-1]] - self.timestamps[keys[0]]) * 1000
parts = []
for i in range(1, len(keys)):
dt = (self.timestamps[keys[i]] - self.timestamps[keys[i-1]]) * 1000
parts.append(f" {keys[i-1]} → {keys[i]}: {dt:.1f}ms")
report = "\n".join(parts)
report += f"\n === סה\"כ: {total:.1f}ms ==="
self.history.append(total)
if len(self.history) >= 100:
avg = sum(self.history) / len(self.history)
mx = max(self.history)
print(f"\n[Stats] ממוצע: {avg:.1f}ms | שיא: {mx:.1f}ms")
self.history.clear()
return report
# שימוש בתוך הלולאה הראשית:
prof = LatencyProfiler()
# בתוך while True:
prof.mark("frame_capture")
# ... קריאת frame ...
prof.mark("yolo_inference")
# ... הרצת YOLO ...
prof.mark("fusion_calc")
# ... חישוב Sensor Fusion ...
prof.mark("serial_send")
# ... שליחה ל-STM32 ...
prof.mark("done")
print(prof.report())
טיפים קונקרטיים לשיפור latency:
1. הקטינו את רזולוציית הכניסה — YOLO ב-320x320 מהיר פי 2 מ-640x640, עם ירידה קלה בדיוק. 2. השתמשו ב-TensorRT על Jetson — המרת המודל ל-FP16 יכולה להכפיל את ה-FPS. 3. הפרידו threads — אודיו, וידאו, ושליטה. השתמשו ב-multiprocessing ולא ב-threading (בגלל ה-GIL של Python).
שורה תחתונה לפועלים: אם ה-latency שלכם מעל 150ms, הבעיה היא כמעט תמיד בשלב ה-inference של הרשת הנוירונית. אופטימיזציה עם TensorRT או מעבר למודל קטן יותר (YOLOv8-nano במקום YOLOv8-small) זה המקום הראשון לחפש.
פרויקט גמר שמציג מערכת תזמון נבחן על פי מדדים כמותיים, לא על פי הרגשה. הנה המדדים שכדאי לתעד ולהציג:
דיוק זוויתי (Angular Accuracy): מהי הסטייה הממוצעת בין כיוון הקנה לבין המטרה? מדד סביר: פחות מ-2° סטייה ממוצעת. זמן נעילה (Lock-on Time): כמה זמן לוקח מרגע הופעת המטרה ועד שהקנה מכוון אליה? מדד סביר: פחות מ-500ms. שיעור זיהוי (Detection Rate): מתוך 100 ניסיונות, כמה פעמים המערכת זיהתה ונעלה בהצלחה? מדד סביר: מעל 90%. שיעור חיובי שגוי (False Positive Rate): כמה פעמים המערכת נעלה על משהו שהוא לא מטרה? מדד סביר: פחות מ-5%.
לפי מחקר של MIT Lincoln Laboratory מ-2023, מערכות Sensor Fusion מבוססות אודיו-וידאו משפרות את שיעור הזיהוי הכולל ב-15%-25% לעומת שימוש בחיישן בודד. זה בדיוק מה שאתם צריכים להדגים בפרויקט — שהשילוב עדיף על כל חיישן בנפרד.
הציגו וידאו דמו של 60 שניות שמראה את המערכת בפעולה — כולל מצב שבו האודיו מוביל (מטרה מחוץ לשדה הראייה) ומצב שבו הווידאו נועל. הוסיפו overlay בזמן אמת שמראה את ה-Bounding Box, זווית ה-DoA, ומצב המערכת (SEARCHING / TRACKING / LOCKED). זה מה שהופך פרויקט טוב לפרויקט מעולה.
הכינו פוסטר A0 עם דיאגרמת בלוקים ברורה, גרפים של ביצועים (latency histogram, accuracy scatter plot), ותמונה של המערכת הפיזית. אל תזלזלו בחלק הוויזואלי — הרושם הראשוני חשוב.
פרויקט תזמון קנה יורה עם מערכת זיהוי משולבת אודיו-וידאו הוא פרויקט גמר שמשלב את כל מה שתעשיית ה-Embedded ו-Edge AI מחפשים: עיבוד אותות, ראייה ממוחשבת, Sensor Fusion, שליטה בזמן אמת, ואינטגרציית חומרה-תוכנה. הוא לא קל — אבל הוא בדיוק ברמה שמוכיחה שאתם מוכנים לתעשייה.
עודכן: 2026-07-02
טכנית כן, אבל זה לא מומלץ. ה-Raspberry Pi מריץ Linux שהוא לא מערכת הפעלה של זמן אמת (RTOS). ה-PWM שלו דרך GPIO הוא Software PWM עם ריצודים (jitter) ניכרים — מספיק כדי לגרום לסרבו לרעוד. שימוש ב-PCA9685 (מודול PWM חיצוני) יכול לפתור חלק מהבעיה, אבל לקבלת לולאת PID יציבה ב-1kHz, אתם צריכים STM32 או מיקרו-בקר אחר עם טיימרים ייעודיים.
המינימום הוא 2 מיקרופונים — זה נותן לכם זווית במישור אחד (ימין/שמאל). עם 3 מיקרופונים בתצורה משולשית מקבלים זווית דו-ממדית (אזימוט + הגבהה). ההמלצה שלנו: 4 מיקרופונים בתצורת ULA (Uniform Linear Array) או מעגלית. זה נותן יתירות שמשפרת את הדיוק ומאפשרת לסנן רעשים. מערך ReSpeaker 4-Mic HAT הוא פתרון מדף מעולה למי שלא רוצה להלחים.
YOLOv8-nano (מ-Ultralytics) הוא הבחירה האידיאלית. הוא שוקל רק 3.2MB, רץ ב-20-30 FPS על Jetson Nano אחרי המרה ל-TensorRT FP16, ונותן mAP של 37.3 על COCO. אם המטרה שלכם ספציפית (נניח דמות מסוימת), אמנו עליו fine-tuning עם 500+ תמונות — תקבלו דיוק גבוה הרבה יותר מהמודל הגנרי. הפקודה: yolo export model=yolov8n.pt format=engine device=0 half=True.
בהנחה שיש רקע בסיסי ב-Python ו-Embedded, לוח הזמנים הריאלי הוא 12-16 שבועות: שבועות 1-3 — רכש חומרים, הקמת סביבה, אימון מודל YOLO. שבועות 4-6 — מודול אודיו DoA. שבועות 7-9 — אינטגרציה Sensor Fusion + שליטת מנועים. שבועות 10-12 — בדיקות, כיול PID, מדידות ביצועים. שבועות 13-16 — תיעוד, הכנת פוסטר, דמו. אל תקצרו את שלב הבדיקות — זה תמיד לוקח יותר ממה שחושבים.
בהחלט. תעשיית ההגנה הישראלית (אלביט, רפאל, IAI) מפתחת מערכות Sensor Fusion מתקדמות, וחברות סטארטאפ כמו Xtend ו-Percepto עובדות על רחפנים אוטונומיים עם יכולות דומות. לפי דו"ח IVC Research לשנת 2025, יותר מ-45% מסטארטאפי ה-Defense-Tech הישראליים מפתחים מערכות Vision+AI. פרויקט גמר שמדגים Sensor Fusion, Edge AI, ו-Real-Time Control על חומרה אמיתית — זה בדיוק מה שמגייסי R&D מחפשים בקורות חיים.
לחלק של ה-Host (Jetson/Pi) — Python מספיק לחלוטין. YOLO, OpenCV, NumPy, PyAudio — הכל עובד ב-Python. אבל לחלק של ה-STM32, תצטרכו C. קוד ה-PID Controller, קריאת UART, וייצור PWM נכתבים ב-C עם HAL של STM32. אם אין לכם ניסיון ב-C, זו הזדמנות מצוינת ללמוד — הקוד ב-STM32 קצר ומבודד, כך שזה לא מפחיד כמו שזה נשמע. השתמשו ב-STM32CubeIDE ובדוגמאות הקוד שמגיעות איתו.
Complementary Filter הוא פשוט ומהיר — הוא שוקלל ליניארי בין שני מקורות: output = alpha * video + (1-alpha) * audio. מעולה להתחלה, קל לכיול, ורץ בלי overhead. Extended Kalman Filter (EKF) הוא מתקדם יותר — הוא מתחשב באי-הוודאות של כל חיישן ומעדכן את ההערכה באופן אופטימלי. אבל הוא דורש מודל מתמטי של הדינמיקה ומטריצות שונות (covariance). ההמלצה: התחילו עם Complementary Filter, הציגו תוצאות, ואם נשאר זמן — שדרגו ל-EKF ותראו שיפור מדיד. זה בונוס יפה לציון.
לא צריך תואר כדי לבנות מערכת כזו — צריך רעב ומעבדה נכונה. אנחנו רואים אתכם קדימה ממקום שאתם רואים את עצמכם. הפרויקט הזה הוא לא רק ציון — הוא ההוכחה שאתם יכולים לקחת רעיון מורכב ולהפוך אותו לברזל ולקוד שעובדים. אם אתם רוצים להעמיק עוד בתחומי Embedded, Edge AI, ומערכות זמן אמת — יש לנו עוד המון מדריכים מעשיים באתר rt-ed.co.il. הדלת פתוחה, תמיד.