Использование пакета rosserial_arduino позволяет использовать ROS совместно с Arduino IDE. rosserial использует протокол передачи данных, который работает через UART (универсальный асинхронный приемопередатчик) Arduino. Это позволяет Arduino быть полноправным узлом ROS, который может публиковать и подписываться на сообщения ROS, публиковать TF (пространственные) преобразования и получать системное время ROS.
Связывание ROS с Arduino реализуется посредством использования библиотеки Arduino. Как и другие Arduino-библиотеки, для того, чтобы использовать ros_lib, ее необходимо поместить в папку, в которой находятся библиотеки Arduino. Про то, как устанавливать библиотеки Arduino я подробно описывал в статье, посвященной Motor Shield.
Для того, чтобы использовать библиотеки rosserial в своем коде, прежде всего, их необходимо подключить:
Сделать это нужно перед включением любых других заголовочных файлов, например
В противном случае, Arduino IDE не сможет найти библиотеки.
Установка необходимого ПО
Так как я установил ROS на Linux Ubuntu, то и Arduino IDE у меня для экспериментов также установлена под Linux. Если вам не нравится стандартная цветовая схема, то можно изменить внешний вид Arduino IDE.
Можно установить ros_lib, используя установочный файл deb или же собрать эту библиотеку из исходников. Рассмотрим оба эти варианта.
Установка исполняемых файлов на рабочую станцию ROS
Для установки ros_lib для ROS Indigo Igloo, выполняем
$ sudo apt-get install ros-indigo-rosserial-arduino $ sudo apt-get install ros-indigo-rosserial
Если вы используете какую-либо другую версию ROS, например Hydro, то просто замените indigo на hydro в вышеупомянутых командах.
Установка из исходников на рабочую станцию ROS
Инструкции по сборке из исходников несколько отличаются для различных версий ROS, поэтому ниже приведены два варианта установки. Первый, основанный на catkin — для версий ROS Groovy и более свежих и второй для более ранних релизов, использующий rosbuild.
1. Для ROS Groovy и более свежих версий
Вместо того, чтобы запускать генератор библиотеки для каждого пакета, который вы хотели бы использовать, вы запускаете его один раз и генерируете библиотеки для всех установленных сообщений. В инструкциях ниже, <ws> обозначает ваше рабочее пространство catkin
$ cd <ws>/src $ git clone https://github.com/ros-drivers/rosserial.git $ cd <ws> $ catkin_make $ catkin_make install $ source <ws>/install/setup.bash
Эти команды клонируют rosserial из репозитория GitHub, генерируют rosserial_msgs, необходимые для обмена данными, и создают библиотеку ros_lib в <ws>/каталог установки.
2. Для более ранних версий ROS
Если вы используете ROS Fuerte или же более ранние версии, выполните
$ hg clone https://kforge.ros.org/rosserial/hg rosserial $ rosmake rosserial_arduino
Эти команды клонируют rosserial из репозитория kforge, используя mercurial, генерируют rosserial_msgs, необходимые для обмена данными, и создают библиотеку ros_lib.
Установка ros_lib в рабочее окружение Arduino
На предыдущих этапах была создана библиотека ros_lib, которую необходимо скопировать в рабочее окружение Arduino, чтобы скетчи Arduino смогли взаимодействовать с ROS.
Ниже, <sketchbook> — это папка, в которой хранятся ваши скетчи в Linux. Обычно, это папка sketchbook в вашей домашней папке, которая автоматически создается при установке Arduino IDE.
Копируем папку rosserial_arduino/libraries в папку sketchbook:
$ roscd rosserial_arduino/src $ cp -r ros_lib <sketchbook>/libraries/ros_lib
После этого запускаем Arduino IDE, где в меню Файл → Примеры видим библиотеку ros_lib.
[add_ratings]