Оглавление:
- Шаг 1. Что сработало, а что нет
- Шаг 2: Установка драйверов Freenect и Freenect_stack
- Шаг 3. Установка автономной RTAB MAP
- Шаг 4: Установка Rtabmap_ros
- Шаг 5: Показать время
- Шаг 6: ссылки
Видео: RGB-D SLAM с Kinect на Raspberry Pi 4 [Buster] ROS Melodic: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
В прошлом году я написал статью о сборке и установке ROS Melodic на новом (на тот момент) Raspberry Pi с ОС Debian Buster. Статья привлекла много внимания как здесь, на 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, в то время как последний дистрибутив 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 или в Ubuntu для Raspberry Pi, убедитесь, что у вас достаточно знаний о ROS для решения проблем, которые могут возникнуть из-за этой разницы.
Начнем с сборки драйверов libfreenect из исходных текстов, поскольку предварительно созданная версия репозитория apt-get слишком устарела.
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && cd build
cmake -L..
делать
sudo make install
Будем надеяться, что процесс сборки будет проходить без особых событий и будет полон дружественных зеленых сообщений. Следующее, что нужно сделать после установки драйвера libfreenect, - установить пакет freenect_stack для ROS. Есть довольно много других пакетов, от которых это зависит, нам нужно будет их клонировать и собрать вместе с catkin_make. Перед тем, как начать, убедитесь, что ваше рабочее пространство с кошачьим мешком правильно настроено и получено!
Из папки src вашей рабочей области catkin:
git clone
git clone
git clone
git clone
git clone
git clone
Ооо, это было много клонирования.
ПОЗДНЕЕ РЕДАКТИРОВАНИЕ: как было указано одним из моих читателей, репозиторий vision_opencv должен быть настроен на мелодическую ветвь. Для этого cd перейдите в src / vision_opencv и выполните
git checkout мелодичный
Затем вернитесь в папку рабочего пространства catkin. Чтобы проверить, есть ли у нас зависимости для всех пакетов, выполните эту команду:
установка rosdep --from-paths src --ignore-src
Если вы успешно клонировали все необходимые пакеты, он запросит загрузку libfreekinect с помощью apt-get. Ответьте нет, так как мы уже установили его из исходников.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Время чая;) или любой другой ваш любимый напиток.
После завершения процесса компиляции вы можете попробовать запустить стек kinect и проверить, правильно ли он выводит изображение глубины и цвета. Я использую 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 depth_registration: = true
Вы увидите результат, как на снимке экрана 1. «Остановка устройства RGB и сброс потока глубины». указывает, что Kinect готов, но на его темы еще ничего не подписано.
На настольном компьютере с установленной ROS Melodic выполните:
экспорт ROS_MASTER_URI = https://192.168.0.108: 11311
экспорт ROS_IP = [ваш-рабочий-компьютер-ip] rviz
Теперь вы должны иметь возможность видеть потоки изображений RGB и Depth в RVIZ, как на снимке экрана 2 выше… но не одновременно.
Хорошо, вот где начинается взлом. Я потратил 3 дня, пробуя разные драйверы и подходы, и ничего не помогло - как только я попытался получить доступ к двум потокам одновременно, Kinect начинал тайм-аут, как вы можете видеть на снимке экрана 3. Я перепробовал все: лучший источник питания, более старые коммиты libfreenect и freenect_stack, остановка usb_autosuspend, закачка отбеливателя в порты USB (ладно, не последний! не делайте этого, это шутка и не должна составлять технический совет:)). Затем в одном из выпусков Github я увидел учетную запись человека, который сказал, что их Kinect работал нестабильно, пока они не «загрузили шину USB», подключив ключ Wi-Fi. Я попробовал, и это сработало. С одной стороны, я рад, что это сработало. С другой стороны, кто-то действительно должен это исправить. Ну, пока что (вроде) исправив это, давайте перейдем к следующему шагу.
Шаг 3. Установка автономной RTAB MAP
Сначала нам нужно установить кучу зависимостей:
Несмотря на то, что для PCL доступен предварительно собранный пакет armhf, из-за этой проблемы нам необходимо скомпилировать его из исходников. Проконсультируйтесь с репозиторием PCL GitHub, чтобы узнать, как его скомпилировать из исходного кода.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Теперь давайте клонируем репозиторий git автономного пакета rtab map в нашу домашнюю папку и создадим его. Я использовал последнюю версию (0.18.0).
git clone
cd rtabmap / build
cmake..
make -j2
sudo make install
sudo ldconfig rtabmap
Теперь, когда мы скомпилировали автономную RTAB MAP, мы можем перейти к последнему шагу - компиляции и установке оболочки ROS для RTAB MAP, rtabmap_ros.
Шаг 4: Установка Rtabmap_ros
Если вы зашли так далеко, вы, вероятно, уже знаете, как это делать:) Клонируйте репозиторий rtabmap_ros в папку src вашей рабочей области catkin. (Выполните следующую команду из папки src рабочей области catkin!)
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 install libsdl-image1.2-dev
Затем перейдите в папку рабочего пространства catkin и начните компилировать:
CD..
catkin_make -j2
Надеюсь, ты не засунул свой любимый сборник слишком далеко. После завершения компиляции мы готовы к отображению!
Шаг 5: Показать время
Проделайте этот хитрый трюк, добавив что-то вроде Wi-Fi или Bluetooth-ключа к USB-порту - я использовал 2 порта USB 2.0, один для 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 depth_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 --OdomF2M / MaxSize: = ложь
Вы увидите результат, как на снимке экрана 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, чтобы получать уведомления о более интересных проектах, связанных с машинным обучением и робототехникой.
Рекомендуемые:
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 был официально выпущен всего несколько недель назад (на данный момент
Установите ROS Kinetic, TurtleBot3, Raspicam на Raspberry Pi 4b: 5 шагов
Установите ROS Kinetic, TurtleBot3, Raspicam на Raspberry Pi 4b: TurtleBot3 Burger поставляется с Raspberry Pi 3 B / B + и не поддерживает новый (по состоянию на 9/2019) Raspberry Pi 4b. Выполните следующие шаги, чтобы TurtleBot3 работал на Raspberry Pi 4b, включая создание ROS Kinetic из источников на Raspberry Pi 4b Raspbian
Начало работы с ROS Melodic на Raspberry Pi 4, модель B: 7 шагов
Начало работы с ROS Melodic на Raspberry Pi 4 Модель B: операционная система роботов (ROS) - это набор программных библиотек и инструментов, используемых для создания роботизированных систем и приложений. Текущая версия ROS для долгосрочного обслуживания - Melodic Morenia. ROS Melodic совместим только с Ubuntu 18.04 Bionic Beaver
Установка 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 под названием Raspbian Buster. Это новая версия Raspbian для Малина Пи. Итак, сегодня в этой инструкции мы узнаем, как установить Raspbian Buster OS на Raspberry pi 3
Roomblock: платформа для изучения навигации ROS с помощью Roomba, Raspberry Pi и RPLIDAR: 9 шагов (с изображениями)
Roomblock: платформа для изучения навигации ROS с помощью Roomba, Raspberry Pi и RPLIDAR: что это? &Quot; Roomblock " представляет собой платформу робота, состоящую из Roomba, Raspberry Pi 2, лазерного датчика (RPLIDAR) и мобильного аккумулятора. Монтажный каркас может быть изготовлен на 3D-принтерах. Система навигации ROS позволяет составлять карту комнат и пользоваться i