جدول المحتويات:
- الخطوة 1: ما الذي نجح وما الذي لم ينجح
- الخطوة 2: تثبيت برامج تشغيل Freenect و Freenect_stack
- الخطوة 3: تثبيت خريطة RTAB المستقلة
- الخطوة 4: تثبيت Rtabmap_ros
- الخطوة 5: وقت العرض
- الخطوة 6: المراجع
فيديو: RGB-D SLAM مع Kinect على Raspberry Pi 4 [Buster] ROS Melodic: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
كتبت العام الماضي مقالًا حول إنشاء وتثبيت ROS Melodic على Raspberry Pi الجديد (في ذلك الوقت) باستخدام نظام تشغيل Debian Buster. تلقت المقالة الكثير من الاهتمام هنا على Instructables وعلى الأنظمة الأساسية الأخرى. أنا سعيد جدًا لأنني ساعدت الكثير من الأشخاص على تثبيت ROS بنجاح على Raspberry Pi. في الفيديو المصاحب ، أوضحت أيضًا بإيجاز الحصول على صورة عميقة من Kinect 360. في وقت لاحق اتصل بي العديد من الأشخاص على LinkedIn وسألوني كيف تمكنت من استخدام Kinect مع Raspberry Pi. لقد فوجئت نوعًا ما بالسؤال ، نظرًا لأن عملية إعداد Kinect في ذلك الوقت استغرقت حوالي 3-4 ساعات ولم تبدو معقدة للغاية. لقد قمت بمشاركة ملفات.bash_history الخاصة بي مع جميع الأشخاص الذين استفسروا عن المشكلة وفي أبريل وجدت أخيرًا الوقت لكتابة مقال حول كيفية تثبيت برامج تشغيل Kinect وتنفيذ RGB-D SLAM باستخدام RTAB-MAP ROS. أسبوع من الليالي الطوال بعد بدء كتابة المقال ، أفهم الآن لماذا سألني الكثير من الناس هذا السؤال:)
سأبدأ بشرح موجز حول الأساليب التي نجحت والتي لم تنجح. ثم سأشرح كيفية تثبيت برامج تشغيل Kinect للاستخدام مع ROS Melodic وأخيراً كيفية إعداد جهازك لـ RGB-D SLAM باستخدام RTAB-MAP ROS.
الخطوة 1: ما الذي نجح وما الذي لم ينجح
هناك عدد قليل من برامج التشغيل المتاحة لـ Kinect على Raspberry Pi - اثنان منهم مدعومان من قبل ROS.
برامج تشغيل OpenNI - حزمة openni_camera لـ ROS
برامج تشغيل libfreenect - حزمة freenect_stack لـ ROS
إذا نظرت إلى مستودعات GitHub الخاصة بها ، يمكنك أن تجد أن برنامج تشغيل OpenNI قد تم تحديثه آخر مرة منذ سنوات ، وعمليًا هو EOL لفترة طويلة. ibfreekinect من ناحية أخرى يتم تحديثه في الوقت المناسب. نفس الشيء بالنسبة لحزم ROS الخاصة بهم ، تم إصدار freenect_stack لـ ROS melodic ، في حين أنه أحدث توزيعة openni_camera قدم دعمًا لـ Fuerte …
من الممكن تجميع وتثبيت برنامج تشغيل OpenNI وحزمة openni_camera على Raspberry Pi لـ ROS Melodic ، على الرغم من أنه لم ينجح معي. للقيام بذلك ، اتبع هذا الدليل ، الخطوات 1 ، 2 ، 3 ، في الخطوتين 2 و 3 ، قم بإزالة علامة "-mfloat-abi = softfp" من ملف Platform / Linux / Build / Common / Platform. ARM (وفقًا لإرشادات حول هذا قضية جيثب). ثم استنساخ حزمة openni_camera إلى مساحة عمل catkin وتجميعها باستخدام catkin_make. لم ينجح الأمر بالنسبة لي على الرغم من أن الخطأ كان يؤدي إلى فشل إنشاء عمق. السبب: واجهة USB غير مدعومة!
أدى استخدام libfreenect و freenect_stack إلى النجاح في النهاية ، ولكن كان هناك عدد غير قليل من المشكلات التي يجب حلها وكان الحل صعبًا بعض الشيء ، على الرغم من أنه يعمل بشكل مستقر للغاية (1 ساعة + استمرار التشغيل).
الخطوة 2: تثبيت برامج تشغيل Freenect و Freenect_stack
سأفترض أنك تستخدم صورة ROS Melodic Desktop الخاصة بي من هذه المقالة. إذا كنت تريد إجراء التثبيت في بيئة مختلفة ، على سبيل المثال صورة ros_comm أو في Ubuntu لـ Raspberry Pi ، فتأكد من أن لديك معرفة كافية حول ROS لحل المشكلات التي قد تنشأ عن هذا الاختلاف.
لنبدأ ببناء برامج تشغيل libfreenect من المصدر ، نظرًا لأن الإصدار المبني مسبقًا من apt-get repository قديم جدًا.
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
استنساخ بوابة
القرص المضغوط libfreenect
mkdir build && cd build
cmake -L..
صنع
sudo جعل التثبيت
نأمل أن تكون عملية الإنشاء هادئة ومليئة بالرسائل الصديقة للبيئة. بعد تثبيت برنامج تشغيل libfreenect ، الخطوة التالية هي تثبيت حزمة freenect_stack لـ ROS. هناك عدد غير قليل من الحزم الأخرى التي يعتمد عليها ، سيتعين علينا استنساخها والبناء باستخدام catkin_make معًا. قبل أن تبدأ ، تأكد من إعداد مساحة عمل catkin وتحديد مصادرها بشكل صحيح!
من مجلد src مساحة عمل catkin الخاص بك:
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
ووه ، كان ذلك كثيرًا من الاستنساخ.
التعديل اللاحق: كما أشار أحد القراء ، يجب ضبط مستودع vision_opencv على الفرع اللحني. لهذا القرص المضغوط إلى src / vision_opencv وتنفيذها
بوابة الخروج لحني
ثم ارجع إلى مجلد مساحة عمل catkin. للتحقق مما إذا كنا نتبع التبعيات لجميع الحزم في المكان ، نفّذ هذا الأمر:
تثبيت rosdep - من المسارات src --ignore-src
إذا نجحت في استنساخ جميع الحزم الضرورية ، فسيطلب تنزيل libfreekinect باستخدام apt-get. أجب لا ، لأننا قمنا بالفعل بتثبيته من المصدر.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
وقت الشاي ؛) أو أيا كان مشروبك المفضل.
بعد انتهاء عملية التجميع ، يمكنك محاولة تشغيل kinect stack والتحقق مما إذا كان ينتج العمق والصور الملونة بشكل صحيح. أستخدم Raspberry Pi بدون رأس ، لذا أحتاج إلى تشغيل RVIZ على جهاز كمبيوتر سطح المكتب.
في Raspberry Pi ، قم (قم بتغيير عنوان IP إلى عنوان IP الخاص بـ Raspberry Pi!):
تصدير ROS_MASTER_URI = https://192.168.0.108: 11311
تصدير ROS_IP = 192.168.0.108
roslaunch freenect_launch freene. إطلاق العمق_التسجيل: = صحيح
سترى الإخراج كما في لقطة الشاشة 1. "إيقاف تدفق جهاز RGB و Depth Stream flush." يشير إلى أن Kinect جاهز ، ولكن لا يوجد شيء مشترك في موضوعاته حتى الآن.
على كمبيوتر سطح المكتب المثبت عليه ROS Melodic ، قم بما يلي:
تصدير ROS_MASTER_URI = https://192.168.0.108: 11311
تصدير ROS_IP = [your-desktop-computer-ip] rviz
الآن يجب أن تكون قادرًا على رؤية تدفقات صور RGB و Depth في RVIZ كما في لقطة الشاشة 2 أعلاه … ولكن ليس في نفس الوقت.
حسنًا ، هنا تبدأ الأشياء المبتكرة. لقد أمضيت 3 أيام في تجربة برامج تشغيل وأساليب مختلفة ولم ينجح شيء - بمجرد أن أحاول الوصول إلى دفقين في وقت واحد ، سيبدأ Kinect في انتهاء المهلة كما ترون في لقطة الشاشة 3. لقد جربت كل شيء: مصدر طاقة أفضل ، وإمدادات أقدم من libfreenect و freenect_stack ، إيقاف usb_autosuspend ، حقن التبييض في منافذ USB (حسنًا ، ليس الأخير! لا تفعل ذلك ، إنها مزحة ولا ينبغي أن تشكل نصيحة فنية:)). ثم في إحدى مشكلات Github ، رأيت حسابًا لشخص قال إن جهاز Kinect الخاص به غير مستقر ، إلى أن "قام بتحميل ناقل USB" عن طريق توصيل WiFi dongle. حاولت ذلك، وأنها عملت. من ناحية ، أنا سعيد لأنه نجح. من ناحية أخرى ، يجب على شخص ما إصلاح ذلك. حسنًا ، في غضون ذلك ، بعد إصلاح ذلك (نوعًا ما) ، دعنا ننتقل إلى الخطوة التالية.
الخطوة 3: تثبيت خريطة RTAB المستقلة
أولاً ، لدينا مجموعة من التبعيات ليتم تثبيتها:
على الرغم من توفر حزمة armhf سابقة الإنشاء لـ PCL ، فسنحتاج إلى تجميعها من المصدر بسبب هذه المشكلة. استشر مستودع PCL GitHub لمعرفة كيفية تجميعه من المصدر.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
الآن لنقوم باستنساخ rtab map مستقل لمستودع الحزمة git إلى المجلد الرئيسي الخاص بنا ونقوم ببنائه. لقد استخدمت الإصدار الأخير (0.18.0).
استنساخ بوابة
قرص rtabmap / بناء
cmake..
جعل -j2
sudo جعل التثبيت
sudo ldconfig rtabmap
الآن عندما نقوم بتجميع RTAB MAP المستقل ، يمكننا الانتقال إلى الخطوة الأخيرة - تجميع وتثبيت غلاف ROS لـ RTAB MAP ، rtabmap_ros.
الخطوة 4: تثبيت Rtabmap_ros
إذا وصلت إلى هذا الحد ، فمن المحتمل أنك تعرف التدريبات الآن:) قم بنسخ مستودع rtabmap_ros إلى مجلد مساحة عمل catkin الخاص بك. (قم بتنفيذ الأمر التالي من مجلد src مساحة عمل catkin!)
استنساخ بوابة
سنحتاج أيضًا إلى حزم ROS هذه ، حيث يعتمد rtabmap_ros على:
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
استنساخ بوابة
قبل أن تبدأ في التجميع ، يمكنك التأكد من عدم فقد أي تبعيات باستخدام الأمر التالي:
تثبيت rosdep - من المسارات src --ignore-src
قم بتثبيت المزيد من التبعيات من ap-get (لن يؤدي ذلك إلى مقاطعة الارتباط ، ولكنه سيؤدي إلى حدوث خطأ أثناء التجميع)
sudo apt-get install libsdl-image1.2-dev
ثم انتقل إلى مجلد مساحة عمل catkin وابدأ في التجميع:
قرص مضغوط..
catkin_make -j2
آمل أنك لم تضع مشروبك المفضل في أي مكان بعيدًا جدًا. بعد الانتهاء من التجميع ، نحن على استعداد للقيام برسم الخرائط!
الخطوة 5: وقت العرض
قم بهذه الحيلة المبتكرة بإضافة شيء مثل WiFi أو Bluetooth dongle إلى منفذ USB - كنت أستخدم منفذين USB 2.0 ، أحدهما لـ Kinect والآخر لـ WiFi dongle.
في Raspberry Pi ، قم (قم بتغيير عنوان IP إلى عنوان IP الخاص بـ Raspberry Pi!): المحطة الأولى:
تصدير ROS_MASTER_URI = https://192.168.0.108: 11311
تصدير ROS_IP = 192.168.0.108
roslaunch freenect_launch freen.
المحطة الثانية:
roslaunch rtabmap_ros rgbd_mapping.la تشغيل rtabmap_args: = - delete_db_on_start --Vis / MaxFeatures 500 --Mem / ImagePreDecimation 2 --Mem / ImagePostDecimation 2 --Kp / DetectorStristic 6 --OdomF2M / MaxSize 1000 --Odomvecap: = خطأ
سترى الإخراج كما في لقطة الشاشة 1. "إيقاف تدفق جهاز RGB و Depth Stream flush." يشير إلى أن Kinect جاهز ، ولكن لا يوجد شيء مشترك في موضوعاته حتى الآن. في المحطة الثانية ، يجب أن ترى رسائل حول جودة odom. إذا قمت بنقل Kinect بسرعة كبيرة ، فستنتقل جودة odom إلى 0 وستحتاج إلى الانتقال إلى موقع سابق أو البدء من قاعدة بيانات نظيفة.
على كمبيوتر سطح المكتب الخاص بك مع تثبيت حزمة ROS Melodic و rtab_map (أوصيك باستخدام كمبيوتر Ubuntu لذلك ، نظرًا لأن الحزم سابقة الإنشاء متوفرة لهندسة amd64) ، قم بما يلي:
تصدير ROS_MASTER_URI = https://192.168.0.108: 11311
تصدير ROS_IP = [your-desktop-computer-ip]
rviz
أضف MapGraph و MapCloud إلى rviz واختر الموضوعات المقابلة القادمة من rtab_map. حسنًا ، هذا هو طعم النصر الحلو! انطلق وقم ببعض الخرائط:)
الخطوة 6: المراجع
أثناء كتابة هذا المقال ، استشرنا عددًا من الموارد ، معظمها منتديات ومشكلات GitHub. سأتركهم هنا.
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
أضفني على LinkedIn إذا كان لديك أي أسئلة واشترك في قناتي على YouTube للحصول على إشعارات حول المزيد من المشاريع المثيرة للاهتمام التي تتضمن التعلم الآلي والروبوتات.
موصى به:
ROS Melodic على Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 خطوات
ROS Melodic على Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: ستغطي هذه المقالة عملية تثبيت ROS Melodic Morenia على Raspberry Pi 4 الذي يشغل أحدث إصدار من Debian Buster وكيفية استخدام RPLIDAR A1M8 مع التثبيت. منذ أن تم إصدار Debian Buster رسميًا قبل بضعة أسابيع فقط (اعتبارًا من الآن
بدء استخدام ROS Melodic على Raspberry Pi 4 Model B: 7 خطوات
بدء استخدام ROS Melodic على Raspberry Pi 4 Model B: نظام تشغيل الروبوت (ROS) عبارة عن مجموعة من مكتبات البرامج والأدوات المستخدمة لبناء أنظمة وتطبيقات روبوتية. إصدار الخدمة طويل المدى الحالي من ROS هو Melodic Morenia. يتوافق ROS Melodic مع نظام التشغيل Ubuntu 18.04 Bionic Beaver فقط
يعمل بدون شاشة / عرض (بدون رأس) على Raspberry Pi أو أجهزة كمبيوتر أخرى قائمة على Linux / unix: 6 خطوات
يعمل بدون شاشة / عرض (بدون رأس) على Raspberry Pi أو أجهزة كمبيوتر أخرى قائمة على Linux / unix: عندما يشتري معظم الناس Raspberry PI ، فإنهم يعتقدون أنهم بحاجة إلى شاشة كمبيوتر. لا تضيع أموالك على شاشات الكمبيوتر ولوحات المفاتيح غير الضرورية. لا تضيع وقتك في تحريك لوحات المفاتيح والشاشات بين أجهزة الكمبيوتر. لا تربط التلفزيون عندما لا يكون
ESP8266 مراقبة درجة حرارة Nodemcu باستخدام DHT11 على خادم ويب محلي - احصل على درجة حرارة الغرفة ورطوبتها على متصفحك: 6 خطوات
ESP8266 مراقبة درجة حرارة Nodemcu باستخدام DHT11 على خادم ويب محلي | احصل على درجة حرارة الغرفة ورطوبتها على متصفحك: مرحبًا يا شباب اليوم سنصنع الرطوبة & amp؛ نظام مراقبة درجة الحرارة باستخدام ESP 8266 NODEMCU & amp؛ جهاز استشعار درجة الحرارة DHT11. سيتم الحصول على درجة الحرارة والرطوبة من مستشعر DHT11 & amp؛ يمكن رؤيته على متصفح أي صفحة ويب ستتم إدارتها
تثبيت Raspbian Buster على Raspberry Pi 3 - بدء استخدام Raspbian Buster مع Raspberry Pi 3b / 3b +: 4 خطوات
تثبيت Raspbian Buster على Raspberry Pi 3 | بدء استخدام Raspbian Buster مع Raspberry Pi 3b / 3b +: مرحبًا يا شباب ، أطلقت منظمة Raspberry pi مؤخرًا نظام تشغيل Raspbian OS الجديد يسمى Raspbian Buster. إنها نسخة جديدة من Raspbian لـ Raspberry Pi. حتى اليوم في هذه التعليمات سوف نتعلم كيفية تثبيت نظام التشغيل Raspbian Buster على جهاز Raspberry pi 3