Мазмұны:

RGB-D SLAM Kinect on Raspberry Pi 4 [Buster] ROS әуендік: 6 қадам
RGB-D SLAM Kinect on Raspberry Pi 4 [Buster] ROS әуендік: 6 қадам

Бейне: RGB-D SLAM Kinect on Raspberry Pi 4 [Buster] ROS әуендік: 6 қадам

Бейне: RGB-D SLAM Kinect on Raspberry Pi 4 [Buster] ROS әуендік: 6 қадам
Бейне: RGB-D SLAM With Kinect on Raspberry Pi 4 ROS Melodic 2024, Қараша
Anonim
Image
Image

Өткен жылы мен ROS Melodic -ті Debian Buster ОЖ -мен жаңа Raspberry Pi -ге құру және орнату туралы мақала жаздым. Мақала нұсқаулықтарда да, басқа платформаларда да үлкен назар аударды. Мен Raspberry Pi -ге ROS -ты сәтті орнатуға көптеген адамдарға көмектескеніме өте қуаныштымын. Ілеспе видеода мен Kinect 360 -тан тереңдіктің суретін алуды қысқаша көрсеттім. Кейінірек көптеген адамдар менімен LinkedIn -де байланысып, Kinect -ті Raspberry Pi -мен қалай қолданғанымды сұрады. Мен бұл сұраққа таң қалдым, себебі Kinect-ті дайындау процесі маған шамамен 3-4 сағатты алды және өте күрделі болып көрінбеді. Мен.bash_history файлдарымды барлық адамдармен сұрадым және сәуірде Kinect драйверлерін қалай орнату туралы және RTAB-MAP ROS көмегімен RGB-D SLAM орындау туралы мақала жазуға уақыт таптым. Мақаланы жазуды бастағаннан кейін ұйқысыз түндер апталығы, неге маған көптеген адамдар бұл сұрақты қойғанын түсінемін:)

Мен қысқаша түсіндіруден бастаймын, қандай әдістер жұмыс істеді және қайсысы болмады. Содан кейін мен ROS Melodic-те пайдалану үшін Kinect драйверлерін қалай орнату керектігін және соңында RTAB-MAP ROS көмегімен RGB-D SLAM құрылғысын қалай орнату керектігін түсіндіремін.

1 -қадам: не жұмыс істеді және не істемеді

Kinect үшін Raspberry Pi үшін бірнеше драйверлер бар - олардың екеуіне 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 пакетін құрастыруға және орнатуға болады, бірақ бұл мен үшін жұмыс істемеді. Мұны істеу үшін осы нұсқаулықты орындаңыз, 1, 2, 3 қадамдар, 2 және 3 қадамдарда Platform/Linux/Build/Common/Platform. ARM файлынан «-mfloat-abi = softfp» жалаушасын алып тастаңыз (осы бойынша кеңес бойынша) Github мәселесі). Содан кейін openni_camera бумасын catkin жұмыс кеңістігіне клондап, catkin_make көмегімен құрастырыңыз. Бұл мен үшін жұмыс істемеді, бірақ тереңдік генераторын құру қатесі сәтсіз болды. Себеп: USB интерфейсіне қолдау көрсетілмейді!

Libfreenect және freenect_stack пайдалану ақыр соңында табысқа жетті, бірақ шешуге болатын мәселелер өте көп болды және шешім өте тұрақты жұмыс істегенмен (сәл 1 сағат + жалғастырылған жұмыс) сәл қате болды.

2 -қадам: Freenect драйверлері мен Freenect_stack орнату

Freenect драйверлері мен Freenect_stack орнату
Freenect драйверлері мен Freenect_stack орнату

Сіз бұл мақалада менің ROS Melodic Desktop суретін қолданасыз деп ойлаймын. Егер сіз басқа ортада, мысалы ros_comm кескінінде немесе Ubuntu Raspberry Pi үшін орнатқыңыз келсе, осы айырмашылықтан туындауы мүмкін мәселелерді шешу үшін ROS туралы жеткілікті біліміңіз бар екеніне көз жеткізіңіз.

Libfreenect драйверлерін көзден құрудан бастайық, себебі apt-get репозиторийінің алдын ала жасалған нұсқасы тым ескірген.

sudo apt-get жаңартуы

sudo apt-get install 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 клоны

git клоны

git клоны

git клоны

git клоны

git клоны

Уа, бұл көп клондау болды.

КЕДІН ӨҢДЕУ: Менің оқырмандарымның бірі атап өткендей, vision_opencv репозиторийі әуезді тармаққа орнатылуы керек. Бұл cd үшін 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

Шай уақыты;) немесе сіздің сүйікті сусыныңыз.

Компиляция процесі аяқталғаннан кейін сіз кинект стегін іске қосып, оның тереңдігі мен түрлі -түсті суреттерді дұрыс шығаратынын тексере аласыз. Мен 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.launch тереңдік_тізілім: = ақиқат

Сіз шығуды Скриншот 1 -дегідей көресіз. «RGB құрылғысының жұмысын тоқтату және тереңдік ағыны.» Kinect дайын екенін көрсетеді, бірақ оның тақырыптарына әлі ештеңе жазылмаған.

Жұмыс үстелінде ROS Melodic орнатылған компьютерде:

экспорттау ROS_MASTER_URI = https://192.168.0.108: 11311

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

Енді сіз RVIZ -де RGB және тереңдіктегі сурет ағындарын жоғарыдағы 2 -скриншоттағыдай көре аласыз … бірақ бір уақытта емес.

Жарайды, бұл жерде хакерлік заттар басталады. Мен 3 күн бойы әр түрлі драйверлер мен тәсілдерді сынап көрдім, бірақ ештеңе нәтиже бермеді - мен бір мезгілде екі ағынға қол жеткізуге тырысқанымда, Kinect 3 -ші скриншотта көрсетілгендей уақытты бастайды. Мен бәрін сынап көрдім: жақсы қуат көзі, libfreenect -тің ескі міндеттері freenect_stack, usb_autosuspend тоқтату, USB порттарына ағартқыш енгізу (жақсы, соңғы емес! мұны жасамаңыз, бұл әзіл және техникалық кеңес болмауы керек:)). Содан кейін Github басылымдарының бірінде мен Kinect тұрақсыз деп айтқан адамның есебін көрдім, олар WiFi кілтін қосу арқылы «USB шинасын жүктегенше». Мен мұны көрдім және ол жұмыс істеді. Бір жағынан, бұл жұмыс істегеніне қуаныштымын. Екінші жағынан, біреу оны түзетуі керек. Сонымен, оны түзете отырып, келесі қадамға өтейік.

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 install libopencv-dev cmake libopenni2-dev libsqlite3-dev

Енді rtab картасының оқшауланған пакеттік git репозиторийін үй қалтасына клондап, оны құрайық. Мен соңғы шығарылымды қолдандым (0.18.0).

git клоны

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 клоны

Бізге ROS пакеттері де қажет болады, бұл rtabmap_ros байланысты:

git клоны

git клоны

git клоны

git клоны

git клоны

Компиляцияны бастамас бұрын, келесі пәрменмен тәуелділіктің жоқтығына көз жеткізуге болады:

rosdep орнату --from-paths src --ignore-src

Ap-get-тен қосымша тәуелділіктерді орнатыңыз (бұл байланыстыруды үзбейді, бірақ компиляция кезінде қате жібереді)

sudo apt-get libsdl-image1.2-dev орнатыңыз

Содан кейін catkin жұмыс кеңістігінің қалтасына өтіп, компиляцияны бастаңыз:

CD..

catkin_make -j2

Сіз сүйікті компиляция сусынын тым алыс қоймадыңыз деп үміттенемін. Компиляция аяқталғаннан кейін біз картаны жасауға дайынбыз!

5 -қадам: Уақытты көрсету

Көрсетілім уақыты
Көрсетілім уақыты
Көрсетілім уақыты
Көрсетілім уақыты

USB портына WiFi немесе Bluetooth кілті сияқты нәрсені қосу арқылы осылай жасаңыз - мен 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.launch deep_registration: = true data_skip: = 2

Екінші терминал:

rtabbap 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 дайын екенін көрсетеді, бірақ оның тақырыптарына әлі ештеңе жазылмаған. Екінші терминалда сіз odom сапасы туралы хабарламаларды көресіз. Егер сіз Kinect -ті тым жылдам жылжытсаңыз, odom сапасы 0 болады және сізге алдыңғы орынға көшу немесе таза дерекқордан бастау қажет болады.

ROS Melodic және rtab_map бумасы орнатылған жұмыс үстелі компьютерінде (бұл үшін Ubuntu компьютерін қолдануды ұсынамын, себебі amd64 архитектурасы үшін алдын ала орнатылған пакеттер бар):

экспорттау ROS_MASTER_URI = https://192.168.0.108: 11311

экспорттау ROS_IP = [жұмыс үстелі-компьютер-ip]

rviz

Rviz -ге MapGraph және MapCloud дисплейлерін қосыңыз және 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 каналыма жазылыңыз, машиналық оқыту мен робототехникаға қатысты қызықты жобалар туралы хабардар болыңыз.

Ұсынылған: