תוכן עניינים:
- שלב 1: מה עבד ומה לא
- שלב 2: התקנת מנהלי התקן Freenect ו- Freenect_stack
- שלב 3: התקנת מפת RTAB עצמאית
- שלב 4: התקנת Rtabmap_ros
- שלב 5: הצג זמן
- שלב 6: הפניות
וִידֵאוֹ: RGB-D SLAM עם Kinect ב- Raspberry Pi 4 [באסטר] ROS Melodic: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
בשנה שעברה כתבתי מאמר על בניית והתקנת ROS Melodic על פטל פטל חדש (באותה תקופה) עם מערכת ההפעלה Debian Buster. המאמר זכה לתשומת לב רבה הן כאן ב- Instructables והן בפלטפורמות אחרות. אני שמח מאוד שעזרתי לכל כך הרבה אנשים להתקין בהצלחה ROS ב- Raspberry Pi. בסרטון המצורף הדגמתי בקצרה גם תמונת עומק מ- Kinect 360. מאוחר יותר אנשים רבים יצרו איתי קשר בלינקדאין ושאלו אותי איך הצלחתי להשתמש ב- Kinect עם Raspberry Pi. קצת הופתעתי מהשאלה, מכיוון שהתהליך של הכנת קינקט באותה תקופה לקח לי בערך 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, בעוד שהוא האחרון distro openni_camera רשם תמיכה ב- Fuerte …
אפשר להרכיב ולהתקין את מנהל ההתקן OpenNI וחבילת openni_camera ב- Raspberry Pi עבור ROS Melodic, למרות שזה לא עבד בשבילי. לשם כך בצע את המדריך הזה, שלבים 1, 2, 3, בשלב 2 ו -3 הסר את הדגל "-mfloat-abi = softfp" מקובץ Platform/Linux/Build/Common/Platform. ARM (לכל עצה בנושא גיליון Github). לאחר מכן, שיבוט את חבילת openni_camera לסביבת העבודה שלך ב- catkin ותערוך עם catkin_make. זה לא עבד בשבילי, אך השגיאה הייתה יצירת מחולל עומק נכשל. סיבה: ממשק USB אינו נתמך!
השימוש ב- libfreenect ו- freenect_stack הניב הצלחה בסופו של דבר, אך היו לא מעט בעיות לפתור והפתרון היה קצת פרוץ, אם כי עובד יציב מאוד (שעה + המשך פעולה).
שלב 2: התקנת מנהלי התקן Freenect ו- Freenect_stack
אני מניח שאתה משתמש בתמונת שולחן העבודה המלודי של ROS שלי ממאמר זה. אם אתה רוצה לבצע התקנה בסביבה אחרת, למשל תמונת ros_comm או באובונטו עבור Raspberry Pi, ודא שיש לך מספיק ידע על ROS כדי לפתור בעיות שעלולות לנבוע מההבדל הזה.
נתחיל בבניית מנהלי התקנים של libfreenect מהמקור, מכיוון שגרסה שנבנתה מראש ל- apt-get היא מיושנת מדי.
עדכון sudo apt-get
sudo apt-get install libusb-1.0-0-dev
שיבוט git
cd libfreenect
mkdir build && build build
cmake -L..
עשה
sudo עשה התקנה
יש לקוות שתהליך הבנייה יהיה ללא אירועים ומלא הודעות ידידותיות ירוקות. לאחר התקנת מנהל ההתקן libfreenect, הדבר הבא שצריך לעשות הוא להתקין את חבילת freenect_stack עבור ROS. יש לא מעט חבילות אחרות שזה תלוי בהן, נצטרך לשבט אותן ולבנות עם catkin_make הכל יחד. לפני שתתחיל, וודא שסביבת העבודה שלך של catkin מותקנת כראוי ומקורה בה!
מתיקיית ה- src של מרחב העבודה של catkin שלך:
שיבוט git
שיבוט git
שיבוט git
שיבוט git
שיבוט git
שיבוט git
וואו, זה היה הרבה שיבוט.
עריכה מאוחרת יותר: כפי שציין אחד הקוראים שלי, צריך להגדיר את מאגר vision_opencv לענף מלודי. עבור תקליטור זה ל- src/vision_opencv ולבצע
git checkout מלודי
לאחר מכן חזור לתיקיית סביבת העבודה שלך ב- 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 ולבדוק אם הוא פולט את עומק ותמונות הצבע כראוי. אני משתמש ב- Raspberry Pi ללא ראש, ולכן אני צריך להריץ RVIZ במחשב השולחני שלי.
ב- Raspberry Pi do (שנה את כתובת ה- IP לכתובת ה- IP של ה- Raspberry Pi שלך!):
ייצא ROS_MASTER_URI = https://192.168.0.108: 11311
ייצוא ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = נכון
תראה את הפלט כמו בצילום מסך 1. "עצירת RGB והתקנת עומק של המכשיר." מציין כי Kinect מוכן, אך עדיין אין מנוי לנושאיו.
במחשב השולחני עם ROS Melodic מותקן בצע:
ייצא ROS_MASTER_URI = https://192.168.0.108: 11311
ייצא ROS_IP = [your-desktop-computer-ip] rviz
כעת אתה אמור להיות מסוגל לראות זרמי תמונות של RGB ו- עומק ב- RVIZ כמו בצילום מסך 2 למעלה … אך לא בעת ובעונה אחת.
אוקיי, כאן מתחילים דברים פרוצים. ביליתי 3 ימים בניסיונות של נהגים וגישות שונות ושום דבר לא עבד - ברגע שהייתי מנסה לגשת לשני זרמים במקביל הקינקט יתחיל להתזמן כפי שאתה יכול לראות בצילום 3. ניסיתי הכל: אספקת חשמל טובה יותר, התחייבות ישנה יותר של libfreenect ו freenect_stack, עצירת usb_autosuspend, הזרקת אקונומיקה ליציאות USB (בסדר, לא האחרון! אל תעשה את זה, זו בדיחה ולא אמורה להוות עצה טכנית:)). ואז באחד הנושאים של Github ראיתי חשבון של אדם שאמר שהקינקט שלהם אינו יציב, עד שהם "הטעינו את אוטובוס ה- USB" על ידי חיבור דונגל WiFi. ניסיתי את זה וזה עבד. מצד אחד, אני שמח שזה עבד. מצד שני, מישהו באמת צריך לתקן את זה. ובכן, בינתיים לאחר ש (בערך) תיקנו את זה, בואו נעבור לשלב הבא.
שלב 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
עכשיו בואו לשכפל את מאגר git החבילה העצמאית של rtab לתיקיית הבית שלנו ולבנות אותו. השתמשתי במהדורה האחרונה (0.18.0).
שיבוט git
cd rtabmap/build
cmake..
לעשות -j2
sudo עשה התקנה
sudo ldconfig rtabmap
כעת כאשר ריכזנו RTAB MAP עצמאי, אנו יכולים לעבור לשלב האחרון - הידור והתקנת עטיפת ROS עבור RTAB MAP, rtabmap_ros.
שלב 4: התקנת Rtabmap_ros
אם הגעת עד כדי כך, אתה בטח מכיר את התרגיל עד עכשיו:) שיבוט את מאגר rtabmap_ros לתיקיית ה- src של סביבת העבודה של catkin. (בצע את הפקודה הבאה ממך תיקיית src של סביבת העבודה של catkin!)
שיבוט git
נזדקק גם לחבילות ה- ROS האלה, ש- rtabmap_ros תלוי ב:
שיבוט git
שיבוט git
שיבוט git
שיבוט git
שיבוט git
לפני שתתחיל לאסוף אתה יכול לוודא שלא חסרות לך תלות עם הפקודה הבאה:
rosdep להתקין-מתוך נתיבים src --ignore-src
התקן תלות נוספת מ- ap-get (אלה לא יפריעו לקישור, אלא יגרמו לשגיאה במהלך האוסף)
sudo apt-get install libsdl-image1.2-dev
לאחר מכן, עברו לתיקיית סביבת העבודה של catkin והתחילו לאסוף:
תקליטור..
catkin_make -j2
מקווה שלא שמתם את משקה האוסף האהוב עליכם לשום מקום רחוק מדי. לאחר סיום האוסף אנו מוכנים לבצע את המיפוי!
שלב 5: הצג זמן
בצע את הטריק המטורף הזה עם הוספת משהו כמו WiFi או דונגל Bluetooth ליציאת USB - השתמשתי ב -2 יציאות USB 2.0, אחת עבור Kinect, השנייה עבור dongle WiFi.
ב- Raspberry Pi do (שנה את כתובת ה- IP לכתובת ה- IP של ה- Raspberry Pi שלך!): מסוף ראשון:
ייצא ROS_MASTER_URI = https://192.168.0.108: 11311
ייצוא ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = data_skip true: = 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-: = שקר
תראה את הפלט כמו בצילום מסך 1. "עצירת RGB והתקנת עומק של המכשיר." מציין כי Kinect מוכן, אך עדיין לא נרשם דבר לנושאיו. במסוף השני אתה אמור לראות הודעות על איכות odom. אם תזיז את Kinect מהר מדי, איכות ה- odom תעלה ל- 0 ותצטרך לעבור למיקום קודם או להתחיל ממסד נתונים נקי.
במחשב השולחני שלך עם חבילת ROS Melodic וחבילת rtab_map מותקנת (אני ממליץ לך להשתמש במחשב אובונטו לשם כך, שכן חבילות מובנות זמינות עבור ארכיטקטורת 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
הוסף אותי בלינקדאין אם יש לך שאלות והירשם לערוץ היוטיוב שלי כדי לקבל הודעה על פרויקטים מעניינים יותר הקשורים ללמידת מכונות ורובוטיקה.
מוּמלָץ:
צליל לוקליזציה של ראש בובה עם Kinect: 9 שלבים (עם תמונות)
צליל לוקליזציה של ראש בובה עם Kinect: הכירו את מרגרט, דמה בודקת למערכת ניטור עייפות של נהג. לאחרונה פרשה מתפקידיה ומצאה את דרכה לחלל המשרד שלנו, ומאז משכה את תשומת ליבם של אלה שחושבים שהיא 'מצמררת'. למען הצדק, אני
Nao Robot העתקת תנועות באמצעות מצלמת Kinect Xbox: 4 שלבים
Nao Robot העתקת תנועות באמצעות מצלמת Xbox Kinect: כפרויקט בשיעור מדעי המחשב שלנו בתיכון (פורטר גאוד), אני (לגרה וולפול) ותלמיד אחר (מרטין לאוטנשלגר) יצאנו להביא רובוט נאנו -אנושי לחקות את תנועותינו באמצעות מצלמה קינטית של Xbox. במשך חודשים אין מקצוען
כיצד להכין שלט ספייק באסטר או לוח מתג באמצעות Atmega328P עצמאי: 6 שלבים (עם תמונות)
כיצד להכין שלט ספייק באסטר או לוח מתגים באמצעות Atmega328P עצמאי: בפרויקט זה אראה כיצד לבנות שלט ספייק באסטר או לוח מתג באמצעות Atmega328P עצמאי. פרויקט זה בנוי על לוח PCB מותאם אישית עם מעט מאוד רכיבים. אם אתה מעדיף לצפות בסרטון אז הטמנתי אותו או
ביצוע שריטה של ספייק באסטר או כבל מאריך: 5 שלבים
הכנת שריטה של ספייק באסטר או כבל מאריך: בפוסט זה אראה לך כיצד להכין ספייק באסטר או כבל מאריך מאפס. ראשית תן לראות את רשימת החלקים
באסטר טלפון נייד: 10 שלבים
טלפון נייד באסטר: היכרות עם באסטר טלפונים ניידים טלפונים ניידים הפכו להיות יותר צורך ולא אביזר. הם כמו חברים שאתה לא יכול לעשות שום דבר בלעדיהם. הם תמיד יהיו שם בשבילך, גם כשאתה הולך לאיבוד! כמה מאיתנו מביטים & rsq