Практическое Использование Ros На Raspberry Pi — Часть 1

Добрый день, уважаемые читатели Хабра! Начинаю серию статей о практическом использовании ROS на Raspberry Pi для проектов робототехники в связке с Arduino. Этот цикл имеет следующую структуру:

  1. Установка и настройка рабочей среды
  2. Компьютерное зрение с платой камеры RPi
  3. Управление роботом с клавиатуры с помощью телеопа
  4. Управление роботом с помощью игрового контроллера PS3 Dualshock.
Кому интересно, смотрите кат. В первой статье серии я расскажу об установке необходимых модулей ROS и настройке рабочей среды на Raspberry Pi для выполнения конкретных задач с помощью ROS. Поскольку в предыдущая статья Я подробно описал процедуру установки ROS и настройки среды для Raspberry Pi с установленной Raspbian-версией Wheezy. В этой статье я расскажу о подводных камнях при установке и настройке ROS на Raspbian-версии Jessie. Также обратите внимание, что в предыдущей статье я использовал для тестирования Raspberry Pi модели B, тогда как на момент написания этой статьи я проводил эксперименты на Raspberry Pi версии B+.

Основное отличие версий B+ от B — количество доступных USB-портов на плате (у модели B — два, у модели B+ — четыре) и поддержка карт microSD (в модели B+ слот для SD-карт заменен слотом для карт microSD).

Я рекомендую использовать модель B+, поскольку вам потребуются порты USB для подключения источника питания, платы Arduino и, возможно, также подключения клавиатуры и мыши (если вы будете запускать Raspberry Pi локально, а не через SSH по сети).



Установка РОС Индиго

Маленький совет: для более комфортной работы с ROS на Raspberry Pi лучше использовать карту microSD объемом 16 ГБ и больше.

Используя карту на 8 ГБ, после установки ROS Comm, всех необходимых библиотек для компьютерного зрения и различных драйверов для внешних устройств у меня на карте оставалось менее 1 ГБ свободного места.

На карте на 16 ГБ после установки подобных пакетов у меня было 7 ГБ свободного места.

Рекомендую установить версию ROS Comm, а затем, при необходимости, установить необходимые пакеты для ROS (как это делается, я покажу далее в статье).

Инструкции по установке ROS Indigo на Raspberry Pi доступны по адресу Веб-сайт .

Обратите внимание, что вам необходимо запускать команды, специфичные для вашей версии Rasbian (в моем случае — Джесси).

При выполнении окончательной компиляции .

/src/catkin/bin/catkin_make_isolated может возникнуть ошибка при компиляции компонента roscpp с аналогичным выводом:

  
  
  
  
  
  
   

CMakeFiles/Makefile2:308: recipe for target 'CMakeFiles/roscpp.dir/all' failed make[1]: *** [CMakeFiles/roscpp.dir/all] Error 2 Makefile:127: recipe for target 'all' failed

Проблема в том, что на SD-карте недостаточно раздела подкачки.

Требуется раздел подкачки размером 1 ГБ.

Установить нужный своп можно следующим образом.

Для начала выделим место под своп:

dd if=/dev/zero of=/swap bs=1M count=1024

Отформатируем новый раздел под swap:

mkswap /swap

Сообщим системе, что она может использовать новый раздел для подкачки:

swapon /swap

Чтобы автоматически включить подкачку на нашем разделе после перезагрузки, пропишем правило в /etc/fstab:

/swap none swap sw 0 0

После этого просто перезапустите процедуру установки.



Установка дополнительных пакетов ROS

Давайте установим все необходимые пакеты ROS, которые нам понадобятся в дальнейшем для различных задач.

Пакеты можно установить с помощью скрипта rosinstall. Установка займет несколько часов.

Нам понадобятся следующие пакеты:

  • cv_bridge используется для преобразования изображений OpenCV в формат изображений ROS и наоборот.
  • image_transport предназначен для подписки и публикации изображений в ROS; он скрыто реализует сжатие изображений для более быстрой транспортировки
  • joystick_drivers обеспечивает аппаратную поддержку игровых контроллеров, таких как PS3 Dualshock.
  • rqt_image_view — графическая программа для визуализации RGB-изображений, опубликованных в теме.

  • rqt_graph используется для визуализации диаграммы вычислительного графа ROS (показывает все активные узлы и темы, а также связи между ними)
  • rqt_plot — графическая утилита для визуализации опубликованных в теме значений в виде графика.

  • teleop_twist_keyboard предоставляет пользовательский интерфейс для управления роботом с помощью нажатий клавиш на клавиатуре.

Выполните следующие команды для установки всех пакетов:

$ rosinstall_generator ros_comm cv_bridge image_transport joystick_drivers rqt_image_view rqt_graph rqt_plot teleop_twist_keyboard --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-custom_ros.rosinstall $ wstool merge -t src indigo-custom_ros.rosinstall $ wstool update -t src $ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie $ sudo .

/src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo



Настройка рабочей среды для работы с Arduino

Разблокировка последовательных портов в Raspbian-версии Jessie немного отличается от описанной в разделе предыдущая статья .

Дело в том, что в Raspbian Jessie отсутствует файл /etc/inittab. inittab был частью sysvinit, который был заменен systemd в версии Jessie. серийный getty теперь является обычным сервисом.

Поэтому нам нужно будет отключить последовательный сервис getty:

$ sudo systemctl stop [email protected]

Процедура отключения ведения журнала отладки на последовательном порту остается неизменной, как и в Raspbian-версии Wheezy — файл /boot/cmdline.txt редактируется, как описано в разделе предыдущая статья .

Установка rosserial_arduino осуществляется по схеме из предыдущей статьи.

На этом установка основных модулей платформы ROS и настройка рабочей среды завершены.

Пришло время перейти к конкретным задачам.

Продолжение следует… Теги: #Raspberry Pi #Робототехника #raspberry #arduino #ros #robotics #rosserial

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.