विषयसूची:

रास्पबेरी पाई 4 [बस्टर] आरओएस मेलोडिक पर किनेक्ट के साथ आरजीबी-डी स्लैम: 6 कदम
रास्पबेरी पाई 4 [बस्टर] आरओएस मेलोडिक पर किनेक्ट के साथ आरजीबी-डी स्लैम: 6 कदम

वीडियो: रास्पबेरी पाई 4 [बस्टर] आरओएस मेलोडिक पर किनेक्ट के साथ आरजीबी-डी स्लैम: 6 कदम

वीडियो: रास्पबेरी पाई 4 [बस्टर] आरओएस मेलोडिक पर किनेक्ट के साथ आरजीबी-डी स्लैम: 6 कदम
वीडियो: देख लो सरकारी नौकरी का कमाल 😆😆😆😭😭😭😭😭 2024, नवंबर
Anonim
Image
Image

पिछले साल मैंने डेबियन बस्टर ओएस के साथ नए (उस समय) रास्पबेरी पाई पर आरओएस मेलोडिक बनाने और स्थापित करने के बारे में एक लेख लिखा था। लेख को यहां इंस्ट्रक्शंस और अन्य प्लेटफॉर्म दोनों पर बहुत ध्यान दिया गया है। मुझे बहुत खुशी है कि मैंने इतने सारे लोगों को रास्पबेरी पाई पर सफलतापूर्वक आरओएस स्थापित करने में मदद की। साथ के वीडियो में मैंने संक्षेप में Kinect 360 से गहराई से छवि प्राप्त करने का भी प्रदर्शन किया। बाद में कई लोगों ने मुझसे लिंक्डइन पर संपर्क किया और मुझसे पूछा कि मैंने रास्पबेरी पाई के साथ किनेक्ट का उपयोग करने का प्रबंधन कैसे किया। मुझे इस सवाल पर थोड़ा आश्चर्य हुआ, क्योंकि उस समय Kinect को तैयार करने की प्रक्रिया में मुझे लगभग 3-4 घंटे लगे और यह बहुत जटिल नहीं लगा। मैंने अपनी.bash_history फाइलों को उन सभी लोगों के साथ साझा किया जो मुझसे इस मुद्दे के बारे में पूछताछ कर रहे थे और अप्रैल में आखिरकार एक लेख लिखने का समय मिला कि कैसे Kinect ड्राइवर स्थापित करें और RTAB-MAP ROS के साथ RGB-D SLAM करें। लेख लिखना शुरू करने के बाद रातों की नींद हराम करने वाला सप्ताह अब मुझे समझ में आया कि इतने लोगों ने मुझसे यह सवाल क्यों पूछा:)

मैं इस बारे में संक्षिप्त विवरण के साथ शुरुआत करूंगा कि किन तरीकों ने काम किया और कौन सा नहीं। फिर मैं समझाता हूँ कि ROS मेलोडिक के साथ उपयोग के लिए Kinect ड्राइवर कैसे स्थापित करें और अंत में RTAB-MAP ROS के साथ RGB-D SLAM के लिए अपनी मशीन कैसे सेट करें।

चरण 1: क्या काम किया और क्या नहीं?

रास्पबेरी पाई पर किनेक्ट के लिए कुछ ड्राइवर उपलब्ध हैं - उनमें से दो आरओएस द्वारा समर्थित हैं।

OpenNI ड्राइवर - ROS के लिए openni_camera पैकेज

libfreenect ड्राइवर - ROS के लिए freenect_stack पैकेज

यदि आप उनके संबंधित GitHub रिपॉजिटरी को देखते हैं, तो आप पा सकते हैं कि OpenNI ड्राइवर को अंतिम बार वर्षों पहले अपडेट किया गया है और व्यवहार में यह लंबे समय के लिए EOL है। दूसरी ओर ibfreekinect को समय पर अपडेट किया जा रहा है। उनके संबंधित आरओएस पैकेजों के लिए भी, फ्रीनेक्ट_स्टैक को आरओएस मेलोडिक के लिए जारी किया गया था, जबकि उन्होंने सबसे पुराने डिस्ट्रो ओपननी_कैमरा ने फुएर्टे के लिए समर्थन सूचीबद्ध किया है …

आरओएस मेलोडिक के लिए रास्पबेरी पाई पर ओपनएनआई ड्राइवर और ओपननी_कैमरा पैकेज को संकलित और स्थापित करना संभव है, हालांकि यह मेरे लिए काम नहीं करता है। ऐसा करने के लिए इस गाइड का पालन करें, चरण 1, 2, 3, चरण 2 और 3 पर "-mfloat-abi=softfp" ध्वज को Platform/Linux/Build/Common/Platform. ARM फ़ाइल से हटा दें (इस पर सलाह के अनुसार) जीथब मुद्दा)। फिर openni_camera पैकेज को अपने कैटकिन कार्यक्षेत्र में क्लोन करें और catkin_make के साथ संकलित करें। यह मेरे लिए काम नहीं किया, हालांकि, त्रुटि पैदा कर रहा था गहराई जनरेटर विफल रहा। कारण: USB इंटरफ़ेस समर्थित नहीं है!

libfreenect और freenect_stack का उपयोग करने से अंत में सफलता मिली, लेकिन हल करने के लिए कुछ समस्याएं थीं और समाधान थोड़ा हैकी था, हालांकि बहुत स्थिर (1 घंटे + निरंतर संचालन) काम कर रहा था।

चरण 2: फ़्रीनेक्ट ड्राइवर्स और फ़्रीनेक्ट_स्टैक स्थापित करना

फ़्रीनेक्ट ड्राइवर्स और फ़्रीनेक्ट_स्टैक स्थापित करना
फ़्रीनेक्ट ड्राइवर्स और फ़्रीनेक्ट_स्टैक स्थापित करना

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

आइए स्रोत से libfreenect ड्राइवरों का निर्माण शुरू करें, क्योंकि apt-get रिपॉजिटरी पूर्व-निर्मित संस्करण बहुत पुराना है।

सुडो एपीटी-अपडेट प्राप्त करें

sudo apt-libusb-1.0-0-dev install स्थापित करें

गिट क्लोन

सीडी लिबफ्रीनेक्ट

एमकेडीआईआर बिल्ड && सीडी बिल्ड

सेमेक-एल..

बनाना

सुडो स्थापित करें

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

आपके कैटकिन कार्यक्षेत्र src फ़ोल्डर से:

गिट क्लोन

गिट क्लोन

गिट क्लोन

गिट क्लोन

गिट क्लोन

गिट क्लोन

वाह, वह बहुत क्लोनिंग था।

बाद में संपादित करें: जैसा कि मेरे पाठकों में से एक ने बताया था, Vision_opencv रिपॉजिटरी को मेलोडिक शाखा में सेट करने की आवश्यकता है। उस सीडी के लिए src/vision_opencv और निष्पादित करें

गिट चेकआउट मेलोडिक

फिर अपने कैटकिन वर्कस्पेस फोल्डर में वापस जाएं। यह जांचने के लिए कि क्या हम सभी पैकेजों के लिए निर्भरता इस कमांड को निष्पादित करते हैं:

रोसडेप स्थापित करें --from-paths src --ignore-src

यदि आपने सभी आवश्यक पैकेजों को सफलतापूर्वक क्लोन कर लिया है तो यह libfreekinect को apt-get के साथ डाउनलोड करने का अनुरोध करेगा। उत्तर नहीं, क्योंकि हम इसे पहले ही स्रोत से स्थापित कर चुके हैं।

sudo apt-libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev इंस्टॉल करें

कैटकिन_मेक -j2

चाय का समय;) या आपका पसंदीदा पेय जो भी हो।

संकलन प्रक्रिया समाप्त होने के बाद आप किनेक्ट स्टैक को लॉन्च करने का प्रयास कर सकते हैं और जांच सकते हैं कि यह गहराई और रंग छवियों को ठीक से आउटपुट करता है या नहीं। मैं बिना सिर के रास्पबेरी पाई का उपयोग करता हूं, इसलिए मुझे अपने डेस्कटॉप कंप्यूटर पर RVIZ चलाने की आवश्यकता है।

रास्पबेरी पाई पर (अपने रास्पबेरी पाई के आईपी पते को आईपी पते में बदलें!):

निर्यात ROS_MASTER_URI=https://192.168.0.108:11311

निर्यात ROS_IP=192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration:=true

आप स्क्रीनशॉट 1 के रूप में आउटपुट देखेंगे। "डिवाइस को रोकना आरजीबी और गहराई स्ट्रीम फ्लश।" इंगित करता है कि किनेक्ट तैयार है, लेकिन अभी तक इसके विषयों के लिए कुछ भी सब्सक्राइब नहीं किया गया है।

अपने डेस्कटॉप कंप्यूटर पर आरओएस मेलोडिक स्थापित के साथ करें:

निर्यात ROS_MASTER_URI=https://192.168.0.108:11311

निर्यात ROS_IP=[आपका-डेस्कटॉप-कंप्यूटर-आईपी] rviz

अब आपको आरवीआईजेड में आरजीबी और डेप्थ इमेज स्ट्रीम देखने में सक्षम होना चाहिए जैसा कि ऊपर स्क्रीनशॉट 2 में है … लेकिन एक ही समय में नहीं।

ठीक है, यहीं से हैकी सामान शुरू होता है। मैंने अलग-अलग ड्राइवरों और दृष्टिकोणों की कोशिश करते हुए 3 दिन बिताए और कुछ भी काम नहीं किया - जैसे ही मैं एक साथ दो धाराओं तक पहुँचने की कोशिश करूँगा, Kinect का समय समाप्त हो जाएगा जैसा कि आप स्क्रीनशॉट 3 में देख सकते हैं। मैंने सब कुछ करने की कोशिश की: बेहतर बिजली की आपूर्ति, libfreenect के पुराने काम और freenect_stack, usb_autosuspend को रोकना, USB पोर्ट में ब्लीच इंजेक्ट करना (ठीक है, आखिरी वाला नहीं! ऐसा न करें, यह एक मजाक है और तकनीकी सलाह नहीं होनी चाहिए:))। फिर जीथब के मुद्दों में से एक में मैंने एक ऐसे व्यक्ति का खाता देखा जिसने कहा कि उनका किनेक्ट अस्थिर था, जब तक कि उन्होंने वाईफाई डोंगल को जोड़कर "यूएसबी बस लोड नहीं किया"। मैंने यह कोशिश की और यह काम कर गया। एक ओर, मुझे खुशी है कि इसने काम किया। दूसरी ओर, किसी को वास्तव में इसे ठीक करना चाहिए। ठीक है, इस बीच (इस तरह) तय करने के बाद, अगले चरण पर चलते हैं।

चरण 3: स्टैंडअलोन आरटीएबी एमएपी स्थापित करना

स्टैंडअलोन आरटीएबी एमएपी स्थापित करना
स्टैंडअलोन आरटीएबी एमएपी स्थापित करना

पहले हमारे पास स्थापित करने के लिए निर्भरता का एक गुच्छा है:

पीसीएल के लिए एक प्रीबिल्ट आर्महफ पैकेज उपलब्ध होने के बावजूद, हमें इस समस्या के कारण इसे स्रोत से संकलित करने की आवश्यकता होगी। इसे स्रोत से संकलित करने का तरीका देखने के लिए पीसीएल गिटहब भंडार से परामर्श लें।

sudo apt-libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni इंस्टॉल करें

sudo apt-libopencv-dev cmake libopenni2-dev libsqlite3-dev. स्थापित करें

अब हमारे होम फोल्डर में rtab मैप स्टैंडअलोन पैकेज git रिपॉजिटरी को क्लोन करते हैं और इसे बनाते हैं। मैंने नवीनतम रिलीज़ (0.18.0) का उपयोग किया।

गिट क्लोन

सीडी आरटीबीमैप/बिल्ड

सेमेक..

मेक -जे२

सुडो स्थापित करें

sudo ldconfig rtabmap

अब जब हमने स्टैंडअलोन आरटीएबी एमएपी संकलित किया है, तो हम अंतिम चरण पर जा सकते हैं - आरटीएबी एमएपी, rtabmap_ros के लिए आरओएस रैपर को संकलित और स्थापित करना।

चरण 4: Rtabmap_ros स्थापित करना

Rtabmap_ros स्थापित करना
Rtabmap_ros स्थापित करना

यदि आप इतनी दूर हो गए हैं, तो आप शायद अब तक ड्रिल को जानते हैं:) rtabmap_ros रिपॉजिटरी को अपने कैटकिन वर्कस्पेस src फ़ोल्डर में क्लोन करें। (कैटकिन वर्कस्पेस src फोल्डर से अगला कमांड निष्पादित करें!)

गिट क्लोन

हमें इन ROS पैकेजों की भी आवश्यकता होगी, जो कि rtabmap_ros इस पर निर्भर करता है:

गिट क्लोन

गिट क्लोन

गिट क्लोन

गिट क्लोन

गिट क्लोन

संकलन शुरू करने से पहले आप यह सुनिश्चित कर सकते हैं कि आप निम्न आदेश के साथ कोई निर्भरता नहीं खो रहे हैं:

रोसडेप स्थापित करें --from-paths src --ignore-src

एपी-गेट से अधिक निर्भरताएं स्थापित करें (ये लिंकिंग को बाधित नहीं करेंगे, लेकिन संकलन के दौरान एक त्रुटि फेंक देंगे)

sudo apt-libsdl-image1.2-dev स्थापित करें

फिर अपने कैटकिन कार्यक्षेत्र फ़ोल्डर में जाएँ और संकलन शुरू करें:

सीडी..

कैटकिन_मेक -j2

आशा है कि आपने अपने पसंदीदा संकलन पेय को कहीं भी बहुत दूर नहीं रखा है। संकलन हो जाने के बाद हम मैपिंग करने के लिए तैयार हैं!

चरण 5: समय दिखाएं

शो टाइम
शो टाइम
शो टाइम
शो टाइम

एक यूएसबी पोर्ट में वाईफाई या ब्लूटूथ डोंगल जैसे कुछ जोड़ने के साथ उस हैकी चाल को करें - मैं 2 यूएसबी 2.0 पोर्ट का उपयोग कर रहा था, एक किनेक्ट के लिए, दूसरा वाईफाई डोंगल के लिए।

रास्पबेरी पाई पर (अपने रास्पबेरी पाई के आईपी पते को आईपी पते में बदलें!): पहला टर्मिनल:

निर्यात ROS_MASTER_URI=https://192.168.0.108:11311

निर्यात ROS_IP=192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration:=true data_skip:=2

दूसरा टर्मिनल:

roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args:= --delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2 --Kp/DetectorStrategy 6 --OdomF2M/MaxSize 1000 --OdomF2M/ImageDecimation 1000 --OdomF2M/ImageDecimation 1000:=झूठा

आप स्क्रीनशॉट 1 के रूप में आउटपुट देखेंगे। "डिवाइस को रोकना आरजीबी और गहराई स्ट्रीम फ्लश।" इंगित करता है कि Kinect तैयार है, लेकिन अभी तक इसके विषयों के लिए कुछ भी सदस्यता नहीं ली गई है। दूसरे टर्मिनल में आपको odom गुणवत्ता के बारे में संदेश दिखाई देने चाहिए। यदि आप Kinect को बहुत तेज़ी से ले जाते हैं, तो odom गुणवत्ता 0 पर जाएगी और आपको किसी पिछले स्थान पर जाना होगा या स्वच्छ डेटाबेस से प्रारंभ करना होगा।

ROS मेलोडिक और rtab_map पैकेज के साथ आपके डेस्कटॉप कंप्यूटर पर स्थापित (मैं आपको इसके लिए उबंटू कंप्यूटर का उपयोग करने की सलाह देता हूं, क्योंकि पूर्व-निर्मित पैकेज amd64 आर्किटेक्चर के लिए उपलब्ध हैं) करें:

निर्यात ROS_MASTER_URI=https://192.168.0.108:11311

निर्यात ROS_IP=[आपका-डेस्कटॉप-कंप्यूटर-आईपी]

rviz

मैपग्राफ और मैपक्लाउड डिस्प्ले को rviz में जोड़ें और rtab_map से आने वाले संबंधित विषयों को चुनें। खैर, यह बात है, जीत का मीठा स्वाद! आगे बढ़ो और कुछ मैपिंग करो:)

चरण 6: संदर्भ

इस लेख को लिखते समय मेरे द्वारा परामर्श किए गए कई संसाधन थे, जिनमें ज्यादातर फ़ोरम और गिटहब मुद्दे थे। मैं उन्हें यहाँ छोड़ दूँगा।

github.com/OpenKinect/libfreenect/issues/338

www.reddit.com/r/robotics/comments/8d37gy/ros_with_raspberry_pi_and_xbox_360_kinect_question/

github.com/ros-drivers/freenect_stack/issues/48

official-rtab-map-forum.67519.x6.nabble.com/RGB-D-SLAM-example-on-ROS-and-Raspberry-Pi-3-td1250.html

github.com/OpenKinect/libfreenect/issues/524

यदि आपके कोई प्रश्न हैं तो मुझे लिंक्डइन पर जोड़ें और मशीन लर्निंग और रोबोटिक्स से जुड़ी और दिलचस्प परियोजनाओं के बारे में सूचित करने के लिए मेरे YouTube चैनल को सब्सक्राइब करें।

सिफारिश की: