Программирование Робототехники С Помощью Arduino И Ros

Роботизированная операционная система ROS представляет собой достаточно мощную платформу для создания роботизированных систем, включающую в себя все необходимое для разработки ваших проектов: от простейших программных компонентов, называемых «узлами», и протокола связи до среды моделирования Gazebo для настоящей роботизированной платформы.

ROS в основном используется совместно с микроконтроллерами, такими как RaspberryPi и Blackbone, которые обладают большими вычислительными возможностями и собственной операционной системой.

Arduino — популярная плата для макетирования, ставшая популярной в связи с недавней концепцией «умного дома» и являющаяся идеальной отправной точкой для новичков в области микроэлектроники и робототехники.

На данный момент имеется не так много информации об использовании роботизированной операционной системы ROS совместно с микроконтроллером Arduino. В основном это зарубежные интернет-ресурсы и книги.

В этой статье я хочу рассказать вам, как «подружить» ROS и Arduino и чего мне удалось добиться в этой комбинации.

Для использования ROS с платой Arduino в ROS есть официальная библиотека — rosserial_arduino .



Установка rosserial_arduino

Установить библиотеку так же просто, как и любые другие пакеты ROS:
  
  
  
  
  
  
  
  
  
   

sudo apt-get install ros-<distribution_name>-rosserial-arduino sudo apt-get install ros-<distribution_name>-rosserial

После этого вам необходимо установить пакет rosserial_arduino из бинарных файлов.

Установка немного отличается для версий ROS, начиная с groovy, где для сборки пакетов была создана фирменная утилита Catkin. Для версий более ранних, чем groovy, необходимо выполнить следующие команды:

hg clone https://kforge.ros.org/rosserial/hg rosserial rosmake rosserial_arduino

Для версий ROS, использующих Catkin (groovy и более поздние), процедура установки будет следующей:

cd <ws>/src git clone https://github.com/ros-drivers/rosserial.git cd <ws> catkin_make catkin_make install source <ws>/install/setup.bash

Здесь ws означает имя папки рабочей области Catkin, обычно catkin_ws.

Добавление rosserial_arduino в Arduino IDE

Теперь осталось только скопировать библиотеку ros_lib в среду Arduino, чтобы позволить программам Arduino взаимодействовать с ROS. Библиотека ros_lib была создана на предыдущих этапах установки.

Библиотека будет скопирована в папку, которая является папкой по умолчанию для хранения скетчей Arduino, обычно это альбом для рисования.

Установка ros_lib отличается для версий ROS, использующих catkin (из groovy) и rosbuild (fuerte и более ранние).

Для версий с серёжкой установка будет следующая:

cd <sketchbook>/libraries rm -rf ros_lib rosrun rosserial_arduino make_libraries.py .



А для версий fuerte и более ранних это будет так:

roscd rosserial_arduino/src cp -r ros_lib <sketchbook>/libraries/ros_lib



Примеры запуска rosserial_ros

Теперь вы можете открывать примеры для rosserial_arduino в Arduino IDE. Для этого запустите Arduino IDE, выберите «Файл» > «Примеры» > ros_lib. Чтобы начать, выберите пример HelloWorld. Эскиз из примеров можно сразу загрузить на доску.

Загрузка ничем не отличается от загрузки любого другого скетча Arduino. Остается только запустить мастер ROS и клиентское приложение rosserial, которое будет перенаправлять все сообщения Arduino на другие компоненты ROS:

roscore rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0

Параметр _port определяет последовательный порт, через который доступна плата Arduino, например /dev/ttyACM0. Единственное действие, которое выполняет скетч HelloWorld — это публикация сообщений в теме чата.

Посмотреть опубликованные сообщения можно с помощью команды rostopic:

rostopic echo chatter



Решение проблем при запуске

Если при запуске клиентского приложения Rosserial появляется ошибка: «Невозможно синхронизироваться с устройством; возможна проблема со связью или несоответствие версии программного обеспечения ссылки, например, Hydro rosserial_python с отличным Arduino", тогда вам нужно добавить строку

#define USE_USBCON

перед включением ros-библиотек в эскиз.



Возможности rosserial_arduino

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

Он также позволяет вам использовать ros::Time и TF и публиковать данные преобразования tf. Например, в ходе своих экспериментов мне удалось создать эскиз для получения данных с ультразвукового датчика расстояния.

HC-SR07 и публикации по тематическому кругу.

Среди интересных возможностей ROS, которые можно использовать в rosserial_arduino, — визуализация числовых данных (например, с датчика) с помощью rqt_plot. Например, вы можете визуализировать данные с датчика HC-RS07 в виде такого графика:

rqt_plot range



Программирование робототехники с помощью Arduino и ROS

Управлять сервоприводом также можно, подписавшись на тему сервоприводов и публикуя значения угла поворота сервопривода командой:

rostopic pub servo std_msgs/UInt16 <angle>



Что дальше?

rosserial_arduino предлагает серию примеров использования библиотеки с различными датчиками, светодиодами, сервоприводами и кнопками.

Все примеры использования можно найти на официальной странице ROS: wiki.ros.org/rosserial_arduino/Tutorials .

На мой взгляд, rosserial_arduino может иметь множество вариантов использования для мобильных роботов.

Например, для колесного робота, оснащенного ультразвуковым датчиком типа SRF08 Ultrasonic Ranger, rosserial_arduino можно использовать следующим образом: узел rosserial_arduino может включать в себя Издателя, который отправляет данные с сонара через определенный интервал времени, и Подписчика, который подписывается к той же теме и передает данные методу, управляющему движением робота.

Пакет rosserial_arduino дает полную свободу разработчику: все зависит только от вашей фантазии.

Удачи в экспериментах с ROS и Arduino! Теги: #ros #arduino #робототехника #разработка робототехники

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

Автор Статьи


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

Dima Manisha

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