Სარჩევი:

RGB-D SLAM ერთად Kinect Raspberry Pi 4 [Buster] ROS მელოდიური: 6 ნაბიჯი
RGB-D SLAM ერთად Kinect Raspberry Pi 4 [Buster] ROS მელოდიური: 6 ნაბიჯი

ვიდეო: RGB-D SLAM ერთად Kinect Raspberry Pi 4 [Buster] ROS მელოდიური: 6 ნაბიჯი

ვიდეო: RGB-D SLAM ერთად Kinect Raspberry Pi 4 [Buster] ROS მელოდიური: 6 ნაბიჯი
ვიდეო: KudanSLAM: RGB-D SLAM 2024, ივლისი
Anonim
Image
Image

შარშან დავწერე სტატია ROS Melodic– ის მშენებლობისა და დაყენების შესახებ ახალ (იმ დროს) Raspberry Pi– ზე Debian Buster OS– ით. სტატიას დიდი ყურადღება დაეთმო როგორც აქ ინსტრუქციებზე, ასევე სხვა პლატფორმებზე. ძალიან მიხარია, რომ ამდენ ადამიანს დავეხმარე Raspberry Pi– ზე ROS– ის წარმატებით დაყენებაში. თანმხლებ ვიდეოში მე ასევე მოკლედ ვაჩვენე Kinect 360– დან სიღრმის სურათის მიღება. მოგვიანებით მრავალმა ადამიანმა დამიკავშირდა LinkedIn– ში და მკითხა, როგორ მოვახერხე Kinect– ის გამოყენება ჟოლოს პითან ერთად. მე გამიკვირდა კითხვაზე, რადგან იმ დროს 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 მელოდიისათვის, ხოლო მან ბოლო დისტროსულ openni_camera– მ ჩამოთვალა მხარდაჭერა Fuerte…

შესაძლებელია შევადგინო და დავაინსტალირო OpenNI დრაივერი და openni_camera პაკეტი Raspberry Pi– ზე ROS Melodic– ისთვის, თუმცა ეს არ გამომივიდა. ამის გასაკეთებლად მიჰყევით ამ სახელმძღვანელოს, ნაბიჯები 1, 2, 3, მე –2 და მე –3 საფეხურებზე ამოიღეთ "-mfloat-abi = softfp" დროშა პლატფორმიდან/Linux/Build/Common/Platform. ARM ფაილიდან (ამის შესახებ რჩევისთვის გიტუბის საკითხი). შემდეგ კლონირება openni_camera პაკეტი თქვენს catkin სამუშაო სივრცეში და compile ერთად catkin_make. ჩემთვის ეს არ მუშაობდა, შეცდომა იყო სიღრმის გენერატორის შექმნისას. მიზეზი: USB ინტერფეისი არ არის მხარდაჭერილი!

Libfreenect- ისა და freenect_stack- ის გამოყენებამ საბოლოოდ მიაღწია წარმატებას, მაგრამ საკმაოდ ბევრი პრობლემა იყო მოსაგვარებელი და გამოსავალი იყო ცოტა გარყვნილი, თუმცა ძალიან სტაბილურად მუშაობდა (1 საათი + ოპერაციის გაგრძელება).

ნაბიჯი 2: Freenect დრაივერების და Freenect_stack- ის დაყენება

Freenect დრაივერების და Freenect_stack- ის დაყენება
Freenect დრაივერების და Freenect_stack- ის დაყენება

მე ვივარაუდებ, რომ თქვენ იყენებთ ჩემს ROS მელოდიური დესკტოპის სურათს ამ სტატიიდან. თუ გსურთ გააკეთოთ ინსტალაცია სხვადასხვა გარემოში, მაგალითად ros_comm image ან Ubuntu Raspberry Pi– სთვის, დარწმუნდით, რომ გაქვთ საკმარისი ცოდნა ROS– ის შესახებ იმ პრობლემების გადასაჭრელად, რომლებიც შეიძლება წარმოიშვას ამ განსხვავებიდან.

დავიწყოთ libfreenect დრაივერების შექმნით წყაროდან, ვინაიდან apt-get საცავის წინასწარი ვერსია ძალიან მოძველებულია.

sudo apt-get განახლება

sudo apt-get დააინსტალირეთ libusb-1.0-0-dev

git კლონი

cd libfreenect

mkdir build && cd build

სმკაიკი -ლ..

გააკეთოს

sudo make install

ვიმედოვნებთ, რომ მშენებლობის პროცესი იქნება უშედეგო და სავსე მწვანე მეგობრული შეტყობინებებით. Libfreenect დრაივერის დაყენების შემდეგ, შემდეგი ნაბიჯი არის ROS– ის freenect_stack პაკეტის დაყენება. საკმაოდ ბევრი სხვა პაკეტია მასზე დამოკიდებული, ჩვენ მოგვიწევს მათი კლონირება და ავაშენოთ ერთად catkin_make. სანამ დაიწყებთ, დარწმუნდით, რომ თქვენი სამუშაო ადგილის სამუშაო ადგილი სწორად არის შექმნილი და წყაროს!

თქვენი catkin workspace src საქაღალდედან:

git კლონი

git კლონი

git კლონი

git კლონი

git კლონი

git კლონი

უი, ეს იყო ბევრი კლონირება.

გვიან რედაქტირება: როგორც ერთ -ერთმა მკითხველმა აღნიშნა, vision_opencv საცავი მელოდიურ ფილიალში უნდა იყოს მითითებული. იმ cd– სთვის src/vision_opencv და შესრულება

git checkout მელოდიური

შემდეგ დაუბრუნდით თქვენს catkin სამუშაო სივრცის საქაღალდეს. იმის შესამოწმებლად, ვართ თუ არა დამოკიდებულნი ყველა პაკეტზე, შეასრულეთ ეს ბრძანება:

rosdep install-from-paths src --ignore-src

თუ თქვენ წარმატებით მოახდინეთ ყველა საჭირო პაკეტის კლონირება, ის მოგთხოვთ ჩამოტვირთოთ libfreekinect apt-get– ით. უპასუხეთ არა, რადგან ჩვენ უკვე დავაყენეთ ის წყაროდან.

sudo apt-get დააინსტალირეთ libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev

catkin_make -j2

ჩაის დრო;) ან როგორიც არის თქვენი საყვარელი სასმელი.

შედგენის პროცესის დასრულების შემდეგ შეგიძლიათ სცადოთ kinect stack- ის გაშვება და შეამოწმოთ სწორად გამოდის თუ არა სიღრმისეული და ფერადი სურათები. მე ვიყენებ Raspberry Pi– ს უთავო, ამიტომ მჭირდება RVIZ– ის გაშვება ჩემს დესკტოპის კომპიუტერზე.

Raspberry Pi do (შეცვალეთ IP მისამართი თქვენი Raspberry Pi– ის IP მისამართად!):

ექსპორტი ROS_MASTER_URI = https://192.168.0.108: 11311

ექსპორტი ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect. გაშვების სიღრმე_რეგისტრაცია: = მართალია

თქვენ იხილავთ გამომავალს, როგორც ეკრანის სურათზე 1. "მოწყობილობის RGB და სიღრმის ნაკადის გამორეცხვა." მიუთითებს, რომ 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 დონლის შეერთებით. ეს ვცადე და იმუშავა. ერთის მხრივ, მოხარული ვარ, რომ მან იმუშავა. მეორეს მხრივ, ვიღაცამ ნამდვილად უნდა გაასწოროს ის. კარგად, ამასობაში (სახის) დაფიქსირებისას, მოდით გადავიდეთ შემდეგ საფეხურზე.

ნაბიჯი 3: დამოუკიდებელი RTAB MAP- ის დაყენება

ინსტალაცია Standalone RTAB MAP
ინსტალაცია Standalone RTAB MAP

პირველ რიგში, ჩვენ გვაქვს რამოდენიმე დამოკიდებულება ინსტალაციისთვის:

მიუხედავად იმისა, რომ არსებობს PCL- ისთვის ხელმისაწვდომი armhf პაკეტი, ჩვენ ამ პრობლემის გამო დაგვჭირდება მისი შედგენა წყაროდან. გაიარეთ კონსულტაცია PCL GitHub საცავთან, რომ ნახოთ როგორ შეადგინოთ იგი წყაროდან.

sudo apt-get დააინსტალირეთ libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni

sudo apt-get დააინსტალირეთ libopencv-dev cmake libopenni2-dev libsqlite3-dev

ახლა მოდით კლონირება rtab რუკა standalone პაკეტი git საცავი ჩვენს სახლში საქაღალდეში და ავაშენოთ იგი. მე გამოვიყენე უახლესი გამოშვება (0.18.0).

git კლონი

cd rtabmap/build

სმეკა..

გააკეთე -j2

sudo make install

sudo ldconfig rtabmap

ახლა, როდესაც ჩვენ შევადგინეთ დამოუკიდებელი RTAB MAP, ჩვენ შეგვიძლია გადავიდეთ ბოლო ეტაპზე - RTA შეფუთვის შედგენა და ინსტალაცია RTAB MAP– ისთვის, rtabmap_ros.

ნაბიჯი 4: Rtabmap_ros- ის დაყენება

Rtabmap_ros– ის ინსტალაცია
Rtabmap_ros– ის ინსტალაცია

თუ ასე შორს მიდიხართ, ალბათ უკვე იცით სავარჯიშო:) კლონირება rtabmap_ros საცავი თქვენი catkin workspace src საქაღალდეში. (შეასრულეთ შემდეგი ბრძანება თქვენგან catkin workspace src საქაღალდედან!)

git კლონი

ჩვენ ასევე დაგვჭირდება ეს ROS პაკეტები, რომ rtabmap_ros დამოკიდებულია:

git კლონი

git კლონი

git კლონი

git კლონი

git კლონი

სანამ შედგენას დაიწყებთ, შეგიძლიათ დარწმუნდეთ, რომ არ აკლია რაიმე დამოკიდებულება შემდეგი ბრძანებით:

rosdep install-from-paths src --ignore-src

დააინსტალირეთ მეტი დამოკიდებულება ap-get– დან (ეს არ შეწყვეტს კავშირს, მაგრამ შეცდომა დაუშვებს შედგენის დროს)

sudo apt-get დააინსტალირეთ libsdl-image1.2-dev

შემდეგ გადადით თქვენი catkin სამუშაო სივრცის საქაღალდეში და დაიწყეთ შედგენა:

cd..

catkin_make -j2

ვიმედოვნებ, რომ თქვენი საყვარელი კომპოზიციური სასმელი არსად არ დაგიყენებიათ. მას შემდეგ, რაც შედგენა დასრულდება ჩვენ მზად ვართ გავაკეთოთ რუკების!

ნაბიჯი 5: აჩვენე დრო

Შოუს დრო
Შოუს დრო
Შოუს დრო
Შოუს დრო

გააკეთეთ ეს უაზრო ხრიკი USB პორტში WiFi- ის ან Bluetooth dongle- ის დამატებით - მე ვიყენებდი 2 USB 2.0 პორტს, ერთი Kinect– ისთვის, მეორე WiFi dongle– სთვის.

Raspberry Pi– ს შესახებ (შეცვალეთ IP მისამართი თქვენი Raspberry Pi– ის IP მისამართად!): პირველი ტერმინალი:

ექსპორტი 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

მე -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-ODrtF2M/MaxSimage" 1000: = ყალბი

თქვენ იხილავთ გამომავალს, როგორც ეკრანის სურათზე 1. "მოწყობილობის RGB და სიღრმის ნაკადის გამორეცხვა." მიუთითებს, რომ Kinect მზადაა, მაგრამ ჯერ არაფერია გამოწერილი მის თემებზე. მეორე ტერმინალში თქვენ უნდა ნახოთ შეტყობინებები odom ხარისხის შესახებ. თუ Kinect– ს ძალიან სწრაფად გადააადგილებთ, odom– ის ხარისხი 0 – მდე გაიზრდება და თქვენ დაგჭირდებათ წინა ადგილას გადასვლა ან სუფთა მონაცემთა ბაზიდან დაწყება.

თქვენს დესკტოპის კომპიუტერზე დაინსტალირებული ROS Melodic და rtab_map პაკეტით (გირჩევთ გამოიყენოთ Ubuntu კომპიუტერი, რადგან წინასწარ აშენებული პაკეტები ხელმისაწვდომია amd64 არქიტექტურისთვის) გააკეთეთ:

ექსპორტი ROS_MASTER_URI = https://192.168.0.108: 11311

ექსპორტი ROS_IP = [თქვენი-სამუშაო მაგიდა-კომპიუტერი-ip]

რვიზი

დაამატეთ 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 არხი, რათა მიიღოთ ინფორმირება უფრო საინტერესო პროექტების შესახებ, რომელიც მოიცავს მანქანათმცოდნეობას და რობოტიკას.

გირჩევთ: