สารบัญ:
- ขั้นตอนที่ 1: อะไรใช้ได้ผลและไม่ได้ผล
- ขั้นตอนที่ 2: การติดตั้งไดรเวอร์ Freenect และ Freenect_stack
- ขั้นตอนที่ 3: การติดตั้ง RTAB MAP แบบสแตนด์อโลน
- ขั้นตอนที่ 4: การติดตั้ง Rtabmap_ros
- ขั้นตอนที่ 5: แสดงเวลา
- ขั้นตอนที่ 6: การอ้างอิง
วีดีโอ: RGB-D SLAM พร้อม Kinect บน Raspberry Pi 4 [Buster] ROS Melodic: 6 Steps
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ปีที่แล้วฉันเขียนบทความเกี่ยวกับการสร้างและติดตั้ง ROS Melodic บน Raspberry Pi ใหม่ (ในขณะนั้น) ด้วย Debian Buster OS บทความนี้ได้รับความสนใจอย่างมากทั้งใน 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 ไพเราะในขณะที่เขา 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 ให้ผลสำเร็จในท้ายที่สุด แต่มีปัญหาค่อนข้างน้อยที่ต้องแก้ไขและวิธีแก้ปัญหาค่อนข้างแฮ็กแม้ว่าจะทำงานได้เสถียรมาก (1 ชั่วโมง + การทำงานต่อเนื่อง)
ขั้นตอนที่ 2: การติดตั้งไดรเวอร์ Freenect และ Freenect_stack
ฉันจะถือว่าคุณใช้อิมเมจ ROS Melodic Desktop ของฉันจากบทความนี้ หากคุณต้องการทำการติดตั้งในสภาพแวดล้อมที่แตกต่างกัน เช่น ros_comm image หรือใน Ubuntu สำหรับ Raspberry Pi ตรวจสอบให้แน่ใจว่าคุณมีความรู้เพียงพอเกี่ยวกับ ROS เพื่อแก้ปัญหาที่อาจเกิดขึ้นจากความแตกต่างนั้น
เริ่มต้นด้วยการสร้างไดรเวอร์ libfreenect จากแหล่งที่มา เนื่องจากเวอร์ชันที่สร้างไว้ล่วงหน้าของที่เก็บ apt-get นั้นล้าสมัยเกินไป
sudo apt-get update
sudo apt-get ติดตั้ง libusb-1.0-0-dev
โคลน git
cd libfreenect
mkdir build && cd build
cmake -L..
ทำ
sudo ทำการติดตั้ง
หวังว่ากระบวนการสร้างจะราบรื่นและเต็มไปด้วยข้อความที่เป็นมิตรต่อสิ่งแวดล้อม หลังจากที่คุณติดตั้งไดรเวอร์ libfreenect แล้ว สิ่งที่ต้องทำต่อไปคือติดตั้งแพ็คเกจ freenect_stack สำหรับ ROS มีแพ็คเกจอื่น ๆ ค่อนข้างน้อยที่เราจะต้องโคลนและสร้างด้วย catkin_make ทั้งหมดเข้าด้วยกัน ก่อนที่คุณจะเริ่ม ตรวจสอบให้แน่ใจว่าพื้นที่ทำงาน catkin ของคุณได้รับการตั้งค่าและจัดหาอย่างถูกต้อง!
จากโฟลเดอร์ catkin workspace src ของคุณ:
โคลน git
โคลน git
โคลน git
โคลน git
โคลน git
โคลน git
โอ้โห โคลนนิ่งมาก
แก้ไขภายหลัง: ตามที่ผู้อ่านคนหนึ่งของฉันชี้ให้เห็น ที่เก็บ vision_opencv จำเป็นต้องตั้งค่าเป็นสาขาไพเราะ สำหรับ cd นั้นไปที่ src/vision_opencv และดำเนินการ
git ชำระเงินไพเราะ
จากนั้นกลับไปที่โฟลเดอร์พื้นที่ทำงาน catkin ของคุณ ในการตรวจสอบว่าเราพึ่งพาแพ็คเกจทั้งหมดหรือไม่ให้รันคำสั่งนี้:
การติดตั้ง rosdep --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 ทำ (เปลี่ยนที่อยู่ IP เป็นที่อยู่ IP ของ Raspberry Pi ของคุณ!):
ส่งออก ROS_MASTER_URI=https://192.168.0.108:11311
ส่งออก ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch ความลึก_registration:=true
คุณจะเห็นผลลัพธ์ดังในภาพหน้าจอ 1 "การหยุดอุปกรณ์ RGB และการล้างสตรีมความลึก" แสดงว่า Kinect พร้อมแล้ว แต่ยังไม่มีการสมัครรับข้อมูลในหัวข้อ
บนคอมพิวเตอร์เดสก์ท็อปที่ติดตั้ง ROS Melodic ให้ทำดังนี้
ส่งออก ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[your-desktop-computer-ip] rviz
ตอนนี้ คุณควรจะสามารถเห็นสตรีมภาพ RGB และความลึกใน RVIZ ได้เหมือนในภาพหน้าจอที่ 2 ด้านบน… แต่ไม่ใช่ในเวลาเดียวกัน
โอเค นี่คือจุดเริ่มต้นของการแฮ็ก ฉันใช้เวลา 3 วันในการลองใช้ไดรเวอร์และแนวทางต่างๆ และไม่มีอะไรทำงาน - ทันทีที่ฉันลองเข้าถึงสองสตรีมพร้อมกัน Kinect จะเริ่มหมดเวลาดังที่คุณเห็นในสกรีนช็อต 3 ฉันลองทุกอย่างแล้ว: แหล่งจ่ายไฟที่ดีขึ้น, การกระทำที่เก่ากว่าของ libfreenect และ freenect_stack, หยุด usb_autosuspend, ฉีดสารฟอกขาวลงในพอร์ต USB (โอเค ไม่ใช่อันสุดท้าย! อย่าทำ มันเป็นเรื่องตลกและไม่ควรถือเป็นคำแนะนำทางเทคนิค:)) จากนั้นในปัญหาหนึ่งของ Github ฉันเห็นบัญชีของบุคคลที่กล่าวว่า Kinect ของพวกเขาไม่เสถียร จนกว่าพวกเขาจะ "โหลดบัส USB" โดยเชื่อมต่อดองเกิล WiFi ฉันลองแล้วได้ผล ด้านหนึ่งฉันดีใจที่มันได้ผล ในทางกลับกัน ใครบางคนควรจะแก้ไขสิ่งนั้นจริงๆ ในขณะที่มี (ประเภท) แก้ไขปัญหานั้นแล้ว ไปที่ขั้นตอนต่อไป
ขั้นตอนที่ 3: การติดตั้ง RTAB MAP แบบสแตนด์อโลน
อันดับแรก เรามีการพึ่งพาจำนวนมากที่จะติดตั้ง:
แม้ว่าจะมีแพ็คเกจ armhf ที่สร้างไว้ล่วงหน้าสำหรับ PCL แต่เราจำเป็นต้องรวบรวมจากแหล่งที่มาเนื่องจากปัญหานี้ ปรึกษาที่เก็บ 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 แมปที่เก็บ git ของแพ็คเกจสแตนด์อโลนกับโฟลเดอร์หลักของเราและสร้างมันขึ้นมา ฉันใช้รุ่นล่าสุด (0.18.0)
โคลน git
cd rtabmap/build
ซีเมค..
ทำให้ -j2
sudo ทำการติดตั้ง
sudo ldconfig rtabmap
ตอนนี้เมื่อเราคอมไพล์ RTAB MAP แบบสแตนด์อโลนแล้ว เราสามารถย้ายไปยังขั้นตอนสุดท้าย - รวบรวมและติดตั้ง ROS wrapper สำหรับ RTAB MAP, rtabmap_ros
ขั้นตอนที่ 4: การติดตั้ง Rtabmap_ros
หากคุณมาไกลถึงขนาดนั้น คุณก็คงจะรู้จักสว่านแล้ว:) โคลนที่เก็บ rtabmap_ros ไปยังโฟลเดอร์ catkin workspace src ของคุณ (ดำเนินการคำสั่งถัดไปจากโฟลเดอร์ catkin workspace src ของคุณ!)
โคลน git
เราต้องการแพ็คเกจ ROS เหล่านี้เช่นกัน ซึ่ง rtabmap_ros ขึ้นอยู่กับ:
โคลน git
โคลน git
โคลน git
โคลน git
โคลน git
ก่อนที่คุณจะเริ่มการคอมไพล์ คุณสามารถตรวจสอบให้แน่ใจว่าคุณไม่มีการขึ้นต่อกันใดๆ ด้วยคำสั่งต่อไปนี้:
การติดตั้ง rosdep --from-paths src --ignore-src
ติดตั้งการพึ่งพาเพิ่มเติมจาก ap-get (สิ่งเหล่านี้จะไม่ขัดจังหวะการลิงก์ แต่จะเกิดข้อผิดพลาดระหว่างการรวบรวม)
sudo apt-get ติดตั้ง libsdl-image1.2-dev
จากนั้นย้ายไปยังโฟลเดอร์พื้นที่ทำงาน catkin ของคุณและเริ่มรวบรวม:
ซีดี..
catkin_make -j2
หวังว่าคุณจะไม่ได้ใส่เครื่องดื่มที่คุณโปรดปรานมากเกินไป หลังจากรวบรวมเสร็จแล้ว เราก็พร้อมที่จะทำแผนที่!
ขั้นตอนที่ 5: แสดงเวลา
ทำเคล็ดลับที่แฮ็กด้วยการเพิ่มบางอย่างเช่น WiFi หรือดองเกิล Bluetooth ลงในพอร์ต USB - ฉันใช้พอร์ต USB 2.0 2 พอร์ต พอร์ตหนึ่งสำหรับ Kinect และอีกพอร์ตหนึ่งสำหรับดองเกิล WiFi
บน Raspberry Pi ทำ (เปลี่ยนที่อยู่ IP เป็นที่อยู่ IP ของ Raspberry Pi ของคุณ!): 1 เทอร์มินัล:
ส่งออก ROS_MASTER_URI=https://192.168.0.108:11311
ส่งออก ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch ความลึก_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 --OdomrtF2M/MaxSize Decimation 1000 --Odomation":=เท็จ
คุณจะเห็นผลลัพธ์ดังในภาพหน้าจอ 1 "การหยุดอุปกรณ์ RGB และการล้างสตรีมความลึก" บ่งชี้ว่า Kinect พร้อมแล้ว แต่ยังไม่มีการสมัครรับข้อมูลหัวข้อในเทอร์มินัลที่สอง คุณควรเห็นข้อความเกี่ยวกับคุณภาพที่ไม่เหมาะสม หากคุณย้าย 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 เปิดตัวอย่างเป็นทางการเมื่อไม่กี่สัปดาห์ก่อน (ณ ตอนนี้
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: 3 ขั้นตอน
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: เป็นโปรเจ็กต์เครื่องรับย่านความถี่ทั้งหมด ใช้ห้องสมุด Arduino Si4734 ห้องสมุดนี้มีตัวอย่างมากกว่า 20 ตัวอย่าง คุณสามารถฟัง FM ด้วย RDS สถานี AM (MW) ในพื้นที่ SW และสถานีวิทยุสมัครเล่น (SSB) เอกสารทั้งหมดที่นี่
เริ่มต้นใช้งาน ROS Melodic บน Raspberry Pi 4 Model B: 7 ขั้นตอน
เริ่มต้นใช้งาน ROS Melodic บน Raspberry Pi 4 รุ่น B: ระบบปฏิบัติการหุ่นยนต์ (ROS) คือชุดของไลบรารีซอฟต์แวร์และเครื่องมือที่ใช้ในการสร้างระบบและแอปพลิเคชันหุ่นยนต์ ROS เวอร์ชันบริการระยะยาวในปัจจุบันคือ Melodic Morenia ROS Melodic เข้ากันได้กับ Ubuntu 18.04 Bionic Beaver เท่านั้น
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน
PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
การติดตั้ง 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 OS บน Raspberry pi 3 ของคุณ