Ros raspberry pi zero

Страница

Пользователь

Please ask about problems and questions regarding this tutorial on answers.ros.org. Don’t forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Installing ROS Melodic on the Raspberry Pi

Description: This instruction covers the installation of ROS Melodic on the Raspberry Pi with Raspbian Buster. However as final repositories are available now, today it is faster and easier to use Ubuntu Mate 18.04 (Bionic, here) together with the standard ARM installation instructions here.

Keywords: RaspberryPi, Setup, Melodic, Buster

Tutorial Level: BEGINNER

Introduction

This tutorial explains how to install ROS Melodic from source on the Raspberry Pi. The instructions is based on the ROSberryPi Kinetic installation.

Note: If you’re using the Raspberry Pi 2 or 3 it is faster and easier to use the standard ARM installation instructions here.

Prerequisites

These instructions assume that Raspbian Buster is being used as the OS on the Raspberry Pi. The download page for current images of Raspbian is https://www.raspberrypi.org/downloads/.

Setup ROS Repositories

First install repository key:

Now, make sure your Debian package index is up-to-date:

Install Bootstrap Dependencies

Initializing rosdep

Installation

Now, we will download and build ROS Melodic.

Create a catkin Workspace

In order to build the core packages, you will need a catkin workspace. Create one now:

Next we will want to fetch the core packages so we can build them. We will use wstool for this. Select the wstool command for the particular variant you want to install:

ROS-Comm: (recommended) ROS package, build, and communication libraries. No GUI tools.

Desktop: ROS, rqt, rviz, and robot-generic libraries

This will add all of the catkin or wet packages in the given variant and then fetch the sources into the

/ros_catkin_ws/src directory. The command will take a few minutes to download all of the core ROS packages into the src folder. The -j8 option downloads 8 packages in parallel.

So far, only the ROS-Comm variant has been tested on the Raspberry Pi in Melodic; however, more are defined in REP 131 such as robot, perception, etc. Just change the package path to the one you want, e.g., for robot do:

Please feel free to update these instructions as you test more variants.

If wstool init fails or is interrupted, you can resume the download by running:

Resolve Dependencies

Before you can build your catkin workspace, you need to make sure that you have all the required dependencies. We use the rosdep tool for this.

Resolving Dependencies with rosdep

The dependencies should be resolved by running rosdep:

This will look at all of the packages in the src directory and find all of the dependencies they have. Then it will recursively install the dependencies.

The —from-paths option indicates we want to install the dependencies for an entire directory of packages, in this case src. The —ignore-src option indicates to rosdep that it shouldn’t try to install any ROS packages in the src folder from the package manager, we don’t need it to since we are building them ourselves. The —rosdistro option is required because we don’t have a ROS environment setup yet, so we have to indicate to rosdep what version of ROS we are building for. Finally, the -y option indicates to rosdep that we don’t want to be bothered by too many prompts from the package manager.

After a while rosdep will finish installing system dependencies and you can continue.

Building the catkin Workspace

Once you have completed downloading the packages and have resolved the dependencies, you are ready to build the catkin packages.

Note: This will install ROS in the equivalent file location to Ubuntu in /opt/ros/melodic however you can modify this as you wish.

With older raspberries it is recommended to increase the add swap space. Also recommended to decrease the compilation thread count with the -j1 or -j2 option instead of the default -j4 option:

Now ROS should be installed! Remember to source the new installation:

Or optionally source the setup.bash in the

/.bashrc, so that ROS environment variables are automatically added to your bash session every time a new shell is launched:

Maintaining a Source Checkout

Updating the Workspace

See the Ubuntu source install instructions for steps on updating the ros_catkin_ws workspace. The same steps should apply to the Raspberry Pi.

Adding Released Packages

You may add additional packages to the installed ros workspace that have been released into the ros ecosystem. First, a new rosinstall file must be created including the new packages (Note, this can also be done at the initial install). For example, if we have installed ros_comm, but want to add ros_control and joystick_drivers, the command would be:

You may keep listing as many ROS packages as you’d like separated by spaces.

Next, update the workspace with wstool:

After updating the workspace, you may want to run rosdep to install any new dependencies that are required:

Finally, now that the workspace is up to date and dependencies are satisfied, rebuild the workspace:

References

Wiki: ROSberryPi/Installing ROS Melodic on the Raspberry Pi (последним исправлял пользователь GaborCsorvasi 2020-04-19 09:47:27)

Источник

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

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

  1. Установка и настройка рабочего окружения
  2. Компьютерное зрение с RPi Camera Board
  3. Управление роботом с клавиатуры с помощью teleop
  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 Indigo

Небольшой совет: для более комфортной работы с ROS на Raspberry Pi лучше ипользовать microSD карту 16 Гб или больше. При использовании карты с 8 Гб у меня после установки ROS Comm, всех необходимых библиотек для компьютерного зрения и различных драйверов для внешних устройств на карте осталось меньше 1 Гб свободного места. На карте 16 Гб после установки аналогичных пакетов я имел 7 Гб свободного места. Рекомендую устанавливать версию ROS Comm, а потом при необходимости установить нужные пакеты для ROS (я покажу как это делается далее в статье).
Инструкции по установке ROS Indigo на Raspberry Pi доступны на сайте. Обратите внимание, что нужно выполнять команды, предначенные для вашей версии Rasbian (Jessie в моем случае).
При выполнении финальной компиляции ./src/catkin/bin/catkin_make_isolated может появится ошибка при компиляции компонента roscpp с подобным выводом:

Проблема заключается в нехватке swap раздела на SD карте. Необходим swap раздел размером 1 Гб. Установить нужный swap можно следующим образом. Сначала выделим место под swap:

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

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

Для автоматического включения swap на нашем разделе после ребута пропишем правило в /etc/fstab:

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

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

Установим все необходимые пакеты ROS, которые нам потребуются в дальнейшем для различных задач. Пакеты можно установить с помощью скрипта rosinstall. Установка займет несколько часов.
Нам будут нужны следующие пакеты:

  • cv_bridge используется для преобразования изображений OpenCV в формат ROS Image и наоборот
  • image_transport предназначен для подписки и публикации изображений в ROS, скрыто реализует сжатие изображений для их более быстрой транспортировки
  • joystick_drivers предоставляет аппаратную поддержку игровых контроллеров типа PS3 Dualshock
  • rqt_image_view — это графическая программа для визуализации RGB изображений, публикуемых в топик
  • rqt_graph используется для визуализации схемы вычислительного графа ROS (показывает все активные узлы и топики и связи между ними)
  • rqt_plot — это графическая утилита для визуализации значений, публикуемых в топик в виде графика
  • teleop_twist_keyboard предоставляет пользовательский интерфейс для управления роботом с помощью нажатия клавиш на клавиатуре

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

Настройка рабочего окружения для работы с Arduino

Разблокировка последовательных портов в Raspbian версии Jessie несколько отличается от описанной в предыдущей статье.
Дело в том, что файл /etc/inittab отсутствует в Raspbian Jessie. inittab был частью sysvinit, которая в версии Jessie была заменена на systemd. serial getty сейчас является обычным сервисом. Поэтому нам нужно будет отключить сервис serial getty:

Источник

Установка ROS на Raspberry Pi

Я уже писал ранее об установке rosserial_arduino для взаимодействия микроконтроллера Arduino с роботической платформой ROS в предыдущей статье. rosserial_arduino является пакетом стека rosserial, разработанного для платформы ROS, и “превращает” плату Arduino в самостоятельный узел ROS, с которым могут взаимодействовать другие компоненты системы. При использовании Arduino для робототехнических проектов существует одно существенное ограничение: Arduino не может быть использован как полноценный вычислительный узел, который может обрабатывать все операции, требуемые для нормального функционирования робота. Например, на нем нельзя запускать скрипты OpenCV для задач компьтерного зрения. В данной статье я хочу рассказать о своем опыте установки системы ROS и подключении Arduino к микрокомпьютеру Raspberry Pi с использованием уже знакомого пакета rosserial_arduino.

Мотивация

После знакомства с платформой rosserial_arduino, у меня возник вопрос: можно ли каким-то образом использовать Arduino в связке с более мощным микрокомпьютером таким образом, чтобы сделать робота более независимым от лаптопа.
Тут у меня возникла идея попробовать ROS на микрокомпьютере Raspberry Pi. Raspberry Pi является самостоятельным мини-компьютером на плате. У него есть CPU чип, графический чип, слот для SD-карты, вход Ethernet, несколько USB интерфейсов и HDMI видео-выход для подключения монитора. К USB-входам можно подключить мышь, клавиатуру, а также внешний HDD.
Связка Raspberry Pi с Arduino является очень перспективной и уже неоднократно использовалась в робототехнических проектах.
Raspberry Pi позволяет также подключить камеру (веб-камеру или специальную RPi Board camera). Мне в руки год назад попал простенький колесный робот на модифицированной плате Arduino Uno. Только сейчас у меня в руках оказался Raspberry Pi модели B.

Установка ОС на Raspberry Pi

Для начала нужно установить дистрибутив Linux на “малинку”. Проще всего это сделать с менеджером установки ОС NOOBS. Как это сделать можно прочитать в данном мануале на официальном портале Raspberry Pi.
Я выбрал для установки Raspbian — модифицированный дистрибутив Debian, специально разработанный для Raspberry.
Замечание: при подключении монитора часто возникают проблемы с отображением картинки, в частности это происходит со старыми мониторами, неимеющими вход HDMI. Здесь нам на помощь приходит файл config.txt — конфигурационный файл Raspberry для настроек монитора. В некоторых случаях он уже имеется в архиве образа системы (Raspbian), в случае NOOBS его нужно создать в корне SD карты.
Вставьте в файл следующие строки:

В данном случае важными строками являются:

В моем случае данные настройки позволили получить корректное изображение на мониторе с входом VGA.

Настройка удаленного доступа к Raspberry Pi

К плате Raspberry Pi можно подключиться по сети через SSH. Для этого Raspberry Pi должен быть подключен к сети либо посредством Ethernet кабеля (для этого есть специальный вход на плате), либо через Wi-Fi адаптер, подключаемый к USB порту. При подключении Ethernet кабеля Raspberry автоматически получает IP адрес в сети и сразу становится доступен.
В случае использования адаптера необходимо выполнить ряд несложных процедур.
Я использовал вот такой Wi-Fi адаптер TPLINK:

Подключаем адаптер в USB порт и проверяем, определяется ли устройство в системе командой

Теперь сканируем пространство для поиска доступных беспроводных сетей:

В поле ESSID в выводе команды указывается имя точки доступа.
Теперь соединимся с точкой доступа по WPA-шифрованию с помощью утилиты wpa_supplicant.
С помощью утилиты wpa_passphrase, которая входит в состав пакета wpa_supplicant, генерируем пароль на основе ключа доступа:

где hotspot_name и hotspot_access_key это соответственно имя точки доступа и ключ доступа.
Утилита выдает сгенерированную строку psk.
Далее весь блок network, содержащий ssid сети и строку psk, вставляем в конец конфигурационного файла /etc/wpa_supplicant/wpa_supplicant.conf и сохраняем. В завершение перезагружаем наш Raspberry Pi и проверяем подключение к сети.
Для подключения по SSH в терминале на компьютере нужно выполнить команду:

где — IP адрес малинки, который можно узнать командой ifconfig, выполненной непосредственно в терминале “малинки”.
Для подключения по SSH с возможностью запуска графических приложений используйте команду:

К “малинке” можно подключиться в режиме удаленного рабочего стола с помощью программы Virtual Network Computing (VNC). Управление осуществляется путем передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть. Система VNC является платформонезависимой.
Сначала установим на Raspberry Pi сервер VNC с помощью команды в терминале:

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

Эта команда запустит VNC-сервер. В данном случае это означает, что запущена виртуальная X-сессия (виртуальное представление рабочего стола Raspberry Pi). Теперь, после запуска клиента VNC и подключения к нему, вы будете подключены именно к этому виртуальному рабочему столу.
Параметр :1 определяет номер порта, на котором будет запущен процесс VNC. Параметр geometry настраивает разрешение (в данном случае — размер) виртуального рабочего стола. Параметр depth определяет глубину цвета отображения рабочего стола в битах (8, 16 и 24, по умолчанию — 16).
При первом запуске VNC-сервер попросит ввести пароль, который будет запрашиваться при подключении к удаленному рабочему столу.
Теперь установим VNC-клиент на стационарном компьютере:

Мы готовы подключиться к удаленному рабочему столу “малинки”:

и введите пароль.
Откроется окно с изображением рабочего стола подобным этому:

Стоит отметить, что каждый раз при перезагрузке “малинки” VNC-сервер нужно запускать заново.

Подключение Arduino к Raspberry Pi

Плату Arduino можно подключить к Raspberry Pi так же легко, как и к обычному компьютеру. Для начала установим Arduino IDE на Raspberry Pi:

Запускаем Arduino IDE командой:

Arduino IDE соединяется с Raspberry Pi через его USB кабель для программирования. Такое подключение требует, чтобы последовательная консоль (serial console) была отключена. По умолчанию Raspberry Pi конфигурирует последовательный порт (GPIO14-GPIO15) для обеспечения информации загрузки. Это также позволяет выполнить логин на Raspberry Pi через подключенное устройство. Для возможности программирования Arduino вам нужно отключить эту опцию по умолчанию.
Для отключения возможности авторизации нужно откредактировать системный файл inittab:

После этого сохраните и закройте файл.
При загрузке Raspberry Pi отправляет отладочные сообщения на последовательный порт. Это может быть полезно в некоторых случаях, но сейчас нам нужно отключить эту функциональность. Для этого отредактируем системный файл cmdline.txt:

и удалите блок параметров console, чтобы в итоге получить строку такого вида:

Сохраните и закройте файл.
Чтобы изменения были применены системой нужно перезапустить Raspberry Pi:

Теперь можно подключить плату Arduino к USB порту на Raspberry Pi, настроить Arduino IDE для вашей модели платы Arduino и загрузить на нее скетч.

Установка ROS и rosserial_arduino

Я выбрал для установки ROS Indigo. Инструкции по установке ROS Indigo детально описаны на официальной странице.
Я рекомендую установить вариант установки ROS-Comm. По своему опыту могу сказать, что установка варианта Desktop может занять очень долгое время порядка полудня.
После установки ROS и разрешении всех зависимостей с утилитой rosdep просто компилируем catkin_workspace:

Запуск скетчей rosserial_arduino на Raspberry Pi

Теперь у нас установлен rosserial_arduino и мы можем запустить его:

При запуске сервера rosserial возможно возникновение ошибки: no module named diagnostic_msgs.msg.
Чтобы решить проблему нужно скачать с официального репозитория ROS исходники сообщений ROS — common_msgs, которые отсутствуют в установке, и загрузить в папку пакета rosserial в папке workspace, затем скомпилировать ROS:

Замечание! При загрузке скетчей в Arduino IDE может возникнуть ошибка «fatal error: string: No such file or directory compilation terminated». Это означает, что у нас есть типы сообщений ROS в ros_lib, но они также должны быть скомпилированы в соответствующие типы для Arduino. Нужно скомпилировать их таким образом:

Сейчас вы можете работать с rosserial_arduino на Raspberry Pi так же, как на обычном компьютере: создавать узлы, подисываться на темы, публиковать в темы и тд.
К Raspberry Pi можно подключить камеру RPi Board camera и использовать ROS пакет cv_bridge (интерфейс ROS для взаимодействия с OpenCV, описание можно найти здесь) для выполнения задач компьютерного зрения.
Вот кстати мой робот в полном вооружении:

Заключение

Надеюсь, что эта статья станет для вас хорошим входным руководством к действию для начала работы с ROS на Raspberry Pi и у вас появятся собственные идеи использования Raspberry Pi в связке с Arduino или другими микроконтроллерами подобного типа. Желаю вам удачи в ваших экспериментах и проектах и надеюсь, что скоро поделюсь своими новыми идеями в следующих статьях!

PS: Некоторые инструкции взяты из книги Петин В. А. «Электроника. Микрокомпьютеры Raspberry Pi. Практическое руководство».

Источник

Adblock
detector