Агуулгын хүснэгт:

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 алхам
Видео: Kinect RGBD SLAM 6D 2024, Арваннэгдүгээр
Anonim
Image
Image

Өнгөрсөн жил би ROS Melodic -ийг Debian Buster OS -тэй шинэ (тэр үед) Raspberry Pi дээр суурилуулж, суулгах тухай нийтлэл бичсэн. Энэ нийтлэлд Instructables болон бусад платформ дээр маш их анхаарал хандуулсан. Raspberry Pi дээр ROS -ийг амжилттай суулгахад маш олон хүнд тусалсандаа маш их баяртай байна. Дагалдах видеон дээр би мөн Kinect 360 -аас гүнзгийрүүлсэн зураг авахыг товч харуулав. Хожим нь олон хүмүүс надтай LinkedIn -ээр холбогдож, Kinect -ийг Raspberry Pi -тай хэрхэн ашиглаж чадсан тухай асуусан. Тухайн үед Kinect-ийг бэлдэх үйл явц надад 3-4 цаг зарцуулсан бөгөөд тийм ч төвөгтэй санагдаагүй тул би энэ асуултанд гайхсан юм. Би энэ асуудлын талаар асуусан бүх хүмүүстэй.bash_history файлуудаа хуваалцсан бөгөөд эцэст нь 4-р сард Kinect драйверуудыг хэрхэн суулгах, RTAB-MAP ROS ашиглан RGB-D SLAM-ийг хэрхэн хийх талаар нийтлэл бичих цагийг олсон. Нийтлэл бичиж эхэлснээс хойш нойргүй хоносон долоо хоногууд яагаад олон хүмүүс надаас ийм асуулт асуусныг би одоо ойлгож байна:)

Би ямар аргууд үр дүнтэй, аль нь үр дүнгээ өгөхгүй байгаа талаар товч тайлбараар эхэлье. Дараа нь би ROS Melodic-т ашиглах Kinect драйверуудыг хэрхэн суулгах, эцэст нь RTAB-MAP ROS ашиглан RGB-D SLAM-д зориулж машинаа хэрхэн тохируулах талаар тайлбарлах болно.

Алхам 1: Юу ажиллаж, юу нь болохгүй байна

Raspberry Pi дээр Kinect -ийн цөөн хэдэн драйвер байдаг бөгөөд тэдгээрийн хоёрыг нь ROS дэмждэг.

OpenNI драйверууд - ROS -д зориулсан openni_camera багц

libfreenect драйверууд - ROS -д зориулсан freenect_stack багц

Хэрэв та тэдгээрийн GitHub репозиторуудыг харвал OpenNI драйверыг хамгийн сүүлд хэдэн жилийн өмнө шинэчилсэн бөгөөд практик дээр удаан хугацааны турш EOL болохыг олж мэдэх боломжтой. Нөгөө талаар ibfreekinect -ийг цаг тухайд нь шинэчилж байна. Тэдний холбогдох ROS багцуудын нэгэн адил freenect_stack нь ROS уянгалаг байдлаар гарсан бөгөөд openni_camera -ийн хамгийн сүүлд өгсөн дэмжлэг бол Fuerte юм.

ROS Melodic -д зориулсан Raspberry Pi дээр OpenNI драйвер болон openni_camera багцыг хөрвүүлж суулгах боломжтой боловч энэ нь надад тохирохгүй байсан. Үүнийг хийхийн тулд энэхүү гарын авлагыг дагаж мөрдөхийн тулд 2, 3-р алхамуудын 1, 2, 3-р алхамуудыг "-mfloat-abi = softfp" тугийг Platform/Linux/Build/Common/Platform. ARM файлаас хасна уу (энэ талаархи зөвлөмжийн дагуу). Github -ийн асуудал). Дараа нь openni_camera багцыг catkin -ийн ажлын талбарт клон хийж, catkin_make ашиглан хөрвүүлээрэй. Энэ нь надад тус болоогүй боловч гүн үүсгэгчийг үүсгэхэд алдаа гарсан. Шалтгаан: USB интерфэйсийг дэмждэггүй!

Libfreenect болон freenect_stack -ийг ашигласнаар эцэст нь амжилтанд хүрсэн боловч шийдвэрлэх шаардлагатай цөөн хэдэн асуудал байсан бөгөөд маш тогтвортой ажиллаж байсан ч гэсэн шийдэл нь жаахан эвгүй байсан (1 цаг + үйл ажиллагаа үргэлжилсэн).

Алхам 2: Freenect Drivers болон Freenect_stack -ийг суулгах

Freenect драйверууд болон Freenect_stack -ийг суулгаж байна
Freenect драйверууд болон Freenect_stack -ийг суулгаж байна

Та энэ нийтлэлээс миний ROS уянгалаг ширээний зургийг ашиглаж байна гэж бодож байна. Хэрэв та өөр орчинд суулгахыг хүсч байвал, жишээ нь ros_comm зураг эсвэл Raspberry Pi -ийн Ubuntu дээр энэ ялгаанаас үүдэлтэй асуудлыг шийдэхийн тулд ROS -ийн талаар хангалттай мэдлэгтэй байгаа эсэхийг шалгаарай.

Apt-get репозиторийн урьдчилан бүтээсэн хувилбар хэт хуучирсан тул эх сурвалжаас libfreenect драйверуудыг үүсгэж эхэлье.

sudo apt-get update

sudo apt-get libusb-1.0-0-dev суулгах

git clone

cd libfreenect

mkdir build && cd build

смэйк -Л..

хийх

sudo make install

Бүтээн байгуулалтын үйл явц жигд бус, ногоон ээлтэй мессежээр дүүрэн байх болно гэж найдаж байна. Libfreenect драйверыг суулгасны дараа хийх ёстой зүйл бол ROS -д зориулсан freenect_stack багцыг суулгах явдал юм. Үүнээс хамаарах өөр хэд хэдэн багц байгаа тул бид тэдгээрийг клон хийж, catkin_make ашиглан бүтээх хэрэгтэй болно. Эхлэхээсээ өмнө catkin -ийн ажлын талбарыг зөв тохируулж, эх үүсвэртэй эсэхийг шалгаарай!

Таны catkin ажлын талбар src фолдероос:

git clone

git clone

git clone

git clone

git clone

git clone

Өө, энэ бол маш их хуулбарлах явдал байв.

Сүүлд засварлах: Миний уншигчдын нэгний онцолж хэлснээр, vision_opencv репозиторыг уянгалаг салбар болгон тохируулах шаардлагатай байна. Үүний тулд src/vision_opencv -ийг ажиллуулна уу

git checkout уянгалаг

Дараа нь 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 стекийг ажиллуулж, гүн, өнгөт зургийг зөв гаргаж байгаа эсэхийг шалгаж болно. Би Raspberry Pi -ийг толгойгүй хэрэглэдэг тул RVIZ -ийг ширээний компьютер дээрээ ажиллуулах хэрэгтэй.

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.unch гүнзгийрэх бүртгэл: = үнэн

Та дэлгэцийн зураг 1 дээрх шиг гаралтыг харах болно. "Төхөөрөмжийн RGB ба Гүн урсгалын урсгалыг зогсоох". нь Kinect бэлэн байгааг харуулж байгаа боловч түүний сэдвийг хараахан захиалаагүй байна.

ROS Melodic суулгасан ширээний компьютер дээрээ дараах зүйлийг хий.

экспортлох ROS_MASTER_URI = https://192.168.0.108: 11311

ROS_IP = [your-desktop-computer-ip] rviz экспортлох

Одоо та RVIZ дээрх RGB ба Гүнзгий зургийн урсгалыг дээрх Дэлгэцийн зураг 2 дээрх шиг харах боломжтой байх ёстой … гэхдээ нэгэн зэрэг биш.

За, энд хакердах зүйлс эхэлдэг. Би өөр өөр драйвер, арга барилыг туршиж үзсэн боловч юу ч болсонгүй - хоёр урсгал руу нэгэн зэрэг нэвтрэхийг оролдсон даруйдаа Kinect нь дэлгэцийн зураг 3 -аас харж болно. Би бүх зүйлийг туршиж үзсэн. freenect_stack, usb_autosuspend -ийг зогсоох, USB порт руу цайруулагч оруулах (зүгээр, сүүлчийнх биш! Үүнийг бүү хий, энэ бол хошигнол бөгөөд техникийн зөвлөгөө өгөх ёсгүй:)). Дараа нь Github -ийн нэг дугаарт WiFi донглёрыг холбож "USB автобусыг ачаалах" хүртэл Kinect -ээ тогтворгүй гэж хэлсэн хүний бүртгэлийг олж харлаа. Би үүнийг туршиж үзсэн бөгөөд энэ нь ажилласан. Энэ нь нэг талаар ажилласандаа баяртай байна. Нөгөө талаар хэн нэгэн үүнийг засах ёстой. Энэ хооронд үүнийг засч залруулсны дараа дараагийн алхам руугаа орцгооё.

Алхам 3: Бие даасан RTAB MAP суулгах

Бие даасан RTAB MAP суулгах
Бие даасан 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 map -ийн бие даасан багц git -ийн репозиторийг гэрийнхээ хавтас руу клон хийж, бүтээцгээе. Би хамгийн сүүлийн хувилбарыг (0.18.0) ашигласан.

git clone

cd rtabmap/build

смэйк..

хийх -j2

sudo make install

sudo ldconfig rtabmap

Одоо бид бие даасан RTAB MAP хөрвүүлсний дараа бид хамгийн сүүлийн алхам руу шилжиж болно - RTAB MAP, rtabmap_ros -д зориулсан ROS боодолыг эмхэтгэх, суулгах.

Алхам 4: Rtabmap_ros суулгах

Rtabmap_ros суулгаж байна
Rtabmap_ros суулгаж байна

Хэрэв та ийм хол явсан бол одоохондоо дасгал сургуулилтыг мэдэж байгаа байх.:) rtabmap_ros репозиторийг catkin ажлын талбайн src хавтсанд хуулна уу. (Catkin workspace src хавтаснаас дараагийн тушаалыг ажиллуулна уу!)

git clone

Бидэнд эдгээр ROS багцууд хэрэгтэй болно, rtabmap_ros нь дараахь зүйлээс хамаарна.

git clone

git clone

git clone

git clone

git clone

Эмхэтгэх ажлыг эхлүүлэхийн өмнө та дараах командын тусламжтайгаар ямар ч хамаарал байхгүй байгаа эсэхийг шалгаарай.

rosdep суулгах --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 донгл.

Raspberry Pi дээр (IP хаягийг Raspberry Pi -ийн IP хаягаар солино уу!): 1 -р терминал:

экспортлох ROS_MASTER_URI = https://192.168.0.108: 11311

экспортлох ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.unch гүнзгийрэх бүртгэл: = үнэн өгөгдөл_авах: = 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 --OdomF2M/MaxDizayn--: = худал

Та дэлгэцийн зураг 1 дээрх шиг гаралтыг харах болно. "Төхөөрөмжийн RGB ба Гүн урсгалын урсгалыг зогсоох". Энэ нь Kinect бэлэн болсон гэсэн үг боловч түүний сэдвийг хараахан захиалаагүй байгаа бөгөөд хоёрдахь терминалд та үнэрийн чанарын талаар мессеж харах ёстой. Хэрэв та Kinect -ийг хэт хурдан хөдөлгөвөл odom -ийн чанар 0 болж, өмнөх байршил руу шилжих эсвэл цэвэр мэдээллийн сангаас эхлэх шаардлагатай болно.

ROS Melodic болон rtab_map багц суулгасан өөрийн ширээний компьютер дээр (amd64 архитектурын хувьд урьдчилан суулгасан багцууд байдаг тул Ubuntu компьютер ашиглахыг танд зөвлөж байна).

экспортлох 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 сувагт бүртгүүлээрэй.

Зөвлөмж болгож буй: