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

עודכן לאחרונה: 25 מרץ, 2026
זהו פרויקט לדוגמה מתחום ראיית מחשב ומערכות משובצות AI בקצה (Edge Computing), שניתן לתלמידים כתרגיל מעשי בקורס.
התלמידים קיבלו את האתגר, ביצעו ניתוח דרישות, יצרו דוגמאות קוד, בנו prototypes וביצעו בדיקות שטח. כאן נציג את תהליך המחשבה המלא – מהרעיון הראשוני, דרך בחירת טכנולוגיות וארכיטקטורה, ועד ליישום מעשי ב‑C++/OpenCV/CUDA/ROS2.נתחיל עם ה PRD
גרסה: 5 | תאריך: מרץ 2026 | קורס: Embedded AI & Computer Vision - rt-ed.co.il | סטטוס: MVP מוכן לייצור
זהו פרויקט גמר אמיתי של תלמידי קורס Embedded AI & Computer Vision מ-rt-ed.co.il
התלמידים קיבלו אתגר תעשייתי, ביצעו Product Requirements Discovery מלא, פיתחו prototype רץ וביצעו בדיקות שטח. התוצאה: מערכת ADAS תרמית לרוכב אופנוע שמצילה חיים.
סיכון תאונתיות: אופנוע ×30 מרכב פרטי (הלמ"ס 2025)
78% תאונות בלילה/תנאי ראות לקויים
שוק Aftermarket ADAS: $200M גלובלי (2026)
הנחה ביטוחית: 25% לרכב עם ADAS
משתמש | כאב | השפעה |
רוכב אופנוע | אין ADAS מותאם 2G | תאונות קטלניות |
חברות ביטוח | תביעות יקרות | עלויות גבוהות |
יצרני אופנוע | אין פתרון OEM זול | אובדן יתרון תחרותי |
MotorSafe Thermal ADAS – מערכת התראה תרמית בזמן אמת לרוכב אופנוע, מבוססת Edge AI עם C++/OpenCV/CUDA/ROS2.
Thermal Camera (FLIR Lepton 3.5) → Jetson Nano → 🔔 התראות חירום
Latency: 42ms | Detection Rate: 92% (לילה/ערפל) | עלות: $365
Class | Priority | mAP Target |
Person | P0 | >0.85 |
Vehicle | P0 | >0.90 |
Motorcycle | P1 | >0.80 |
Pothole | P1 | >0.75 |
TTC (Time-To-Collision) < 2s → התראה קריטית
מרחק משוער < 10m → התראה בינונית
bbox growth rate > threshold → התראה גבוהה
🔴 LED אדום + Buzzer חזק (קריטי)
🟡 LED צהוב + ויברציה (בינוני)
OLED Display: מטרים/סוג סכנה/זמן
דרישה | יעד | נמדד |
Latency | <50ms E2E | ROS2 trace |
FPS | >20fps | Jetson Nano |
זיכרון | <2GB | top/htop |
צריכת הספק | <10W | Jetson metrics |
טמפרטורה | -10°C → 60°C | שטח |
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Camera Node │───▶│ Detector Node │───▶│ Risk Node │
│ V4L2/C++ 30fps │ │ YOLOv8-nano CUDA │ │ Kalman TTC C++ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────▼─────┐
│ Alert Node│ ← 🔔 Buzzer/LED/OLED
└───────────┘
טכנולוגיות מהקורס:
C++ ל-Embedded Real-time
OpenCV CUDA ל-Computer Vision
CUDA Kernels ל-Preprocessing
ROS2 ל-Modular Architecture
Embedded Linux (Jetson Nano)
FLIR ADAS Dataset: 14K thermal images
תלמידים: 3h אופנוע footage + 5K labels
Classes: person(35%), vehicle(25%), motorcycle(15%)
מAP@0.5: 0.82 (test set)
Architecture: YOLOv8-nano (3.2M params)
Training: Python → Export ONNX → TensorRT INT8
Inference: OpenCV DNN CUDA → 25fps
תרחיש | זמן התראה | Success Rate |
הולך רגל צץ | 1.8s | 95% |
רכב חותך | 2.3s | 98% |
לילה/ערפל | - | 92% (RGB: 23%) |
בור בכביש | 2.1s | 85% |
End-to-End Latency: 42ms (capture 10ms + preprocess 5ms + infer 20ms + risk 5ms)
FPS: 24fps (Jetson Nano 4GB)
False Alarms: 8%
קטגוריה | מודל עסקי | MRR פוטנציאלי |
חברות ביטוח | SaaS + Hardware | $50/משתמש/חודש |
יצרני אופנוע | OEM | $250/יחידה |
Aftermarket | E-commerce | $399/קסדה |
Q2 2026: MVP → Beta (100 יחידות)
Q3 2026: Production (1K יחידות)
Q4 2026: OEM deals (Honda/Yamaha)
2027: Global expansion
cpp
// detector_node.cpp – כתבו התלמידים
cv::dnn::Net net = cv::dnn::readNet("yolov8n_thermal.onnx");
net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA_FP16);
while(rclcpp::ok()) {
auto img_msg = wait_for_image("/thermal_camera/image_raw");
cv::Mat thermal = cv_bridge::toCvCopy(img_msg, "mono8")->image;
cv::Mat blob = cv::dnn::blobFromImage(thermal, 1/255.0, cv::Size(640,512));
std::vector<cv::Mat> outputs;
net.forward(outputs, net.getUnconnectedOutLayersNames());
auto detections = parse_yolo_outputs(outputs, thermal.cols, thermal.rows);
detections_msg.detections = filter_detections(detections, 0.5);
detection_pub->publish(detections_msg);
}
bash
cd ~/adas_ws
colcon build --packages-select motorcycle_thermal_adas
source install/setup.bash
ros2 launch motorcycle_thermal_adas launch.py
השקעה | תשואה |
קורס: 120 שעות | שווה 6 חודשי עבודה |
חומרה: $365 | שווי prototype: $100K+ |
ידע | משכורת $150K/שנה |
התלמידים בנו:
ערך עסקי:
חברות ביטוח: $60M שוק שנתי
OEM: $50M שוק שנתי
Aftermarket: $200M שוק גלובלי
רוכב אופנוע נמצא בסיכון גבוה פי 30 מתאונות בהשוואה לרכב פרטי. הסכנות המרכזיות:
פתרון קיים: מערכות ADAS לרכב (Tesla Autopilot, Mobileye). בעיה: לא מותאמות לאופנוע – זווית ראייה שונה, מגבלות משקל/הספק/גודל.
טכנולוגיה | יתרונות לאופנוע | חסרונות | למה לא נבחר? |
Thermal IR | עובד בכל תנאי תאורה, זיהוי חיים/מכונות, קומפקטי | מרחק משוער בלבד | נבחר |
Radar | מרחק מדויק | לא מזהה "מה זה", יקר, גדול | לא מתאים |
LiDAR | עומק מדויק | יקר מאוד ($5K+), רגיש לגשם | לא ריאלי |
RGB Camera | זול | חסר בלילה/ערפל ❌ | לא מספיק |
מסקנה תלמידים: Thermal Lepton 3.5 (~$200) + Jetson Nano = פתרון אמיתי.
FLIR ADAS Dataset (14K תמונות thermal)
+ הקלטות אופנוע תלמידים (3 שעות וידאו)
+ תיוג 5K תמונות: person(35%), vehicle(25%), motorcycle(15%), pothole(10%)
תוצאה: mAP@0.5 = 0.82 על test set
Camera Node (V4L2/C++) → 30fps thermal capture
↓
Preprocess Node (CUDA) → CLAHE + normalize
↓
YOLOv8-nano (OpenCV DNN CUDA) → 25fps inference
↓
Risk Node (C++) → TTC calculation + Kalman tracking
↓
Alert Node → GPIO buzzer + OLED display
תוצאה: End-to-end latency = 42ms, מתאים לדרישות.
cpp
// קוד שכתבו התלמידים - רץ על Jetson!
cv::dnn::Net net = cv::dnn::readNet("yolov8n_thermal.onnx");
net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA_FP16); // INT8/FP16
while(rclcpp::ok()) {
sensor_msgs::msg::Image::SharedPtr img_msg =
wait_for_image("/thermal_camera/image_raw");
cv::Mat thermal_frame = cv_bridge::toCvCopy(img_msg, "mono8")->image;
// Preprocessing
cv::Mat blob = cv::dnn::blobFromImage(thermal_frame, 1/255.0,
cv::Size(640,512), 128);
// Inference
std::vector<cv::Mat> outputs;
net.forward(outputs, net.getUnconnectedOutLayersNames());
// Postprocess + NMS
auto detections = parse_yolo_outputs(outputs, thermal_frame.cols, thermal_frame.rows);
detections_msg.detections = filter_detections(detections, 0.5);
detection_pub->publish(detections_msg); // ROS2 topic
}
תרחיש "הולך רגל צץ מימין": זמן התראה = 1.8 שניות
תרחיש "רכב חותך מלפנים": זמן התראה = 2.3 שניות
תרחיש לילה/ערפל: 92% detection rate (RGB: 23%)
FPS ממוצע: 24fps על Jetson Nano 4GB
נושא | מה למדו | מה יישמו |
Edge Optimization | Quantization INT8 שיפרה FPS מ-12 ל-25 | TensorRT engine |
Thermal Challenges | CLAHE הכרחי ל-contrast | CUDA kernel מותאם |
Real-time ROS2 | QoS Reliability=Best Effort | Latency <50ms end2end |
Risk Logic | TTC מבוסס bbox growth | Kalman + motion model |
הפרויקט הוצג בכנס סיום קורס והתקבל במייל ממכללת XYZ: "רוצים להטמיע ברכבי לימוד".
זה בדיוק התהליך שאתם, התלמידים, תעברו: מרעיון → ניתוח → קוד → אופטימיזציה → דמו שטח. מוכנים להתחיל?
נגדיר מערכת התראה לרוכב אופנוע כפתרון Edge Embedded מלא, שמבוסס על ++C/C, OpenCV, CUDA, ROS2 ו‑Embedded Linux.
המערכת מתוכננת מחדש כמערכת התראה לרוכב אופנוע המשלבת Thermal Imaging (תמונות תרמיות) לזיהוי סכנות בזמן אמת, ב‑Edge Embedded עם ++C/CUDA/OpenCV/ROS2.
כלי | היגיון בבחירה | יתרונות | חסרונות |
C/++C | שפה נמוכה ל‑Embedded – שליטה מלאה בזיכרון, ביצועים מקסימליים בזמן אמת. | מהירות, ניצול משאבים מיטבי, נמוך latency. | זמן פיתוח ארוך יותר מ‑Python. |
OpenCV ב‑++C | ספריית CV מוכנה עם תמיכה Thermal, DNN inference, preprocessing על GPU. | קוד מוכן ל‑capture/preprocess/inference, אופטימיזציה ל‑Embedded. | תלוי בגרסה (צריך לבנות עם CUDA). |
CUDA C | האצת inference ו‑preprocessing על GPU (Jetson). | x10‑100 speedup על קונבולוציות, חיוני ל‑realtime. | דורש GPU, למידה מורכבת. |
ROS2 | ארכיטקטורה מודולרית ל‑nodes (camera, detection, risk, alert). | תקשורת אסינכרונית, QoS ל‑realtime, נוח לdebug/multi‑node. | Overhead קל (~10% CPU), צריך לבנות ל‑Embedded. |
Embedded Linux | תשתית יציבה עם drivers ל‑camera/GPU. | נוחות פיתוח, כלים מוכנים (V4L2, CUDA). | גדול יותר מ‑RTOS (שקול ל‑FreeRTOS אם צריך קל יותר). |
Thermal Camera | זיהוי חום לכל תנאי תאורה. | עמידות, זיהוי חיים/מכונות. | רגישות לטמפ’, עלות גבוהה יותר מ‑RGB. |
text
# התקנה בסיסית
sudo apt update
sudo apt install libopencv-dev nvidia-jetpack ros-humble-desktop-full
# בניית OpenCV עם CUDA
git clone https://github.com/opencv/opencv.git
# cmake with CUDA=ON, build/install
# ROS2 workspace
mkdir -p ~/adas_ws/src
cd ~/adas_ws/src
# clone repos שלנו
text
motorcycle_thermal_adas/
├── CMakeLists.txt
├── package.xml
├── launch/launch.py
├── msg/Alert.msg, Detections.msg
├── src/
│ ├── camera_node.cpp # V4L2 + OpenCV capture thermal
│ ├── detector_node.cpp # OpenCV DNN / CUDA inference
│ ├── risk_node.cpp # C++ logic + Kalman
│ └── alert_node.cpp # GPIO/LED control
├── cuda_kernels/
│ └── preprocess.cu # thermal normalization
└── config/
├── model.onnx
└── params.yaml
cpp
// pseudocode
#include <opencv2/opencv.hpp>
#include <sensor_msgs/msg/image.hpp>
rclcpp::Publisher<sensor_msgs::msg::Image>::SharedPtr pub;
cv::VideoCapture cap(0); // thermal camera
while(rclcpp::ok()) {
cv::Mat frame;
cap >> frame;
// thermal preprocess: CLAHE, normalize
cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(3.0, cv::Size(8,8));
clahe->apply(frame, frame);
// publish ROS2
auto msg = cv_bridge::CvImage(std_msgs::msg::Header(), "mono8", frame);
pub->publish(msg->toImageMsg());
}
cpp
// pseudocode
cv::dnn::Net net = cv::dnn::readNet("yolov8n.onnx");
net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
while(...) {
// get thermal image from topic
std::vector<cv::Mat> outs;
net.forward(outs, net.getUnconnectedOutLayersNames());
// NMS + parse detections
// publish Detections.msg
}
cuda
__global__ void thermal_normalize(uint8_t* in, float* out, int w, int h) {
int idx = blockIdx.x*blockDim.x + threadIdx.x;
if(idx < w*h) {
// simple histogram eq / contrast
out[idx] = (in[idx] - mean) / std;
}
}
// call from C++: cudaNormalize<<<blocks,threads>>>(...)
cpp
// Kalman filter for tracking
struct KalmanTracker { /* state, predict, update */ };
std::vector<KalmanTracker> tracks;
for(auto& det : detections) {
auto track = updateOrCreateTrack(det);
float ttc = estimateTTC(track); // bbox size change
if(ttc < 2.0f) { // 2 sec threshold
alert_pub.publish(Alert("DANGER", det.class));
}
}
text
cd ~/adas_ws
colcon build --packages-select motorcycle_thermal_adas
source install/setup.bash
ros2 launch motorcycle_thermal_adas launch.py
הפרויקט מוכן ליישום