تكوين ROS والعمل مع كاميرا ستيريو ZED على NVIDIA Jetson

مساء الخير أيها القراء! في المقالات الأخيرة ، تحدثت عن طرق SLAM الشعبية وطرق القياس البصري التي تدعم في ROS. في هذا المقال ، سأحيد قليلاً عن الموضوع وأتحدث عن إعداد والعمل مع ROS على الكمبيوتر الصغير NVIDIA Jetson TK1 . بعد تثبيت كل ما نحتاجه ، سنقوم بالاتصال وتجربة الكاميرا الاستريو ZED ستريولابس . لمن المثير للاهتمام أسأل تحت القات.

حول NVIDIA Jetson


للبدء ، ضع في اعتبارك منصة NVIDIA Jetson TK1. NVIDIA Jetson TK1 هو كمبيوتر صغير يعمل بتقنية NVIDIA يعتمد على Tegra K1 SOC (CPU + GPU على شريحة واحدة مع دعم CUDA). تفتخر NVIDIA Jetson بمعالج ARM Cortex-A15 رباعي النواة بتردد 2.3 جيجا هرتز ، وتحتوي على نفس مكونات Raspberry Pi (HDMI و USB 2.0 و 3.0 و Ethernet) ، بالإضافة إلى الوحدات الخاصة بالكمبيوتر: SATA و mini-PCIe . يتميز المعالج المحمول Tegra K1 بخصائص وبنية مشابهة جدًا لوحدات معالجة الرسومات المكتبية ، مما يسمح له بتحمل الأحمال الثقيلة بأقل استهلاك للطاقة. كما هو مذكور في الصفحة الرسمية ، يسمح لك المعالج بتشغيل أي مهام رسومية كثيفة الموارد على اللوحة ، مثل التعرف على الوجوه ، والواقع المعزز ، وحتى مهام رؤية الكمبيوتر للمركبات غير المأهولة. يمكنك قراءة المزيد عن جميع ميزات النظام الأساسي هنا .

يتم تمثيل الذاكرة الداخلية على NVIDIA Jetson TK1 بوحدة eMMC سعة 16 جيجابايت. بشكل افتراضي ، تأتي NVIDIA Jetson TK1 محملة مسبقًا بنظام التشغيل Ubuntu 14.04.

يتم استخدام محول 12 فولت AC / DC لتشغيل الكمبيوتر المصغر.

الصورة

كاميرا ستيريو ZED


كاميرا ZED الستيريو عبارة عن كاميرا ذات عمق سلبي ، تتكون من كاميرتين RGB عاديتين ، على بعد 12 سم من بعضهما البعض ، مع رؤية تصل إلى 20 مترًا. على عكس الكاميرات النشطة (مثل ASUS Xtion و Microsoft Kinect) ، لا تحتوي كاميرا ZED الاستريو على ليزر بالأشعة تحت الحمراء لقياس المسافة. الكاميرا غير مكلفة نسبيًا (تكلف 449 دولارًا). تتميز الكاميرا بالحجم الصغير (175 × 30 × 33 مم) وخفة الوزن (159 جم).

يمكن استخدام الكاميرا لبناء خرائط للمنطقة في الهواء الطلق على متن طائرة بدون طيار .
يمكنك قراءة المزيد عن الكاميرا على الصفحة الرسمية .

الصورة

تكوين Ubuntu على NVIDIA Jetson TK1


نقوم بتوصيل NVIDIA Jetson TK1 باستخدام HDMI بالشاشة ، وسلك إيثرنت بالموصل المقابل ، وأخيرًا باستخدام محول التيار المتردد / التيار المتردد 12 فولت بمصدر الطاقة.

لتثبيت النظام على NVIDIA Jetson ، قد تحتاج إلى تثبيت JetPack TK1 (يمكن العثور على التعليمات هنا ). لقد حصلت على NVIDIA Jetson مع تثبيت JetPack و Ubuntu 14.04 ، لذلك هنا لن أفكر في تثبيته.

لذلك سيبدأ نظام Ubuntu 14.04 تلقائيًا. للحصول على تفويض ، نستخدم اسم مستخدم وكلمة مرور أوبونتو.

تعرف على عنوان IP الخاص بمضيف Jetson:

ifconfig 

احصل على مواصفات الأجهزة:

 lscpu 

الاستنتاج هو هذا:

 Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 

قد تكون هناك مشكلة في الاتصال بـ Jetson عبر SSH: يعرض ifconfig عنوان IP ، ولكن لا يمكنك الاتصال بـ Jetson على هذا العنوان. لحل المشكلة ، افتح الملف / etc / network / interface من الجذر:

 sudo nano /etc/network/interface 

وإضافة الخطوط:

 auto eth0 iface eth0 inet dhcp 

قمنا بتعيين ديناميكي لعناوين IP. قم بحفظ التغييرات وتنفيذها:

 sudo ifup eth0 

الآن يجب أن يعمل كل شيء. تم اتخاذ هذا القرار من هنا .
اتصل الآن بـ Jetson عبر SSH:

 ssh -X ubuntu@<ip_address> 

تثبيت CUDA


للعمل مع كاميرا ZED ، نحتاج إلى ZED SDK ، الذي يتطلب CUDA الإصدار 6.5 المثبت. قم بتنزيل ملف deb الخاص بـ CUDA Toolkit 6.5 لـ L4T من هنا (الإرشادات مأخوذة من هنا ):

 wget http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda-repo-l4t-r21.1-6-5-prod_6.5-14_armhf.deb 

قم بتعيين بيانات تعريف مستودع التخزين لـ CUDA لـ L4T الذي قمت بتنزيله للتو:

 sudo dpkg -i cuda-repo-l4t-r21.1-6-5-prod_6.5-14_armhf.deb 

قم بتنزيل وتثبيت مجموعة أدوات CUDA نفسها بما في ذلك مجموعة أدوات OpenGL لـ NVIDIA:

 sudo apt-get update 

تثبيت cuda-toolkit-6-5:

 sudo apt-get install cuda-toolkit-6-5 

أضف مستخدم ubuntu إلى مجموعة "الفيديو" لتوفير الوصول إلى GPU:

 sudo usermod -a -G video $USER 

هنا $ USER هو أوبونتو.
قم بإضافة المسارات إلى مجلد تثبيت CUDA إلى البرنامج النصي bashrc وتنفيذه في المحطة الطرفية الحالية:

 echo "export PATH=/usr/local/cuda-6.5/bin:$PATH" >> ~/.bashrc echo "export $PATH=/usr/local/cuda-6.5/bin:$PATH" >> ~/.bashrc source ~/.bashrc 

تحقق من تثبيت مجموعة أدوات CUDA على الجهاز:

 nvcc -V 

تكوين USB 3.0 على Jetson TK1


بشكل افتراضي ، يتم تكوين منفذ USB 3.0 بواسطة النظام على Jetson TK1 كـ USB 2.0. نحن بحاجة إلى تكوينه على أنه USB 3.0. للقيام بذلك ، افتح الملف /boot/extlinux/extlinux.conf تحت الجذر:

 sudo vi /boot/extlinux/extlinux.conf 

ابحث عن السلسلة "usb_port_owner_info = 0". إذا حدث هذا السطر مرتين ، فقم بتغيير آخر تضمين. أعد كتابة "usb_port_owner_info = 0" إلى "usb_port_owner_info = 2".

قم بتثبيت ZED SDK


يبدو إجراء التثبيت مشابهًا لنظام Linux المكتبي. تجدر الإشارة فقط إلى أن OpenCV مثبت بالفعل عند تثبيت JetPack بحيث يمكنك استخدام تحسين Tegra لذلك. لذلك ، لا يلزم التثبيت اليدوي لـ OpenCV.

لاستخدام الكاميرا الستيريو ZED ، نحتاج إلى تثبيت ZED SDK 1.2. يستخدم المثبت ملف .run Jetson TK1 خاص. تنزيل المثبت:

 wget https://www.stereolabs.com/developers/downloads/archives/ZED_SDK_Linux_JTK1_v1.2.0.run 

قم بتعيين حقوق التنفيذ للملف وتشغيله في المحطة:

 sudo chmod +x ZED_SDK_Linux_JTK1_v1.2.0.run ./ZED_SDK_Linux_JTK1_v1.2.0.run 

نحن نقبل شروط اتفاقية الترخيص ، اضغط على "q" ثم "Y". بعد ذلك ، اتبع التعليمات.

قم بتشغيل ZED Explorer على Jetson نفسه (لا يعمل عند الاتصال عن بعد عبر SSH):

 /usr/local/zed/tools/ZED\ Explorer 

الصورة

تثبيت برنامج تشغيل ROS للكاميرا الستيريو ZED


لقد استخدمت ROS Indigo في تجاربي. تثبيت التبعيات لبرنامج ROS:

 sudo apt-get install ros-indigo-tf2-ros ros-indigo-image-transport ros-indigo-dynamic-reconfigure ros-indigo-urdf 

قم بتثبيت ROS wrapper للكاميرا ZED:

 cd ~/catkin_ws/src git clone https://github.com/zastrix/zed-ros-wrapper.git git checkout ef3ad46f14cf62ff21083829a1fa6879d20246de cd ~/catkin_ws catkin_make 

قم بتشغيل zed_wrapper بتنفيذ الأوامر التالية في نوافذ مختلفة من الجهاز:

 roscore roslaunch zed_wrapper zed.launch 

نعرض الموضوعات النشطة:

 rostopic list 

في القائمة ، بالإضافة إلى المواضيع القياسية ، سنرى موضوعات بالبادئة / zed:

 /zed/depth/camera_info /zed/depth/depth_registered /zed/joint_states /zed/left/camera_info /zed/left/image_raw_color /zed/left/image_rect_color /zed/odom /zed/point_cloud/cloud_registered /zed/rgb/camera_info /zed/rgb/image_raw_color /zed/rgb/image_rect_color /zed/right/camera_info /zed/right/image_raw_color /zed/right/image_rect_color 

تشغيل rqt_image_view:

 rosrun rqt_image_view rqt_image_view 

عند اختيار الموضوع / زيد / العمق / العمق المسجل لدينا خريطة العمق:

الصورة

صورة RGB من الكاميرا اليسرى (/ zed / left / image_raw_color):

الصورة

وأخيرًا ، صورة RGB من الكاميرا اليمنى (/ zed / right / image_raw_color):

الصورة

يتم نشر بيانات الكاميرا في الموضوعات / zed / rgb / image_raw_color و / zed / عمق / عمق_مُسجل بتردد 15 هرتز.
اكتشفنا تكرار نشر سحابة نقطة في الموضوع / zed / point_cloud / cloud_registered:

 rostopic hz /zed/point_cloud/cloud_registered 

 average rate: 4.146 min: 0.202s max: 0.371s std dev: 0.04798s window: 11 average rate: 4.178 min: 0.191s max: 0.371s std dev: 0.04306s window: 16 

قم بتشغيل rviz على Jetson نفسها (لم أتمكن من تشغيله بنجاح عند الاتصال عبر ssh مع خيار -x):

 rosrun rviz rviz 

الصورة

الصورة

SLAM على NVIDIA Jetson مع كاميرا ZED ستيريو


لنجرب الآن كاميرا ZED في مهمة عملية. في NVIDIA Jetson ، يمكنك بسهولة تشغيل خوارزمية SLAM RTAB-MAP. أولاً ، قم بتثبيت ROS wrapper لـ RTAB-MAP:

 sudo apt-get install ros-indigo-rtabmap-ros 

الآن قم بتشغيل rtabmap باستخدام كاميرا ZED. إذا لم يكن لدينا zed_wrapper قيد التشغيل ، فقم بتشغيله:

 rosrun zed_wrapper zed_wrapper_node 

تشغيل rtabmap:

 rtabmap 

حدد كاميرا ZED في نافذة rtabmap كمصدر:

الصورة

لم أختبر RTAB-MAP على NVIDIA Jetson ، لذا أترك لكم ، أعزائي القراء ، فرصة تجربة خوارزمية SLAM هذه. يمكن العثور على استخدام RTAB-MAP في آخر مقالتين ( هنا وهنا ).

آمل أن تكون هذه المقالة نقطة بداية جيدة بالنسبة لك لاستخدام كاميرا الستيريو ZED والكمبيوتر الصغير NVIDIA Jetson. أتمنى لك حظًا سعيدًا في التجارب ونراكم قريبًا!

ملاحظة: إن رأيك حول اختيار كاميرا ستيريو غير مكلفة للتجريب أمر مثير للاهتمام. دعم ROS ليس بالأمر الكبير ، والأهم من ذلك السعر. يرجى كتابة خياراتك في التعليقات على المقال.

PS (تحديث): أود أن أجرب كاميرات ستيريو سلبية مثل ZED. مرغوب فيه قادر على العمل مع Raspberry Pi 3.

Source: https://habr.com/ru/post/ar409259/


All Articles