Mundarija:

RGB-D SLAM Raspberry Pi 4 Kinect bilan [Buster] ROS melodik: 6 qadam
RGB-D SLAM Raspberry Pi 4 Kinect bilan [Buster] ROS melodik: 6 qadam

Video: RGB-D SLAM Raspberry Pi 4 Kinect bilan [Buster] ROS melodik: 6 qadam

Video: RGB-D SLAM Raspberry Pi 4 Kinect bilan [Buster] ROS melodik: 6 qadam
Video: RGB-D SLAM With Kinect on Raspberry Pi 4 ROS Melodic 2024, Noyabr
Anonim
Image
Image

O'tgan yili men Debian Buster OS bilan yangi (o'sha paytda) Raspberry Pi -da ROS Melodic -ni yaratish va o'rnatish haqida maqola yozdim. Maqola Instructables -da ham, boshqa platformalarda ham katta e'tiborga sazovor bo'ldi. Men juda ko'p odamlarga Raspberry Pi -da ROS -ni muvaffaqiyatli o'rnatishga yordam berganimdan juda xursandman. Qo'shimcha videoda men ham Kinect 360 -dan chuqur tasvirni olishni qisqacha namoyish qildim. Keyinchalik ko'p odamlar LinkedIn orqali men bilan bog'lanishdi va men Kinect -ni Raspberry Pi bilan qanday ishlatganimni so'rashdi. Men savolga hayron bo'ldim, chunki Kinectni tayyorlash jarayoni menga 3-4 soat davom etdi va unchalik murakkab ko'rinmadi. Men.bash_history fayllarimni muammo bilan qiziqqan barcha odamlar bilan baham ko'rdim va nihoyat Kinect drayverlarini o'rnatish va RTAB-MAP ROS bilan RGB-D SLAMni bajarish haqida maqola yozishga vaqt topdim. Maqolani yozishni boshlaganimdan keyin uyqusiz tunlar haftasi, nega ko'p odamlar menga bu savolni berishganini endi tushundim:)

Men qanday yondashuvlar ishlaganini va qaysi biri ishlamaganligini qisqacha tushuntirishdan boshlayman. Keyin men ROS Melodic-dan foydalanish uchun Kinect drayverlarini qanday o'rnatishni va nihoyat RTAB-MAP ROS bilan RGB-D SLAM uchun mashinangizni qanday o'rnatishni tushuntiraman.

1 -qadam: Nima ishladi va nima ishlamadi

Raspberry Pi -da Kinect uchun bir nechta haydovchilar mavjud - ulardan ikkitasi ROS tomonidan qo'llab -quvvatlanadi.

OpenNI drayverlari - ROS uchun openni_camera to'plami

libfreenect drayverlari - ROS uchun freenect_stack to'plami

Agar siz ularning tegishli GitHub omborlariga qarasangiz, OpenNI drayveri oxirgi marta yillar oldin yangilanganligini va amalda uzoq vaqt EOL ekanligini topishingiz mumkin. Boshqa tomondan, ibfreekinect o'z vaqtida yangilanmoqda. O'zlarining ROS paketlari uchun xuddi shunday, freenect_stack ROS melodikasi uchun chiqarildi, shu bilan birga openni_camera qo'llab -quvvatlagan oxirgi tarqatish - Fuerte …

ROS Melodic uchun Raspberry Pi -da OpenNI drayverini va openni_camera paketini kompilyatsiya qilish va o'rnatish mumkin, lekin bu men uchun ishlamagan. Buni amalga oshirish uchun ushbu qo'llanmani bajaring, 1, 2, 3-bosqichlar, 2 va 3-qadamlarda "-mfloat-abi = softfp" bayrog'ini Platform/Linux/Build/Common/Platform. ARM faylidan olib tashlang (bu boradagi tavsiyalar bo'yicha). Github muammosi). Keyin openni_camera paketini catkin ish joyingizga klonlang va catkin_make bilan kompilyatsiya qiling. Bu men uchun ishlamadi, lekin chuqurlik generatorini yaratishda xatolik yuz berdi. Sababi: USB interfeysi qo'llab -quvvatlanmaydi!

Libfreenect va freenect_stack -dan foydalanish oxir -oqibat muvaffaqiyat qozondi, lekin hal qilinishi kerak bo'lgan juda ko'p muammolar bor edi va hal etilishi biroz barqaror bo'lsa -da (1 soat + davomli ish).

2 -qadam: Freenect drayverlarini va Freenect_stack -ni o'rnatish

Freenect drayverlari va Freenect_stack -ni o'rnatish
Freenect drayverlari va Freenect_stack -ni o'rnatish

O'ylaymanki, siz ushbu maqoladagi ROS melodik ish stoli tasviridan foydalanasiz. Agar siz boshqa muhitda o'rnatishni xohlasangiz, masalan, ros_comm image yoki Raspberry Pi uchun Ubuntu -da, bu farqdan kelib chiqadigan muammolarni hal qilish uchun ROS haqida etarli ma'lumotga ega ekanligingizga ishonch hosil qiling.

Keling, libfreenect drayverlarini manbadan yaratishni boshlaylik, chunki apt-get omborining oldindan o'rnatilgan versiyasi juda eskirgan.

sudo apt-get yangilanishi

sudo apt-get libusb-1.0-0-dev o'rnatish

git klon

CD libfreenect

mkdir build && cd build

smake -L..

qilmoq

sudo make install

Umid qilamanki, qurilish jarayoni muammosiz va do'stona xabarlar bilan to'la bo'ladi. Libfreenect drayverini o'rnatganingizdan so'ng, keyingi ish - ROS uchun freenect_stack paketini o'rnatish. Bunga bog'liq bo'lgan bir nechta boshqa paketlar bor, biz ularni klonlashimiz va catkin_make bilan birgalikda tuzishimiz kerak bo'ladi. Ishni boshlashdan oldin, catkin ish maydoni to'g'ri sozlanganligiga va manbaga ega ekanligiga ishonch hosil qiling!

Catkin ish maydoni src papkasidan:

git klon

git klon

git klon

git klon

git klon

git klon

Voy, bu juda ko'p klonlash edi.

LATER EDIT: O'quvchilarimdan biri ta'kidlaganidek, vision_opencv omborini melodik bo'limga o'rnatish kerak. Buning uchun src/vision_opencv ni bajaring

git checkout melodik

Keyin catkin ish maydoni papkasiga qayting. Hamma paketlarga bog'liqligimizni tekshirish uchun ushbu buyruqni bajaring:

rosdep o'rnatish --from-paths src --ignore-src

Agar siz barcha kerakli paketlarni muvaffaqiyatli klonlagan bo'lsangiz, u libfreekinect-ni apt-get bilan yuklab olishni so'raydi. Yo'q, deb javob bering, chunki biz uni manbadan o'rnatganmiz.

sudo apt-get libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev ni o'rnating

mushuk_make -j2

Choy vaqti;) yoki sizning eng sevimli ichimlikingiz.

Kompilyatsiya jarayoni tugagandan so'ng, siz kinetik to'plamini ishga tushirishga urinib ko'rishingiz va uning chuqurlik va rangli tasvirlarni to'g'ri chiqarishini tekshirishingiz mumkin. Men Raspberry Pi -ni boshsiz ishlataman, shuning uchun RVIZ -ni ish stoli kompyuterimda ishlatishim kerak.

Raspberry Pi -da (IP -manzilni Raspberry Pi -ning IP -manziliga o'zgartiring!):

eksport qilish ROS_MASTER_URI = https://192.168.0.108: 11311

eksport qilish ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = rost

Siz ekran tasviridagi 1 kabi chiqishni ko'rasiz. "Qurilmani to'xtatish RGB va chuqurlik oqimi." Kinect tayyor ekanligini ko'rsatadi, lekin uning mavzulariga hali hech narsa yozilmagan.

ROS Melodic o'rnatilgan ish stoli kompyuteringizda quyidagilarni bajaring:

eksport qilish ROS_MASTER_URI = https://192.168.0.108: 11311

ROS_IP = [your-desktop-computer-ip] rviz-ni eksport qiling

Endi siz RVIZ -dagi RGB va Chuqurlikdagi tasvir oqimlarini yuqoridagi 2 -rasmda bo'lgani kabi ko'rishingiz kerak … lekin bir vaqtning o'zida emas.

Xo'sh, bu erda xakerlik ishlari boshlanadi. Men 3 kun davomida har xil haydovchilar va yondashuvlarni sinab ko'rdim, lekin hech narsa ishlamadi - men bir vaqtning o'zida ikkita oqimga kirishga harakat qilsam, Kinect ekranning 3 -rasmida ko'rinib turganidek, vaqtni uzaytira boshladi. Men hamma narsani sinab ko'rdim: elektr ta'minoti yaxshiroq, libfreenectning eski vazifalari va freenect_stack, usb_autosuspendni to'xtatish, USB portlariga oqartirish vositalarini yuborish (yaxshi, oxirgi emas! buni qilmang, bu hazil va texnik maslahat bo'lmasligi kerak:)). Keyin Github sonlaridan birida men o'z Wi -Fi dongle -ni ulab, "USB -avtobusni yuklamaguncha", Kinect beqaror ekanligini aytgan odamning hisobini ko'rdim. Men buni sinab ko'rdim va u ishladi. Bir tomondan, bu ishlaganidan xursandman. Boshqa tomondan, kimdir haqiqatan ham buni tuzatishi kerak. Xo'sh, shu vaqt ichida buni tuzatib, keyingi bosqichga o'tamiz.

3 -qadam: Mustaqil RTAB xaritasini o'rnatish

Mustaqil RTAB xaritasini o'rnatish
Mustaqil RTAB xaritasini o'rnatish

Birinchidan, biz o'rnatadigan ko'plab bog'liqliklar bor:

PCL uchun oldindan qurilgan armhf to'plami mavjud bo'lsa -da, bu muammo tufayli biz uni manbadan kompilyatsiya qilishimiz kerak bo'ladi. Uni manbadan qanday kompilyatsiya qilishni bilish uchun PCL GitHub omboriga murojaat qiling.

sudo apt-get libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni o'rnatish

sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev

Keling, rtab xaritasining mustaqil paketli git omborini o'z uy papkamizga klonlaymiz va uni tuzamiz. Men oxirgi versiyani ishlatdim (0.18.0).

git klon

cd rtabmap/build

smake..

qilish -j2

sudo make install

sudo ldconfig rtabmap

Endi biz mustaqil RTAB xaritasini tuzganimizda, biz oxirgi bosqichga o'tishimiz mumkin - RTAB MAP, Rtabmap_ros uchun ROS o'rashni yig'ish va o'rnatish.

4 -qadam: Rtabmap_ros -ni o'rnatish

Rtabmap_ros -ni o'rnatish
Rtabmap_ros -ni o'rnatish

Agar siz shuncha masofani bosib o'tgan bo'lsangiz, ehtimol siz hozircha matkapni bilasiz:) rtabmap_ros omborini catkin workpace src papkasiga klonlang. (Catkin workspace src papkasidan keyingi buyruqni bajaring!)

git klon

Bizga ham ROS paketlari kerak bo'ladi, bu rtabmap_ros quyidagilarga bog'liq.

git klon

git klon

git klon

git klon

git klon

Kompilyatsiyani boshlashdan oldin, siz quyidagi buyruq yordamida hech qanday bog'liqlik yo'qligiga ishonch hosil qilishingiz mumkin:

rosdep o'rnatish --from-paths src --ignore-src

Ap-get-dan ko'proq bog'liqliklarni o'rnating (bu ulanishni to'xtatmaydi, lekin kompilyatsiya paytida xato qiladi)

sudo apt-get libsdl-image1.2-dev ni o'rnating

Keyin catkin ish maydoni papkasiga o'ting va kompilyatsiya qilishni boshlang:

CD..

mushuk_make -j2

Umid qilamanki, siz o'zingiz yoqtirgan kompilyatsiya ichimlikini hech qaerga qo'ymadingiz. Kompilyatsiya tugagandan so'ng biz xaritalashga tayyormiz!

5 -qadam: Vaqtni ko'rsatish

Vaqtni ko'rsat
Vaqtni ko'rsat
Vaqtni ko'rsat
Vaqtni ko'rsat

USB portiga WiFi yoki Bluetooth dongle kabi narsalarni qo'shib, bu hiyla -nayrangni ishlating - men ikkita USB 2.0 portidan foydalanardim, biri Kinect uchun, ikkinchisi WiFi dongle uchun.

Raspberry Pi -da (IP -manzilni Raspberry Pi -ning IP -manziliga o'zgartiring!): 1 -terminal:

eksport qilish ROS_MASTER_URI = https://192.168.0.108: 11311

eksport qilish ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = true data_skip: = 2

2 -terminal:

rtablaun 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-MaxDizayn 1000-: = noto'g'ri

Siz ekran tasviridagi 1 kabi chiqishni ko'rasiz. "Qurilmani to'xtatish RGB va chuqurlik oqimi." Kinect tayyor ekanligini ko'rsatadi, lekin uning mavzulariga hali hech narsa yozilmagan. Ikkinchi terminalda siz odom sifati haqidagi xabarlarni ko'rishingiz kerak. Agar siz Kinect -ni juda tez harakatlantirsangiz, odom sifati 0 ga ko'tariladi va siz avvalgi joyga ko'chishingiz yoki toza ma'lumotlar bazasidan boshlashingiz kerak bo'ladi.

ROS Melodic va rtab_map to'plami o'rnatilgan ish stoli kompyuteringizda (buning uchun Ubuntu kompyuteridan foydalanishni tavsiya qilaman, chunki amd64 arxitekturasi uchun oldindan o'rnatilgan paketlar mavjud):

eksport qilish ROS_MASTER_URI = https://192.168.0.108: 11311

eksport qilish ROS_IP = [ish stoli-kompyuter-ip]

rviz

Rviz -ga MapGraph va MapCloud displeylarini qo'shing va rtab_map -dan keladigan mavzularni tanlang. Mana, g'alabaning shirin ta'mi! Davom eting va xaritani tuzing:)

6 -qadam: Adabiyotlar

Ushbu maqolani yozish paytida men maslahat bergan bir qator manbalar bor edi, asosan forumlar va GitHub muammolari. Men ularni shu erda qoldiraman.

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

Agar sizda savollar bo'lsa, meni LinkedIn -ga qo'shing va mening YouTube kanalimga obuna bo'ling, mashinasozlik va robototexnika bilan bog'liq qiziqarli loyihalar haqida xabardor bo'ling.

Tavsiya: