ROS को कॉन्फ़िगर करना और NVIDIA जेटसन पर ZED स्टीरियो कैमरा के साथ काम करना

शुभ दोपहर, प्रिय पाठकों! हाल के लेखों में, मैंने लोकप्रिय SLAM और विज़ुअल ओडोमेट्री विधियों के बारे में बात की, जिनका ROS में समर्थन है। इस लेख में मैं विषय से थोड़ा विचलित करूंगा और NVIDIA जेटसन TK1 माइक्रो कंप्यूटर पर आरओएस के साथ काम करने और काम करने के बारे में बात करूंगा। हमें जो कुछ भी ज़रूरत है उसे स्थापित करने के बाद, हम स्ट्रेलाब्स ज़ेड स्टीरियो कैमरा से कनेक्ट और प्रयास करेंगे। यह किससे दिलचस्प है मैं बिल्ली के नीचे पूछता हूं।

NVIDIA जेटसन के बारे में


आरंभ करने के लिए, NVIDIA जेटसन TK1 प्लेटफ़ॉर्म पर विचार करें। NVIDIA Jetson TK1 टेगा K1 SOC (CUDA समर्थन के साथ एक एकल चिप पर CPU + GPU) पर आधारित एक NVIDIA माइक्रो कंप्यूटर है। NVIDIA जेटसन 2.3 GHz के साथ एक क्वाड-कोर एआरएम कॉर्टेक्स-ए 15 सीपीयू का दावा करता है, इसमें रास्पबेरी पाई (एचडीएमआई, यूएसबी 2.0 और 3.0, ईथरनेट) के समान घटक हैं, साथ ही पीसी-विशिष्ट मॉड्यूल: एसएटीए, मिनी-पीसीआई । टेग्रा के 1 मोबाइल प्रोसेसर में डेस्कटॉप जीपीयू के समान गुण और वास्तुकला है, जो इसे न्यूनतम बिजली की खपत के साथ भारी भार का सामना करने की अनुमति देता है। जैसा कि आधिकारिक पृष्ठ पर कहा गया है , प्रोसेसर आपको बोर्ड पर किसी भी संसाधन-गहन ग्राफिक कार्यों को चलाने की अनुमति देता है, जैसे चेहरा पहचान, संवर्धित वास्तविकता, और यहां तक ​​कि मानवरहित वाहनों के लिए कंप्यूटर विज़न कार्य। आप यहां मंच की सभी विशेषताओं के बारे में अधिक पढ़ सकते हैं।

NVIDIA Jetson TK1 पर आंतरिक मेमोरी को 16 जीबी ईएमएमसी मॉड्यूल द्वारा दर्शाया गया है। डिफ़ॉल्ट रूप से, NVIDIA जेटसन TK1 उबंटू 14.04 ऑपरेटिंग सिस्टम के साथ पहले से लोड होता है।

माइक्रो कंप्यूटर को पावर देने के लिए 12 V AC / DC एडॉप्टर का उपयोग किया जाता है।

छवि

ZED स्टीरियो कैमरा


ZED स्टीरियो कैमरा एक निष्क्रिय गहराई वाला कैमरा होता है, जिसमें दो साधारण RGB कैमरे होते हैं, जो एक दूसरे से 12 सेमी दूर, 20 मीटर तक का दृश्य होता है। सक्रिय कैमरों (जैसे कि ASUS Xtion और Microsoft Kinect) के विपरीत, ZED स्टीरियो कैमरा में दूरी को मापने के लिए एक इन्फ्रारेड लेजर नहीं है। कैमरा अपेक्षाकृत सस्ती है (लागत $ 449)। कैमरे का लाभ इसका छोटा आकार (175 x 30 x 33 मिमी) और लपट (159 ग्राम) है।

कैमरे का उपयोग ड्रोन पर बाहरी क्षेत्र के नक्शे बनाने के लिए किया जा सकता है।
आप आधिकारिक पृष्ठ पर कैमरे के बारे में अधिक पढ़ सकते हैं।

छवि

NVIDIA के जेटसन TK1 पर Ubuntu को कॉन्फ़िगर करना


हम मॉनिटर के लिए एक ईथरनेट तार, मॉनिटर के लिए एचडीएमआई का उपयोग करके NVIDIA जेटसन TK1 को कनेक्ट करते हैं, और अंत में पावर स्रोत को 12 वी एसी / डीसी एडाप्टर का उपयोग करते हैं।

NVIDIA जेटसन पर सिस्टम को स्थापित करने के लिए, आपको JetPack TK1 (निर्देश यहां मिल सकते हैं ) स्थापित करने की आवश्यकता हो सकती है। मैं JetPack के साथ NVIDIA Jetson को पहले ही स्थापित कर चुका हूं और Ubuntu 14.04, इसलिए यहां मैं इसे स्थापित करने पर विचार नहीं करूंगा।

तो Ubuntu 14.04 सिस्टम अपने आप शुरू हो जाएगा। प्राधिकरण के लिए, हम ubuntu यूजरनेम और पासवर्ड का उपयोग करते हैं।

जेटसन होस्ट का आईपी पता लगाएँ:

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 

SSH के माध्यम से जेटसन से कनेक्ट करने में समस्या हो सकती है: ifconfig IP पता प्रदर्शित करता है, लेकिन आप इस पते पर जेटसन से कनेक्ट नहीं कर सकते। समस्या को हल करने के लिए, फ़ाइल / etc / नेटवर्क / इंटरफ़ेस को रूट से खोलें:

 sudo nano /etc/network/interface 

और लाइनें जोड़ें:

 auto eth0 iface eth0 inet dhcp 

हमने IP पतों का एक गतिशील असाइनमेंट बनाया। परिवर्तन सहेजें और निष्पादित करें:

 sudo ifup eth0 

अब सब कुछ काम करना चाहिए। यह निर्णय यहीं से लिया गया था।
अब एसएसएच के माध्यम से जेटसन से कनेक्ट करें:

 ssh -X ubuntu@<ip_address> 

CUDA स्थापित करें


जेडईडी कैमरा के साथ काम करने के लिए, हमें जेडईडी एसडीके की आवश्यकता है, जिसे स्थापित सीयूडीए संस्करण 6.5 की आवश्यकता होती है। L4T के लिए CUDA टूलकिट 6.5 ( यहां से लिए गए निर्देश) के लिए डिबेट फाइल डाउनलोड करें :

 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 

L4T के लिए CUDA के लिए रिपॉजिटरी मेटाडेटा सेट करें जिसे आपने अभी डाउनलोड किया है:

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

NVIDIA के लिए OpenGL टूलकिट सहित स्वयं CUDA टूलकिट डाउनलोड और इंस्टॉल करें:

 sudo apt-get update 

कोडा-टूलकिट-6-5 स्थापित करें:

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

GPU तक पहुंच प्रदान करने के लिए "वीडियो" समूह में ubuntu उपयोगकर्ता जोड़ें:

 sudo usermod -a -G video $USER 

यहाँ $ USER ubuntu है।
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 

जेटसन TK1 पर USB 3.0 को कॉन्फ़िगर करना


डिफ़ॉल्ट रूप से, यूएसबी 3.0 पोर्ट को यूएसबी 2.0 के रूप में जेटसन TK1 पर सिस्टम द्वारा कॉन्फ़िगर किया गया है। हमें इसे 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' पर फिर से लिखें।

जेडईडी एसडीके स्थापित करें


स्थापना प्रक्रिया डेस्कटॉप लिनक्स के समान दिखती है। यह केवल ध्यान दिया जाना चाहिए कि जेटपैक को स्थापित करते समय ओपनसीवी पहले से ही स्थापित है ताकि आप इसके लिए टेग्रा अनुकूलन का उपयोग कर सकें। इसलिए, OpenCV की मैन्युअल स्थापना की आवश्यकता नहीं है।

जेडईडी स्टीरियो कैमरा का उपयोग करने के लिए, हमें जेडईडी एसडीके 1.2 स्थापित करना होगा। इंस्टॉलर एक विशेष जेटसन TK1 .run फ़ाइल का उपयोग करता है। इंस्टॉलर डाउनलोड करें:

 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 एक्सप्लोरर लॉन्च करें (SSH के माध्यम से दूरस्थ रूप से कनेक्ट होने पर काम नहीं करता है):

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

छवि

ZED स्टीरियो कैमरा के लिए ROS ड्राइवर स्थापित करना


मैंने अपने प्रयोगों में ROS इंडिगो का उपयोग किया। ROS ड्राइवर के लिए निर्भरताएँ स्थापित करें:

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

ZED कैमरे के लिए ROS आवरण स्थापित करें:

 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 

रन rtt_image_view:

 rosrun rqt_image_view rqt_image_view 

विषय / ज़ेड / डेप्थ / डेप्थ_ग्रिस्टर चुनने पर हमें एक गहरा नक्शा मिलता है:

छवि

बाएं कैमरे से RGB छवि (/ zed / बायां / image_raw_color):

छवि

और अंत में, सही कैमरे से RGB छवि (/ zed / सही / image_raw_color):

छवि

कैमरे से डेटा 15Hz की आवृत्ति के साथ विषयों / zed / rgb / image_raw_color और / zed / गहराई / deep_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 चलाएं (मैं -x विकल्प के साथ ssh से जुड़ने पर इसे सफलतापूर्वक लॉन्च करने में असमर्थ था):

 rosrun rviz rviz 

छवि

छवि

जेडईडी स्टीरियो कैमरा के साथ NVIDIA जेटसन पर SLAM


आइए अब एक व्यावहारिक कार्य पर जेडईडी कैमरा का प्रयास करें। NVIDIA जेटसन पर, आप आसानी से SLAM RTAB-MAP एल्गोरिथ्म चला सकते हैं। सबसे पहले, RTAB-MAP के लिए ROS आवरण स्थापित करें:

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

अब ZED कैमरा का उपयोग करके rtabmap रन करें। अगर हमारे पास zed_wrapper नहीं चल रहा है, तो इसे चलाएं:

 rosrun zed_wrapper zed_wrapper_node 

भागो rababmap:

 rtabmap 

स्रोत के रूप में rtabmap विंडो में ZED कैमरा चुनें:

छवि

मैंने NVIDIA जेटसन पर आरटीएबी-एमएपी का परीक्षण नहीं किया है, इसलिए मैं आपको छोड़ देता हूं, प्रिय पाठकों, इस एसएलएएम एल्गोरिदम की कोशिश करने का अवसर। RTAB-MAP का उपयोग मेरे पिछले दो लेखों ( यहां और यहां ) में पाया जा सकता है।

मुझे उम्मीद है कि यह लेख ZED स्टीरियो कैमरा और NVIDIA जेटसन माइक्रो कंप्यूटर का उपयोग करने के लिए आपके लिए एक अच्छा प्रारंभिक बिंदु होगा। मैं आपको प्रयोगों में शुभकामनाएं देता हूं और जल्द ही आपको देखता हूं!

पुनश्च: प्रयोग के लिए एक सस्ती स्टीरियो कैमरा चुनने के बारे में आपकी राय दिलचस्प है। आरओएस समर्थन एक बड़ी बात नहीं है, सबसे महत्वपूर्ण बात कीमत। कृपया लेख में टिप्पणियों में अपने विकल्प लिखें।

PS (अपडेट): मैं ZED की तरह निष्क्रिय स्टीरियो कैमरों की कोशिश करना चाहूंगा। रास्पबेरी पाई 3 के साथ काम करने में सक्षम वांछनीय।

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


All Articles