{"id":27247,"date":"2026-07-25T10:48:38","date_gmt":"2026-07-25T10:48:38","guid":{"rendered":"https:\/\/umang.pk\/2026\/07\/25\/ros-2-%d8%a7%d9%88%d8%b1-yolov11-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%b1%db%8c%d8%a6%d9%84-%d9%b9%d8%a7%d8%a6%d9%85-%d8%a2\/"},"modified":"2026-07-25T10:48:38","modified_gmt":"2026-07-25T10:48:38","slug":"ros-2-%d8%a7%d9%88%d8%b1-yolov11-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%b1%db%8c%d8%a6%d9%84-%d9%b9%d8%a7%d8%a6%d9%85-%d8%a2","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/07\/25\/ros-2-%d8%a7%d9%88%d8%b1-yolov11-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%b1%db%8c%d8%a6%d9%84-%d9%b9%d8%a7%d8%a6%d9%85-%d8%a2\/","title":{"rendered":"ROS 2 \u0627\u0648\u0631 YOLOv11 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0679\u0631\u06cc\u06a9\u0646\u06af \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc\u06ba"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u06af\u0631 \u0622\u067e \u0646\u06d2 \u06a9\u0628\u06be\u06cc \u0627\u06cc\u0633\u0627 \u0631\u0648\u0628\u0648\u0679\u06a9 \u0646\u0638\u0627\u0645 \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2 \u062c\u0648 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u0627\u067e\u0646\u06d2 \u0627\u0631\u062f\u06af\u0631\u062f \u06a9\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u0648 \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0679\u0631\u06cc\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u067e\u0631 \u0631\u062f\u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0633\u06cc\u0646\u0633\u0646\u06af \u0645\u0627\u0688\u0644 \u06a9\u06cc \u062a\u0631\u0628\u06cc\u062a \u0645\u0634\u06a9\u0644 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4 \u0645\u0634\u06a9\u0644 \u062d\u0635\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0627\u0688\u0644 \u062d\u0642\u06cc\u0642\u06cc \u0631\u0648\u0628\u0648\u0679 \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u062d\u0642\u06cc\u0642\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u06cc \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06cc\u0627 \u0648\u0642\u062a \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0648\u0642\u062a \u06a9\u0648 \u062a\u0648\u0691\u06d2 \u0628\u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 ROS 2 \u0627\u0648\u0631 YOLOv11 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0679\u0631\u06cc\u06a9\u0646\u06af \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0645\u0631\u06c1 \u0641\u0631\u06cc\u0645\u0632 \u06a9\u0648 \u0633\u0645\u06cc\u0644\u06cc\u0679\u0631 \u0633\u06d2 ROS 2 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u067e\u0648\u0633\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c YOLO \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 \u0648\u0642\u0641 \u0634\u062f\u06c1 \u062f\u06be\u0627\u06af\u06d2 \u067e\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u062a\u0645\u0627\u0645 \u0641\u0631\u06cc\u0645\u0648\u06ba \u0645\u06cc\u06ba \u0645\u0644\u0679\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0679\u0631\u06cc\u06a9\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 ByteTrack \u06a9\u0648 \u0627\u0646\u0679\u06cc\u06af\u0631\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0645\u062d\u062f\u0648\u062f \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u062a\u06cc\u0632 \u062a\u0631 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 ONNX \u067e\u0631 \u0627\u06cc\u06a9\u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0622\u0631\u0679\u06cc\u06a9\u0644 \u06a9\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645 \u062a\u06a9\u060c \u0622\u067e \u0646\u06c1 \u0635\u0631\u0641 \u06cc\u06c1 \u0633\u0645\u062c\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0679\u0648\u0644\u0632 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0633\u06d2 \u0641\u0679 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0628\u0644\u06a9\u06c1 \u06cc\u06c1 \u0628\u06be\u06cc \u0633\u0645\u062c\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06c1\u0631 \u0627\u06cc\u06a9 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u0641\u06cc\u0635\u0644\u06c1 \u0634\u0646\u0627\u062e\u062a\u06cc \u0646\u0638\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06cc\u0648\u06ba \u0627\u06c1\u0645 \u06c1\u06d2 \u062c\u0633 \u06a9\u0627 \u0645\u0642\u0635\u062f \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0644\u06cc\u067e \u0679\u0627\u067e \u067e\u0631 \u0628\u06be\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u06c1\u0645 \u06a9\u06cc\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2:<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u062f\u0631\u062c \u0630\u06cc\u0644 \u0633\u06d2 \u0648\u0627\u0642\u0641 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><strong>Python 3.10 \u0627\u0648\u0631 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1:<\/strong> \u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u06a9\u0648\u0688 Python \u0645\u06cc\u06ba \u0644\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0628\u0646\u06cc\u0627\u062f\u06cc ROS 2 \u0639\u0644\u0645:<\/strong> \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 \u0646\u0648\u0688\u060c \u0645\u0648\u0636\u0648\u0639\u060c \u067e\u0628\u0644\u0634\u0631\u060c \u0627\u0648\u0631 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628\u0631 \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e ROS 2 \u0645\u06cc\u06ba \u0646\u0626\u06d2 \u06c1\u06cc\u06ba \u062a\u0648\u060c \u0633\u0631\u06a9\u0627\u0631\u06cc ROS 2 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u0627\u06cc\u06a9 \u0627\u0686\u06be\u0627 \u0646\u0642\u0637\u06c1 \u0622\u063a\u0627\u0632 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>PyTorch \u0627\u0648\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0627 \u0639\u0644\u0645:<\/strong> \u0622\u067e \u06a9\u0648 YOLO \u0645\u0627\u0688\u0644 \u06a9\u0648 \u062e\u0648\u062f \u062a\u0631\u0628\u06cc\u062a \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 \u062a\u062e\u0645\u06cc\u0646\u06c1 \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0627\u0624\u0646\u0688\u0646\u06af \u0628\u0627\u06a9\u0633 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc ROS 2 \u0634\u0627\u0626\u0633\u062a\u06c1 \u062a\u0646\u0635\u06cc\u0628<\/strong> Ubuntu 22.04 \u067e\u0631\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>GPU \u06a9\u06cc \u0633\u0641\u0627\u0631\u0634 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/strong> \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 CPU \u067e\u0631 \u06a9\u0645 \u0641\u0631\u06cc\u0645 \u0631\u06cc\u0679 \u067e\u0631 \u0686\u0644\u062a\u06cc \u0631\u06c1\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>CARLA \u0633\u0645\u06cc\u0644\u06cc\u0679\u0631 (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc):<\/strong> \u06a9\u06cc\u0645\u0631\u06c1 \u067e\u0628\u0644\u0634\u0631 \u0633\u06cc\u06a9\u0634\u0646 CARLA \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 CARLA \u0627\u0646\u0633\u0679\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e ROS 2 \u06a9\u06d2 \u0645\u0648\u0627\u0641\u0642 \u06a9\u06cc\u0645\u0631\u06c1 \u0645\u0627\u062e\u0630 \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u0648\u06cc\u0628 \u06a9\u06cc\u0645 \u0646\u0648\u0688 \u06cc\u0627 \u0628\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u067e\u0644\u06d2 \u0628\u06cc\u06a9 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"heading-what-we-are-building-and-why\">\u06c1\u0645 \u06a9\u06cc\u0627 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u06cc\u0648\u06ba<\/h2>\n<p>\u067e\u0631\u0633\u06cc\u067e\u0634\u0646 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0631\u0648\u0628\u0648\u0679\u06a9 \u0633\u0633\u0679\u0645 \u06a9\u0627 \u0648\u06c1 \u062d\u0635\u06c1 \u06c1\u06d2 \u062c\u0648 \u0631\u0648\u0628\u0648\u0679 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0630\u0645\u06c1 \u062f\u0627\u0631 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062e\u0627\u0645 \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0679\u0627 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0645\u0631\u06d2 \u06a9\u06d2 \u0641\u0631\u06cc\u0645\u060c \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0633\u0627\u062e\u062a\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: \u06a9\u0648\u0626\u06cc \u0686\u06cc\u0632 \u06a9\u06c1\u0627\u06ba \u06c1\u06d2\u060c \u06a9\u06cc\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06cc\u0633\u06d2 \u062d\u0631\u06a9\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0686\u0627\u0631 \u0627\u0644\u06af \u0627\u0644\u06af \u062a\u06c1\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0634\u0646\u0627\u062e\u062a\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ol>\n<li>\n<p><strong>\u06a9\u06cc\u0645\u0631\u06d2 \u0645\u062c\u0645\u0648\u0639\u06c1<\/strong> \u0633\u0645\u06cc\u0644\u06cc\u0679\u0631 \u0633\u06d2 \u062e\u0627\u0645 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0641\u0631\u06cc\u0645\u0648\u06ba \u06a9\u0648 \u06a9\u06cc\u067e\u0686\u0631 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba ROS 2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0634\u0627\u0626\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0646\u06c1\u06cc\u06ba \u0628\u0627\u0642\u06cc \u0631\u0648\u0628\u0648\u0679 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06a9\u0631\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u0627<\/strong> \u06c1\u0645 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u06d2 \u0627\u0633\u06a9\u0648\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0634\u06cc\u0627\u0621 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06d2 \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u0631 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0641\u0631\u06cc\u0645 \u067e\u0631 YOLOv11 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0679\u0631\u06cc\u06a9\u0646\u06af<\/strong> ByteTrack \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0645\u0627\u0645 \u0641\u0631\u06cc\u0645\u0648\u06ba \u0645\u06cc\u06ba \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06cc \u0632\u0646\u062c\u06cc\u0631 \u0628\u0646\u0627 \u06a9\u0631\u060c \u06c1\u0645 \u06c1\u0631 \u0641\u0631\u06cc\u0645 \u06a9\u0648 \u0627\u06cc\u06a9 \u0646\u0626\u06d2 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0645\u0633\u062a\u062d\u06a9\u0645 ID \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u0635\u062f\u06cc\u0642 \u0627\u0648\u0631 \u0627\u0635\u0644\u0627\u062d<\/strong> \u0627\u06cc\u06a9 \u0679\u0631\u0633\u0679 \u06af\u06cc\u0679\u0646\u06af \u067e\u0631\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u06a9\u0645 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06cc \u06a9\u06be\u0648\u062c\u0648\u06ba \u06a9\u0648 \u0646\u06cc\u0686\u06d2 \u06a9\u06cc \u062f\u06be\u0627\u0631\u06d2 \u06a9\u06cc \u062a\u0644\u0627\u0634 \u06a9\u06cc \u0645\u0646\u0637\u0642 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0646\u0627\u0631\u06d2 \u06a9\u06d2 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u062a\u06cc\u0632 \u062a\u0631 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 ONNX \u06a9\u0648 \u0628\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u06c1\u0645 CARLA \u06a9\u0648 \u0628\u0637\u0648\u0631 \u0633\u0645\u06cc\u0644\u06cc\u0679\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 CARLA \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u0627\u0646\u06c1 \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0679\u0627\u060c \u0642\u0627\u0628\u0644 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0645\u0627\u062d\u0648\u0644\u060c \u0627\u0648\u0631 Python \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc\u0645\u0631\u06c1 \u0627\u062f\u0627\u06a9\u0627\u0631 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0627\u0633\u06d2 \u062e\u0648\u062f \u0645\u062e\u062a\u0627\u0631 \u06af\u0627\u0691\u06cc \u0627\u0648\u0631 \u0645\u0648\u0628\u0627\u0626\u0644 \u0631\u0648\u0628\u0648\u0679 \u067e\u0631\u0633\u06cc\u067e\u0634\u0646 \u0631\u06cc\u0633\u0631\u0686 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0642\u062f\u0631\u062a\u06cc \u0641\u0679 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0633\u06cc\u0646\u0633\u0631 \u0630\u0631\u06cc\u0639\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 ROS 2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u0635\u0631\u0641 \u06a9\u06cc\u0645\u0631\u06c1 \u067e\u0628\u0644\u0634\u0631 \u0646\u0648\u0688 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-project-structure\">\u0645\u0646\u0635\u0648\u0628\u06d2 \u06a9\u06cc \u0633\u0627\u062e\u062a<\/h2>\n<p>\u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u06a9\u0648\u0688 \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u0645\u062c\u0645\u0648\u0639\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4 \u0645\u06a9\u0645\u0644 \u0634\u062f\u06c1 \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">ros2_perception_ws\/\n\u251c\u2500\u2500 src\/\n\u2502   \u2514\u2500\u2500 perception_stack\/\n\u2502       \u251c\u2500\u2500 perception_stack\/\n\u2502       \u2502   \u251c\u2500\u2500 __init__.py\n\u2502       \u2502   \u251c\u2500\u2500 camera_publisher.py      # Publishes CARLA frames into ROS 2\n\u2502       \u2502   \u251c\u2500\u2500 perception_node.py       # Threaded YOLO inference node\n\u2502       \u2502   \u251c\u2500\u2500 tracker.py               # ByteTrack integration\n\u2502       \u2502   \u251c\u2500\u2500 validator.py             # Confidence gating layer\n\u2502       \u2502   \u2514\u2500\u2500 export_onnx.py           # ONNX export script\n\u2502       \u251c\u2500\u2500 models\/\n\u2502       \u2502   \u2514\u2500\u2500 yolov11n.pt              # Downloaded YOLO weights\n\u2502       \u251c\u2500\u2500 package.xml\n\u2502       \u251c\u2500\u2500 setup.py\n\u2502       \u2514\u2500\u2500 setup.cfg\n\u251c\u2500\u2500 requirements.txt\n\u2514\u2500\u2500 README.md\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0641\u0627\u0626\u0644 \u06a9\u06cc \u0627\u06cc\u06a9 \u0630\u0645\u06c1 \u062f\u0627\u0631\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0639\u0644\u06cc\u062d\u062f\u06af\u06cc \u0631\u0648\u0628\u0648\u0679\u06a9\u0633 \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0645 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0634\u0646\u0627\u062e\u062a\u060c \u0679\u0631\u06cc\u06a9\u0646\u06af\u060c \u0627\u0648\u0631 \u062a\u0648\u062b\u06cc\u0642 \u0645\u062e\u062a\u0644\u0641 \u0634\u0631\u062d\u0648\u06ba \u067e\u0631 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0627\u0644\u06af \u0633\u06d2 \u062c\u0627\u0646\u0686\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-set-up-your-ros-2-workspace\">ROS 2 \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u0627\u06cc\u06a9 \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u0627\u0648\u0631 \u067e\u06cc\u06a9\u06cc\u062c \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">mkdir -p ~\/ros2_perception_ws\/src\ncd ~\/ros2_perception_ws\/src\nros2 pkg create --build-type ament_python perception_stack\ncd ~\/ros2_perception_ws\ncolcon build\nsource install\/setup.bash\n<\/code><\/pre>\n<p><code>colcon build<\/code>    \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u06a9\u0648 \u0645\u0631\u062a\u0628 \u06a9\u0631\u06cc\u06ba\u06d4 \u0633\u0648\u0631\u0633\u0646\u06af <code>install\/setup.bash<\/code> \u0627\u0628 \u062c\u0628 \u06a9\u06c1 ROS 2 \u0646\u0626\u06d2 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u0648 \u067e\u06c1\u0686\u0627\u0646\u062a\u0627 \u06c1\u06d2\u060c \u0622\u067e \u0646\u0648\u0688 \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u0686\u0644\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>ros2 run<\/code>.<\/p>\n<h2 id=\"heading-how-to-install-dependencies\">\u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h2>\n<pre><code class=\"language-bash\">pip install ultralytics opencv-python-headless cv_bridge \\\n            torch torchvision onnx onnxruntime-gpu \\\n            numpy supervision\n<\/code><\/pre>\n<p>\u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0648\u0679: \u06cc\u06c1 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 ONNX \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u0648 GPU \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>onnxruntime-gpu<\/code>. \u0627\u06af\u0631 \u0622\u067e CUDA \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 GPU \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0645\u0634\u06cc\u0646 \u067e\u0631 \u0686\u0644 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633\u06d2 \u0627\u0633 \u0633\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba: <code>onnxruntime<\/code> \u0635\u0631\u0641 CPU \u06a9\u06d2 \u0642\u06cc\u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4 \u0628\u0627\u0642\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0626\u06cc\u060c \u0644\u06cc\u06a9\u0646 \u0641\u0631\u06cc\u0645 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0627\u0645\u06cc\u062f \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-publish-camera-frames-into-ros-2\">ROS 2 \u0645\u06cc\u06ba \u06a9\u06cc\u0645\u0631\u06c1 \u0641\u0631\u06cc\u0645 \u06a9\u06cc\u0633\u06d2 \u067e\u0648\u0633\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u067e\u06c1\u0644\u0627 \u0646\u0648\u0688 CARLA \u06a9\u06d2 Python API \u0627\u0648\u0631 ROS 2 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 CARLA \u0627\u06cc\u0648\u0646\u0679 \u067e\u0631 \u0645\u0628\u0646\u06cc \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0633\u0633\u0679\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 ROS 2 \u0679\u0627\u0626\u067e \u0634\u062f\u06c1 \u0645\u06cc\u0633\u062c \u0641\u0627\u0631\u0645\u06cc\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u067e\u0628\u0644\u0634\u0631-\u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628\u0631 \u0645\u0627\u0688\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0646\u0648\u0688 CARLA \u06a9\u06cc \u062e\u0627\u0645 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u0634\u06a9\u0644 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>sensor_msgs\/Image<\/code> \u067e\u06cc\u063a\u0627\u0645 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0645\u0627\u0645 ROS 2 \u0646\u0648\u0688\u0633 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>camera_publisher.py<\/code>:<\/p>\n<pre><code class=\"language-python\">import carla\nimport rclpy\nfrom rclpy.node import Node\nfrom sensor_msgs.msg import Image\nfrom cv_bridge import CvBridge\nimport numpy as np\n\nclass CARLACameraNode(Node):\n    def __init__(self):\n        super().__init__('carla_camera_node')\n        self.publisher = self.create_publisher(Image, '\/carla\/camera\/rgb', 10)\n        self.bridge = CvBridge()\n        self.get_logger().info('CARLA camera node started.')\n\n    def camera_callback(self, image):\n        # CARLA raw data is BGRA, we convert to BGR for OpenCV compatibility\n        array = np.frombuffer(image.raw_data, dtype=np.uint8)\n        array = array.reshape((image.height, image.width, 4))\n        bgr = array[:, :, :3]\n\n        msg = self.bridge.cv2_to_imgmsg(bgr, encoding='bgr8')\n\n        # Stamp the message with the current ROS 2 clock time.\n        # This is critical. Downstream nodes like trackers and SLAM\n        # systems calculate velocity and displacement using time deltas\n        # between messages. Without an accurate timestamp, those\n        # calculations produce garbage and the tracker becomes unstable.\n        msg.header.stamp = self.get_clock().now().to_msg()\n\n        self.publisher.publish(msg)\n\ndef main():\n    rclpy.init()\n    node = CARLACameraNode()\n\n    client = carla.Client('localhost', 2000)\n    world = client.get_world()\n    blueprint_library = world.get_blueprint_library()\n\n    camera_bp = blueprint_library.find('sensor.camera.rgb')\n    camera_bp.set_attribute('image_size_x', '1280')\n    camera_bp.set_attribute('image_size_y', '720')\n    camera_bp.set_attribute('fov', '90')\n\n    spawn_point = world.get_map().get_spawn_points()[0]\n    camera = world.spawn_actor(camera_bp, spawn_point)\n    camera.listen(node.camera_callback)\n\n    rclpy.spin(node)\n    camera.destroy()\n    node.destroy_node()\n    rclpy.shutdown()\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>cv_bridge<\/code> \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc OpenCV arrays \u0627\u0648\u0631 ROS 2 \u062a\u0635\u0648\u06cc\u0631\u06cc \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u062a\u0628\u0627\u062f\u0644\u0648\u06ba \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>bgr8<\/code> \u0627\u0646\u06a9\u0648\u0688\u0646\u06af \u0688\u0627\u0624\u0646 \u0627\u0633\u0679\u0631\u06cc\u0645 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628\u0631\u0632 \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0631\u0646\u06af \u06a9\u06cc \u0634\u06a9\u0644 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u06cc \u062c\u0627\u0626\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0631\u0646\u06af\u06cc\u0646 \u0686\u06cc\u0646\u0644\u0632 \u06a9\u0648 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062a\u0628\u062f\u06cc\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0679\u06cc\u06a9\u0679\u0631 \u0628\u0627\u0644\u06a9\u0644 \u062f\u0631\u0633\u062a \u0627\u0646 \u067e\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u063a\u0644\u0637 \u0646\u062a\u0627\u0626\u062c \u067e\u06cc\u062f\u0627 \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<h2 id=\"heading-how-to-build-the-perception-node-with-threaded-inference\">\u062a\u06be\u0631\u06cc\u0688\u0688 \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0639\u0644\u0645\u06cc \u0646\u0648\u0688 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u06cc\u06c1 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba \u0633\u0627\u062e\u062a\u06cc \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u0646\u0648\u0688 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0648\u0688 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0633 \u06a9\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0648 \u06a9\u0686\u06be \u0648\u0636\u0627\u062d\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>ROS 2 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628\u0631 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u062a\u06be\u0631\u06cc\u0688 \u0645\u06cc\u06ba \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 YOLO \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u0627\u0644 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0627\u0633 \u062a\u06be\u0631\u06cc\u0688 \u06a9\u0648 \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u06cc \u0645\u062f\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0644\u0627\u06a9 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u062a\u06a9 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u0648\u060c \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628\u0631 \u0646\u0626\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0648\u0635\u0648\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2\u06d4<\/p>\n<p>\u0642\u0637\u0627\u0631 \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u0627\u0648\u0631 \u0641\u0631\u06cc\u0645 \u06a9\u06cc \u0634\u0631\u062d \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u060c \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0628 \u062a\u06a9 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u060c \u06cc\u06c1 \u067e\u0631\u0627\u0646\u06d2 \u0641\u0631\u06cc\u0645\u0648\u06ba \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 \u0679\u0631\u06cc\u06a9\u0631 \u067e\u06be\u0631 \u0627\u06cc\u06a9 \u0646\u062f\u06cc \u062f\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06c1\u0645\u0648\u0627\u0631 \u0646\u062f\u06cc \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0641\u0627\u0633\u062f \u0627\u0648\u0631 \u0645\u062a\u0636\u0627\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u062d\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0645\u0639 \u06a9\u0648 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u0633\u06d2 \u0627\u0644\u06af \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u06cc\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0641\u0631\u06cc\u0645\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u06a9 \u067e\u0627\u0628\u0646\u062f \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0688\u0627\u0644\u0646\u0627 \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0627\u0644\u06af \u062f\u06be\u0627\u06af\u06c1 \u0627\u0633 \u0642\u0637\u0627\u0631 \u0633\u06d2 \u06a9\u06be\u06cc\u0646\u0686\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0642\u0637\u0627\u0631 \u06a9\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u0627\u0626\u0632 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u062a\u062e\u0645\u06cc\u0646\u06c1 \u062c\u0627\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u0631\u06c1\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0642\u0637\u0627\u0631 \u0628\u06be\u0631\u06cc \u06c1\u0648\u0626\u06cc \u06c1\u06d2 \u062a\u0648\u060c \u0646\u0626\u06d2 \u0641\u0631\u06cc\u0645\u0648\u06ba \u06a9\u0648 \u063a\u06cc\u0631 \u0645\u0639\u06cc\u0646\u06c1 \u0645\u062f\u062a \u062a\u06a9 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0631\u062f \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06c1\u06d2\u06d4 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0633\u0633\u0679\u0645\u0632 \u0645\u06cc\u06ba\u060c \u067e\u0631\u0627\u0646\u06d2 \u0641\u0631\u06cc\u0645 \u062c\u0648 \u062f\u06cc\u0631 \u0633\u06d2 \u067e\u0631\u0648\u0633\u06cc\u0633 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u06af\u0631\u06d2 \u06c1\u0648\u0626\u06d2 \u0641\u0631\u06cc\u0645\u0648\u06ba \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062e\u0631\u0627\u0628 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0679\u0631\u06cc\u06a9\u0631 \u062f\u0646\u06cc\u0627 \u06a9\u0648 \u0648\u06cc\u0633\u0627 \u06c1\u06cc \u062f\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u06cc\u06c1 \u06c1\u06d2\u060c \u0646\u06c1 \u06a9\u06c1 \u062c\u06cc\u0633\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>perception_node.py<\/code>:<\/p>\n<pre><code class=\"language-python\">import threading\nimport queue\n\nimport rclpy\nfrom rclpy.node import Node\nfrom sensor_msgs.msg import Image\nfrom cv_bridge import CvBridge\nfrom ultralytics import YOLO\nimport cv2\n\nCONFIDENCE_THRESHOLD = 0.45\n\nclass PerceptionNode(Node):\n    def __init__(self):\n        super().__init__('perception_node')\n\n        self.bridge = CvBridge()\n        self.model = YOLO('models\/yolov11n.pt')\n\n        # Bounded queue: maxsize=5 prevents stale frame accumulation.\n        # When the queue is full, image_callback drops the incoming frame\n        # rather than waiting, keeping the pipeline current.\n        self.frame_queue = queue.Queue(maxsize=5)\n\n        self.subscription = self.create_subscription(\n            Image,\n            '\/carla\/camera\/rgb',\n            self.image_callback,\n            10\n        )\n\n        self.inference_thread = threading.Thread(\n            target=self.run_inference,\n            daemon=True\n        )\n        self.inference_thread.start()\n        self.get_logger().info('Perception node ready.')\n\n    def image_callback(self, msg):\n        # Drop the frame if inference is not keeping up.\n        # We never want to block the callback thread.\n        if not self.frame_queue.full():\n            self.frame_queue.put(msg)\n\n    def run_inference(self):\n        while rclpy.ok():\n            msg = self.frame_queue.get()\n            frame = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')\n\n            results = self.model(frame, conf=CONFIDENCE_THRESHOLD, verbose=False)\n\n            detections = results[0].boxes\n            self.get_logger().info(\n                f'Detected {len(detections)} objects above threshold {CONFIDENCE_THRESHOLD}'\n            )\n\ndef main():\n    rclpy.init()\n    node = PerceptionNode()\n    rclpy.spin(node)\n    node.destroy_node()\n    rclpy.shutdown()\n<\/code><\/pre>\n<h2 id=\"heading-how-to-integrate-bytetrack-for-multi-object-tracking\">\u0645\u0644\u0679\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0679\u0631\u06cc\u06a9\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0627\u0626\u0679 \u0679\u0631\u06cc\u06a9 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0645\u0631\u0628\u0648\u0637 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u0627\u06a9\u06cc\u0644\u06d2 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u0627 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0641\u0631\u06cc\u0645 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4 \u0679\u0631\u06cc\u06a9\u0646\u06af \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0627 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u0648\u0646 \u0633\u06cc \u06a9\u0627\u0631 \u06c1\u06d2\u060c \u06a9\u06c1\u0627\u06ba \u062c\u0627 \u0631\u06c1\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u06cc\u0627 \u06cc\u06c1 \u0648\u06c1\u06cc \u06a9\u0627\u0631 \u06c1\u06d2 \u062c\u0633\u06d2 \u0622\u067e \u0646\u06d2 \u062f\u0648 \u0633\u06cc\u06a9\u0646\u0688 \u067e\u06c1\u0644\u06d2 \u062f\u06cc\u06a9\u06be\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0628\u0627\u0626\u0679 \u0679\u0631\u06cc\u06a9 \u0627\u0646\u0679\u0631\u0633\u06cc\u06a9\u0634\u0646 \u0627\u0648\u0648\u0631-\u06cc\u0648\u0646\u06cc\u0646 (IoU) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0679\u0631\u06cc\u06a9\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0626\u06cc \u06a9\u06be\u0648\u062c\u0648\u06ba \u06a9\u0648 \u062c\u0648\u0691 \u06a9\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u067e\u06cc\u0634 \u06af\u0648\u0626\u06cc \u0634\u062f\u06c1 \u0679\u0631\u06cc\u06a9 \u067e\u0648\u0632\u06cc\u0634\u0646 \u0627\u0648\u0631 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0634\u0646\u0627\u062e\u062a\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0628\u0627\u0624\u0646\u0688\u0646\u06af \u0628\u0627\u06a9\u0633 \u0627\u0648\u0648\u0631\u0644\u06cc\u067e \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u062f\u0648 \u0642\u062f\u0645\u06cc \u0645\u0645\u0627\u062b\u0644\u062a \u06a9\u06d2 \u0639\u0645\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0639\u0644\u06cc \u0627\u0648\u0631 \u06a9\u0645 \u0627\u0639\u062a\u0645\u0627\u062f \u062f\u0648\u0646\u0648\u06ba \u06a9\u06cc \u06a9\u06be\u0648\u062c\u0648\u06ba \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u06c1 \u0633\u0627\u062f\u06c1 \u0679\u0631\u06cc\u06a9\u0631\u0632 \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u0631\u06a9\u0627\u0648\u0679 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0636\u0628\u0648\u0637 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u06cc\u0646 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u062c\u0648 \u0622\u067e \u0627\u06a9\u062b\u0631 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u0648\u06c1 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><code>track_thresh<\/code>: \u0679\u0631\u06cc\u06a9 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06cc\u0627 \u0627\u0633 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0627\u0639\u062a\u0645\u0627\u062f<\/p>\n<\/li>\n<li>\n<p><code>match_thresh<\/code>: \u0645\u0648\u062c\u0648\u062f\u06c1 \u0679\u0631\u06cc\u06a9\u0633 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 IoU<\/p>\n<\/li>\n<li>\n<p><code>track_buffer<\/code>: \u0627\u0646 \u0641\u0631\u06cc\u0645\u0648\u06ba \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u062c\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0648 \u06c1\u0679\u0627\u0626\u06d2 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0633\u06cc \u0645\u06cc\u0686 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u0632\u0646\u062f\u06c1 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>tracker.py<\/code>:<\/p>\n<pre><code class=\"language-python\">from supervision import ByteTracker, Detections\nimport numpy as np\n\nclass RoboticsTracker:\n    def __init__(self):\n        # track_buffer controls how long a track survives\n        # without a matching detection. Higher values help\n        # during brief occlusions but can produce ghost tracks\n        # for objects that have genuinely left the scene.\n        self.tracker = ByteTracker(\n            track_thresh=0.45,\n            match_thresh=0.8,\n            track_buffer=30,\n            frame_rate=30\n        )\n\n    def update(self, yolo_results, frame_shape):\n        boxes = yolo_results[0].boxes\n\n        if len(boxes) == 0:\n            return []\n\n        xyxy = boxes.xyxy.cpu().numpy()\n        confidence = boxes.conf.cpu().numpy()\n        class_ids = boxes.cls.cpu().numpy().astype(int)\n\n        detections = Detections(\n            xyxy=xyxy,\n            confidence=confidence,\n            class_id=class_ids\n        )\n\n        tracked = self.tracker.update(\n            detections=detections,\n            frame_resolution_wh=(frame_shape[1], frame_shape[0])\n        )\n\n        # tracked.tracker_id gives each detection a stable integer ID\n        # that persists across frames as long as the track is alive.\n        return tracked\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>tracker_id<\/code> \u0641\u06cc\u0644\u0688\u0632 \u0648\u06c1 \u06c1\u06cc\u06ba \u062c\u0648 \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u0631\u06cc\u06a9\u0646\u06af \u06a9\u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u06af\u0645\u0646\u0627\u0645 \u0628\u0627\u0624\u0646\u0688\u0646\u06af \u0628\u0627\u06a9\u0633 \u0644\u0633\u0679 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0688\u0627\u0624\u0646 \u0627\u0633\u0679\u0631\u06cc\u0645 \u0633\u0633\u0679\u0645 \u0627\u0628 \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u0628\u062c\u06cc\u06a9\u0679 ID 7 \u0627\u06cc\u06a9 \u067e\u06cc\u062f\u0644 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06c1\u06d2 \u062c\u0648 \u067e\u0686\u06be\u0644\u06d2 12 \u0641\u0631\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0634\u0645\u0627\u0644 \u0645\u0634\u0631\u0642 \u0645\u06cc\u06ba \u0686\u0644\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-add-a-confidence-validation-layer\">\u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0628\u0627\u0631 \u062a\u0635\u062f\u06cc\u0642\u06cc \u067e\u0631\u062a \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u0631\u0648\u0628\u0648\u0679 \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f\u060c \u0627\u0639\u0644\u06cc\u0670 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u0627 \u06a9\u0627\u0641\u06cc \u0628\u0646\u06cc\u0627\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0627 \u0627\u0633\u06a9\u0648\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0627\u0688\u0644 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u062a\u0646\u0627 \u06cc\u0642\u06cc\u0646\u06cc \u06c1\u06d2 \u062c\u0633 \u06a9\u0627 \u067e\u062a\u06c1 \u0686\u0644\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u062a\u06c1 \u0639\u0627\u0631\u0636\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0633\u062a\u062d\u06a9\u0645 \u06c1\u06d2\u060c \u0622\u06cc\u0627 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u062e\u0648\u062f \u06c1\u06cc \u0645\u0633\u062a\u062d\u06a9\u0645 \u06c1\u06d2\u060c \u06cc\u0627 \u0622\u0633 \u067e\u0627\u0633 \u06a9\u06d2 \u062d\u0627\u0644\u0627\u062a \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0641\u06c1\u0645 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u062a\u0648\u062b\u06cc\u0642\u06cc \u067e\u0631\u062a \u06a9\u0648 \u0627\u06cc\u06a9 \u0634\u0646\u0627\u062e\u062a \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0639\u0645\u0644 \u06a9\u06d2 \u0628\u0637\u0648\u0631 \u0646\u0634\u0627\u0646 \u0632\u062f \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u062a\u0639\u062f\u062f \u0633\u06af\u0646\u0644\u0632 \u06a9\u06d2 \u0627\u062a\u0641\u0627\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0646\u0627\u0646\u0627 <code>validator.py<\/code>:<\/p>\n<pre><code class=\"language-python\">CONFIDENCE_THRESHOLD = 0.45\nMIN_TRACK_AGE = 3        # frames a track must exist before being trusted\nJITTER_THRESHOLD = 2.0   # maximum acceptable platform acceleration (m\/s\u00b2)\n\ndef is_actionable_detection(detection, track_age: int, platform_acceleration: float):\n    \"\"\"\n    Returns True only when a detection passes all three checks:\n    1. Model confidence is above threshold (filters weak detections)\n    2. Track has existed long enough to be considered stable\n       (filters noise that triggers a detection in one or two frames but not more)\n    3. The platform carrying the sensor is not vibrating or accelerating\n       sharply enough to corrupt the sensor data itself\n    \"\"\"\n    if detection.confidence < CONFIDENCE_THRESHOLD:\n        return False, \"low_confidence\"\n\n    if track_age < MIN_TRACK_AGE:\n        return False, \"track_not_stabilised\"\n\n    if platform_acceleration > JITTER_THRESHOLD:\n        return False, \"platform_unstable\"\n\n    return True, \"actionable\"\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u067e\u06cc\u0679\u0631\u0646 \u0645\u0627\u0688\u0644 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0648 \u0633\u0633\u0679\u0645 \u0644\u06cc\u0648\u0644 \u0679\u0631\u0633\u0679 \u0633\u06d2 \u0627\u0644\u06af \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0627\u0688\u0644 \u06a9\u0627 \u06a9\u0627\u0645 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u0627 \u06c1\u06d2\u06d4 \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0627 \u06a9\u0627\u0645 \u06cc\u06c1 \u0637\u06d2 \u06a9\u0631\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0631\u0648\u0628\u0648\u0679 \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u062d\u0627\u0644\u062a \u06a9\u0648 \u0645\u062f\u0646\u0638\u0631 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0648\u0646 \u0633\u06cc \u06a9\u06be\u0648\u062c \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-export-your-model-to-onnx-for-edge-deployment\">Edge \u06a9\u06cc \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0648 ONNX \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0631\u0622\u0645\u062f \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>ONNX\u060c \u0627\u0648\u067e\u0646 \u0646\u06cc\u0648\u0631\u0644 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0627\u06cc\u06a9\u0633\u0686\u06cc\u0646\u062c \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u062a\u0635\u0631\u060c \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u067e\u0648\u0631\u0679\u06cc\u0628\u0644 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0645\u0627\u0688\u0644\u0632 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06a9\u06be\u0644\u0627 \u0641\u0627\u0631\u0645\u06cc\u0679 \u06c1\u06d2\u06d4 PyTorch \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0627\u067e\u0646\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0627\u06cc\u06a9 \u0628\u0627\u0631 ONNX \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba \u0628\u0631\u0622\u0645\u062f \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0633\u06d2 ONNX \u0631\u0646 \u0679\u0627\u0626\u0645 \u06cc\u0627 TensorRT \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0627\u06cc\u062c \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u062b\u0631 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>TensorRT NVIDIA \u06a9\u06cc \u0627\u0646\u0641\u0631\u0646\u0633 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 ONNX \u0645\u0627\u0688\u0644 \u0644\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u067e\u0646\u06d2 \u0679\u0627\u0631\u06af\u0679 GPU \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0631\u062a\u0628 \u06a9\u0631\u06cc\u06ba\u060c \u06a9\u0631\u0646\u0644 \u0641\u06cc\u0648\u0698\u0646\u060c \u0644\u06cc\u0626\u0631 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0627\u0648\u0631 INT8 \u06cc\u0627 FP16 \u067e\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062f\u0631\u0633\u062a\u06af\u06cc \u0645\u06cc\u06ba \u06a9\u0645\u06cc \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u06cc\u06ba\u06d4 \u0646\u062a\u06cc\u062c\u06c1 \u0627\u06cc\u06a9 \u0627\u0646\u0641\u0631\u0646\u0633 \u0627\u0646\u062c\u0646 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06cc \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u0627\u0635\u0644 PyTorch \u0645\u0627\u0688\u0644 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u06cc\u0632 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 30FPS \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0633\u0633\u0679\u0645 \u0627\u0648\u0631 \u0646\u0627\u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>export_onnx.py<\/code>:<\/p>\n<pre><code class=\"language-python\">from ultralytics import YOLO\n\ndef export_perception_model(weights_path: str, output_path: str):\n    \"\"\"\n    Exports a YOLOv11 model to ONNX format for edge deployment.\n\n    The dynamic_axes setting on the batch dimension means the exported\n    model can accept single frames (batch=1) or batches of frames\n    without needing to be re-exported. This is useful for testing\n    with batched input during benchmarking.\n    \"\"\"\n    model = YOLO(weights_path)\n\n    # Export using Ultralytics' built-in ONNX export.\n    # opset=17 is the recommended version for compatibility\n    # with TensorRT 8.x and later.\n    model.export(\n        format=\"onnx\",\n        imgsz=640,\n        opset=17,\n        dynamic=True,     # enables dynamic batch size\n        simplify=True     # runs onnx-simplifier to clean the graph\n    )\n\n    print(f\"Model exported to {output_path}\")\n\nif __name__ == '__main__':\n    export_perception_model(\n        weights_path=\"models\/yolov11n.pt\",\n        output_path=\"models\/perception.onnx\"\n    )\n<\/code><\/pre>\n<p>PyTorch \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 ONNX \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c YOLO \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u0627\u0644 \u06a9\u0648 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba: <code>perception_node.py<\/code> ONNX \u0631\u0646 \u0679\u0627\u0626\u0645 \u0633\u06cc\u0634\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644:<\/p>\n<pre><code class=\"language-python\">import onnxruntime as ort\nimport numpy as np\nimport cv2\n\nsession = ort.InferenceSession(\n    'models\/perception.onnx',\n    providers=['CUDAExecutionProvider', 'CPUExecutionProvider']\n)\n\ndef run_onnx_inference(frame: np.ndarray):\n    # Preprocess: resize, normalise, add batch dimension, convert to float32\n    img = cv2.resize(frame, (640, 640))\n    img = img.astype(np.float32) \/ 255.0\n    img = img.transpose(2, 0, 1)          # HWC to CHW\n    img = np.expand_dims(img, axis=0)     # add batch dimension\n\n    outputs = session.run(None, {'images': img})\n    return outputs\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>providers<\/code> \u0641\u06c1\u0631\u0633\u062a ONNX \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u0648 GPU \u0627\u06cc\u06a9\u0633\u0644\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 CUDA \u06a9\u0648 \u062a\u0631\u062c\u06cc\u062d \u062f\u06cc\u0646\u06d2 \u0627\u0648\u0631 CUDA \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba CPU \u067e\u0631 \u0648\u0627\u067e\u0633 \u0622\u0646\u06d2 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u0627\u0646\u0641\u0631\u0646\u0633 \u06a9\u0648\u0688 \u06a9\u0648 \u0628\u063a\u06cc\u0631 \u06a9\u0648\u0688 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u0633\u0633\u0679\u0645\u0632 \u0627\u0648\u0631 \u0627\u06cc\u062c \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u067e\u0648\u0631\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-test-the-full-pipeline\">\u0627\u067e\u0646\u06cc \u067e\u0648\u0631\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u062a\u0645\u0627\u0645 \u0646\u0648\u0688\u0633 \u0628\u0646\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u062f\u0648\u0646\u0648\u06ba \u0679\u0631\u0645\u06cc\u0646\u0644\u0632 \u067e\u0631 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba\u060c \u06a9\u06cc\u0645\u0631\u06c1 \u067e\u0628\u0644\u0634\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">cd ~\/ros2_perception_ws\nsource install\/setup.bash\nros2 run perception_stack camera_publisher\n<\/code><\/pre>\n<p>\u062f\u0648\u0633\u0631\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba \u0631\u06cc\u06a9\u06af\u0646\u06cc\u0634\u0646 \u0646\u0648\u0688 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">source install\/setup.bash\nros2 run perception_stack perception_node\n<\/code><\/pre>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u0641\u0631\u06cc\u0645 \u0646\u0648\u0688\u0633 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0628\u06c1\u06c1 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u062a\u06cc\u0633\u0631\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba \u0627\u0634\u06cc\u0627\u0621 \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">ros2 topic hz \/carla\/camera\/rgb\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u06cc\u0645\u0631\u06d2 \u06a9\u06d2 \u0645\u0648\u0636\u0648\u0639 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u063a\u0627\u0645 \u06a9\u06cc \u0634\u0631\u062d \u067e\u0631\u0646\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 30FPS \u067e\u0631\u060c \u0622\u067e \u06a9\u0648 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 30 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0641\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u0646\u0638\u0631 \u0622\u0626\u06cc\u06ba \u06af\u06d2\u06d4 \u0646\u0645\u0627\u06cc\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0645 \u062a\u0639\u062f\u0627\u062f \u0633\u06d2 \u067e\u062a\u06c1 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 CARLA \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u0641\u0631\u06cc\u0645 \u0686\u06be\u0648\u0691 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u0646\u0648\u0688\u0633 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0633\u06cc\u0631 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0628\u0635\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0634\u0646\u0627\u062e\u062a\u06cc \u0646\u0648\u0688 \u06a9\u0633 \u0686\u06cc\u0632 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0634\u0631\u06cc\u062d \u0634\u062f\u06c1 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0639\u0646\u0648\u0627\u0646 \u06a9\u0648 \u0634\u0627\u0626\u0639 \u06a9\u0631\u06a9\u06d2 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u062a\u0635\u0648\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>run_inference<\/code>:<\/p>\n<pre><code class=\"language-python\">annotated = results[0].plot()  # draws boxes and labels on the frame\nannotated_msg = self.bridge.cv2_to_imgmsg(annotated, encoding='bgr8')\nannotated_msg.header.stamp = self.get_clock().now().to_msg()\nself.annotated_publisher.publish(annotated_msg)\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u062a\u0634\u0631\u06cc\u062d \u0634\u062f\u06c1 \u0633\u0644\u0633\u0644\u06c1 \u06a9\u06be\u0648\u0644\u06cc\u06ba\u06d4 <code>rqt_image_view<\/code>:<\/p>\n<pre><code class=\"language-bash\">ros2 run rqt_image_view rqt_image_view \/perception\/annotated\n<\/code><\/pre>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>\u0627\u0628 \u06c1\u0645 \u0646\u06d2 \u0633\u06cc\u0646\u0633\u0631\u0632 \u0633\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u0634\u062f\u06c1 \u0627\u0648\u0631 \u0679\u0631\u06cc\u0633 \u0627\u06cc\u0628\u0644 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062d\u0642\u06cc\u0642\u06cc \u0648\u0642\u062a \u06a9\u06cc \u0631\u0648\u0628\u0648\u0679\u06a9 \u067e\u0631\u0633\u06cc\u067e\u0634\u0646 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0628\u0646\u0627\u0626\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u062c\u0648 \u0633\u0633\u0679\u0645 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u06a9\u06cc\u0645\u0631\u06c1 \u06a9\u0644\u06cc\u06a9\u0634\u0646\u060c \u062a\u06be\u0631\u06cc\u0688\u0688 \u0627\u0646\u0641\u0631\u0646\u0633\u060c \u0645\u0644\u0679\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0679\u0631\u06cc\u06a9\u0646\u06af\u060c \u0627\u0639\u062a\u0645\u0627\u062f \u067e\u0631 \u0645\u0628\u0646\u06cc \u062a\u0635\u062f\u06cc\u0642\u060c \u0627\u0648\u0631 \u0627\u06cc\u062c \u0622\u067e\u0679\u0645\u0627\u0626\u0632\u0688 \u0645\u0627\u0688\u0644 \u0627\u06cc\u06a9\u0633\u067e\u0648\u0631\u0679 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646 \u062a\u0645\u0627\u0645 \u0627\u062c\u0632\u0627\u0621 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06af\u06c1\u0631\u0627 \u0633\u0628\u0642 \u0627\u06cc\u06a9 \u06c1\u06cc \u06c1\u06d2\u06d4 \u0631\u0648\u0628\u0648\u0679 \u067e\u0631\u0633\u06cc\u067e\u0634\u0646 \u0633\u0633\u0679\u0645 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u060c \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0646\u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u062a\u0631\u0628\u06cc\u062a \u06cc\u0627\u0641\u062a\u06c1 \u0645\u0627\u0688\u0644 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u06a9\u0627\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba \u062c\u0648 \u0686\u06cc\u0632 \u0627\u06c1\u0645\u06cc\u062a \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0648\u0642\u062a \u06a9\u0648 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u062e\u0648\u0628\u0635\u0648\u0631\u062a\u06cc \u0633\u06d2 \u0627\u0646\u062d\u0637\u0627\u0637 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0622\u06cc\u0627 \u062e\u0631\u0627\u0628\u06cc \u06a9\u06cc \u062d\u0627\u0644\u062a\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u06cc\u0627 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0627\u0644\u06af \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0641\u06cc\u0644\u0688 \u0645\u06cc\u06ba \u0688\u06cc\u0628\u06af \u0627\u0648\u0631 \u0627\u0639\u0627\u062f\u06c1 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06af\u0644\u0627 \u0645\u0631\u062d\u0644\u06c1 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0644\u0627\u06af \u0627\u0646 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 <code>perception_node.py<\/code> \u06c1\u0645 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0646\u0627\u0633\u0628 ROS 2 \u0645\u06cc\u0633\u062c \u067e\u0628\u0644\u0634\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0648 Nav2 \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u0627\u0633\u0679\u06cc\u06a9 \u0645\u06cc\u06ba \u0636\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u067e\u0648\u0631\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u0648 \u0679\u0627\u0631\u06af\u0679 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2 \u06a9\u06c1 ONNX \u06a9\u06cc \u0627\u0635\u0644\u0627\u062d \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06cc \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u062d\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u0628\u0631\u0642\u0631\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0627\u0633 \u0633\u06d2 \u0645\u0644\u062a\u06cc \u062c\u0644\u062a\u06cc \u06a9\u0648\u0626\u06cc \u0686\u06cc\u0632 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u0633\u0648\u0627\u0644\u0627\u062a \u06c1\u06cc\u06ba \u062a\u0648 \u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0628\u0644\u0627 \u062c\u06be\u062c\u06be\u06a9 \u06c1\u0645 \u0633\u06d2 \u0631\u0627\u0628\u0637\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u062c\u0628 \u0631\u0648\u0628\u0648\u0679 \u06a9\u06cc \u0628\u0627\u062a \u0622\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0628\u0627\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u0626\u06d2 \u06c1\u0645\u06cc\u0634\u06c1 \u0628\u06c1\u062a \u06a9\u0686\u06be \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u06af\u0631 \u0622\u067e \u0646\u06d2 \u06a9\u0628\u06be\u06cc \u0627\u06cc\u0633\u0627 \u0631\u0648\u0628\u0648\u0679\u06a9 \u0646\u0638\u0627\u0645 \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2 \u062c\u0648 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u0627\u067e\u0646\u06d2 \u0627\u0631\u062f\u06af\u0631\u062f \u06a9\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u0648 \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0679\u0631\u06cc\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u067e\u0631 \u0631\u062f\u0639\u0645\u0644 \u0638\u0627\u06c1\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0633\u06cc\u0646\u0633\u0646\u06af \u0645\u0627\u0688\u0644 \u06a9\u06cc \u062a\u0631\u0628\u06cc\u062a \u0645\u0634\u06a9\u0644 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4 \u0645\u0634\u06a9\u0644 \u062d\u0635\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0627\u0688\u0644 \u062d\u0642\u06cc\u0642\u06cc [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-27247","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/27247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=27247"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/27247\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=27247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=27247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=27247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}