[Перевод] Запуск ROS на самобалансирующем роботе EduMIP
Введение
В этой публикации представлена инструкция по установке и запуску операционной системы робота (ROS) на мобильном роботе EduMIP. EduMiP — это самобалансирующийся робот, построенный вокруг BeagleBone Black c встроенным бортовым микропроцессором и Beaglebone Black Robotics Cape, разработанной James Strawson и профессором Thomas Bewley согласованно с Coordinated Robotics Laboratory at UCSD и их сотрудниками. BeagleBone Blue, недавно выпущенный в середине 2017 года, сочетает в себе функции BeagleBone Black и Robotics Cape в одной плате. Профессор Bewley использует этот робот в своем курсе MAE144 — Embedded Control & Robotics на кафедре механического и аэрокосмического машиностроения UCSD.
Отвечаю на вопросы в комментариях.
Список компонентов
Обратите внимание, что вам нужно либо один Baglebone Blue или каждый из Beaglebone Black и Robotics Cape.
- Beaglebone Blue (BBBL): недавно выпущенный в середине 2017 года, сочетает в себе черты BeagleBone Black и Robotics Cape в одноплатном компьютере.
- Beaglebone Black (BBB): низкая стоимость, поддерживаемые сообществом платформы для разработчиков и любителей, с AM335x с тактовой частотой 1 ГГц ARM Cortex процессора, 512 МБ оперативной памяти DDR3, 4 ГБ 8-разрядная память emmc на борту.
- Robotics Cape (BBB-RC): Beaglebone Black Robotics Cape это плата ввода-вывода для Beaglebone Black, которая обеспечивает несколько датчиков и богатую аппаратную поддержку, включая следующее:
- Сенсоры:
- 9-осевой IMU
- Барометр
- I/O:
- 4 квадратичных энкодера
- 4 драйвера мотора H-моста
- 8 выходов Сервопривода / ESC
- Стандартный интерфейс радио DSM RC
- I2C UART АЦП SPI GPIO ШИМ
- Контроллер заряда литий-полимерного аккумулятора
- Сенсоры:
- EduMIP Kit: набор состоит из моторов DC, редукторы, энкодеров, колес, пластиковых деталей, проводов, и крепежных деталей.
- Micro-SD Card: карта микро-SD по крайней мере 8ГБ в размере.
- Образ Ubuntu 16.04 LTS для BeagleBone Black и Blue: jОбраз предоставлен Robert Nelson, Jeff O«Brian здесь. Этот образ содержит ROS Kinetic с предварительно установленным ROS, как ros catkin рабочее место с базовыми ros EduMIP пакетами с предварительно установленными. Здесь два образа Ubuntu, убедитесь, что вы используете правильный образ:
Образ 8 Гб сжат в zip-файл 2,5 ГБ. ВАМ НЕ НУЖНО РАСПАКОВЫВАТЬ ZIP-ФАЙЛ. Программа (Etcher) может распаковать его на лету. - USB-джойстик: полезен для учебников в курсе Robot Systems Programming. Хорошей недорогой моделью является Logitech Gamepad F310
Сборка и тестирование комплекта EduMIP (часть задания курса программирования Робототехнических систем #3)
Соберите и Протестируйте EduMIP следующим образом. Будь осторожен. Будь нежным.
1. Сборка EduMIP: следуйте пошаговым инструкциям по сборке EduMIP, представленным здесь.
Смотрите мое видео по сборке на русском:
2. Некоторые Дополнительные Примечания:
Настройка Beaglebone Black / Blue и EduMIP (часть задания курса ROS #3)
Настройте свой Beaglebone Blue для использования в EduMIP следующим образом.
1. Проверьте свою плату BeagleBone Blue/Black: перед сборкой edumip протестируйте свою плату beaglebone blue-она поставляется с Debian Jessie, установленным на ее встроенном флэш-диске объемом 4 ГБ.
- Следуйте инструкциям здесь. Для установки правил udev на ваш linux ПК. Используйте эту страницу только для того, чтобы узнать, как защитить правила UDEV на вашем LINUX ПК, игнорируйте все остальное.
- После того, как вы установите соответствующие правила udev на вашем компьютере linux, он установит Ethernet-соединение с BBB через USB-соединение через виртуальный адаптер Ethernet usb0. Ваш хост-компьютер будет по IP-адресу 192.167.7.1, и ВВВ будет в 192.168.7.2. SSH с хост-компьютера на BBB «ssh debian@192.168.7.2». Пароль по умолчанию для «debian» — «temppwd».
- Всякий раз, когда вы закончите работать с BBBL и готовы к его выключению, не просто отключите его — запустите команду «sudo poweroff», чтобы выключить Linux и выключить питание платы. После того, как все светодиоды на плате потухнут, то это нормально, чтобы отключить кабель USB.
2. Установите и Протестируйте образ 8gb Ubuntu 16.04 LTS Linux с поддержкой ROS и BBBL / EduMIP на вашем BBBL: мы создали образ 8gb Ubuntu, который имеет ros kinetic и поддержку BBBL. Ваш набор EduMIP имеет пустую карточку 32GB или 64GB Micro-SD.
- Загрузите: готовый образ Ubuntu 16.04 для поддержки ARM для BBBL и ROS, см. выше инструкции, озаглавленные «образ Ubuntu 16.04 LTS для beaglebone black и blue».
- Вам не нужно распаковывать заархивированный образ.
- Скачать Etcher: скачать и установить Etcher на вашем компьютере с etcher.io -Etcher-это программа для записи образов дисков на SD-карты.
- Запишите образ диска на карту micro-SD.
- Аккуратно Установите микро-SD-карты: Установка микро-SD-карта в микро-SD слот для карты и beaglebone. НЕ ПЕРЕДАВИТЕ ЕГО, ОН ПРЕДУСМАТРИВАЕТ КАК РАЗ НЕЖНОЕ КАСАНИЕ ДЛЯ ТОГО ЧТОБЫ УСТАНОВИТЬ.
- Загрузите его! Загрузите BBBL из образа карты Micro-SD, подключив его к компьютеру с помощью кабеля USB.
- Если карта Micro-SD содержит загрузочный образ, то BBBL загрузится с нее, а не с ее встроенного флэш-диска.
- SSH в BBBL («ssh ubuntu@192.168.7.2» с паролем «temppwd») и убедитесь, что вы на самом деле работаете в образе 32GB. Команда «df -h» должна показать по крайней мере 2 ГБ свободного места, и команда «htop» должна Показать 1 ГБ активного файла подкачки.
3. Тест EduMIP: проверьте EduMIP, войдя в систему как пользователь «ubuntu» с паролем «temppwd» следующим образом:
- Примечание по сообщениям об ошибках: последняя версия библиотеки roboticscape, которая загружается на образ Ubuntu, который мы используем, имеет некоторые ошибки с поддержкой PRU, которые выводят сообщение об ошибке «ERROR: pru-rproc driver missing» при вызове библиотек roboticscape для доступа к оборудованию BBBL. Мы можем проигнорировать это предупреждение, оно будет исправлено в более позднем выпуске. Ожидайте увидеть одно из этих предупреждений при запуске программ, таких как «rc_balance», «rc_test_encoders», «edumip_balance_ros» и т. д.
Вот пример этого сообщения об ошибках:
ubuntu@arm:~$ rc_test_imu ERROR: pru-rproc driver missing try ‘test_imu -h’ to see other options Accel XYZ(m/s^2) | Gyro XYZ (rad/s) | Mag Field XYZ(uT) | Temp (C) 0.23 -3.06 9.72 | 0.0 -0.0 -0.0 | 22.9 -4.1 -54.9 | 37.9
- Тест энкодеров: выполните команду «rc_test_encoders» и немного поверните колеса — вы увидите энкодеры E2 и E3, отображающие изменение количества оборотов.
- Тестирование двигателей: выполните команду «rc_test_motors-D 0.1» — когда вы поднимаете EduMIP, два колеса должны вращаться в противоположных направлениях.
- Калибровка Гироскопов: поместите EduMIP на стол, неподвижно, и запустите команду «rc_calibrate_gyro» и следуйте инструкциям. Эта программа калибровки пишет калибровку гироскопа в файл /var/lib/roboticscape/gyro.cal
- Тест Гироскопа: выполните команду «rc_test_imu» и убедитесь, что данные «Gyro XYZ (rad/s)» равны нулю (или почти нулю).
- Калибровка Магнитометра: выполните команду «rc_calibrate_mag» и следуйте инструкциям — Вам будет предложено подержать EduMIP в руке и повернуть («спин») его во всех ориентациях. Эта программа калибровки пишет калибровку магнитометра файл /var/lib/roboticscape/mag.cal
- Тест Магнитометра: выполните команду «rc_test_imu» и убедитесь, что данные «Mag Field XYZ (uT)» ненулевые. Магнитуда вектора магнитного поля Земли в Балтиморе и Вудс-холе составляет около 52uT, но пока не волнуйтесь, если ваш магнитометр кажется немного выключенным.
Вы можете узнать широту, долготу и напряженность магнитного поля для Балтимора, введя свой почтовый индекс на этой веб-странице.
- Тест балансировки EduMIP: Запускаем команду «rc_balance», и ставим робота вверх. Ваш робот должен балансировать на месте.
4. Тест ROS на BBBL
- Проверь файл .bashrc. В конце файл должен иметь следующие команды в следующем порядке:
Во-первых, команда «source /opt/ros/kinetic/setup.bash» для настройки переменных среды ROS.
Во-вторых, команда «source ~/catkin_ws/devel/setup.bash», чтобы добавить локальное рабочее пространство catkin в среду ROS (это называется «worspace overlay»). - Выполните команду «source .bashrc» для настройки переменных среды ROS. Проверьте их с помощью команды «printenv / grep ROS».
- Убедитесь, что вы можете запустить «roscore» и другие утилиты ROS.
- Убедитесь, что вы можете запустить «catkin_make» в рабочей области BBBL ROS.
- Образ проверен
5. Обновление и тест ROS EduMip программы баланса:
- Если вы еще этого не сделали, откалибруйте гироскоп EduMIP командой «rc_calibrate_gyro», пока робот неподвижно лежит на столе.
- Войдите в EduMIP с именем пользователя «ubuntu» и паролем «temppwd»
- Настройка Wi-Fi на EduMIP: Настройте свой Wi-Fi, так что вы могли клонировать пакеты ROS из нашего репозитория git.
- Если вы установили предустановленный Ubuntu 16.04 образ, как описано выше, то у вас будут уже пакеты «edumip_msgs» и «edumip_ros_balance» в исходном каталоге catkin worskace, т. е. ~/catkin_ws/src/edumip_msgs, и ~/catkin_ws/src/edumip_balance_ros. Обновите пакет edumip_balance_ros командой «cd ~/catkin_ws/src/edumip_balance_ros» и «git pull», чтобы загрузить последний код этого пакета. Если вы получите сообщение об ошибке «error: Your local changes to the following files would be overwritten by merge:
src/edumip_balance_ros.cpp Please, commit your changes or stash them before you can merge.», то удалите мешающий файл src/edumip_balance_ros.cpp, и «git pull» снова.
- Если ваш edumip_msgs и edumip_balance_ros еще не в директории src рабочего пространства catkin вашего EduMIP это (должно быть ~/catkin_ws/src), затем клонируйте эти два пакета ROS в ~/catkin_ws/src):
- Пакет edumip_msg определяет пользовательский тип сообщения edumip_msf/EduMipState для EduMIP. Этот пакет не содержит исходного кода, только определения сообщений и связи CMakeLists.txt и package.xml. Если ваш компьютер должен получить доступ к этому типу сообщений, Вы также должны клонировать проект на свой компьютер. Этот пакет не зависит от архитектуры. Этот пакет может быть клонирован git из этого общедоступного URL.
- Пакет edumip_balance_ros содержит узел edumip_ros_node C++ ROS.cpp, который является версией ROS-ified программы rc_balance. В образе linux, который мы Вам предоставили, уже установлены драйверы Robotics Cape и ROS. Этот пакет может быть клонирован git из этого общедоступного URL.
- Создайте эти два пакета с помощью команды «catkin_make» в главном каталоге catkin workspace.
- Проверьте, что ROS теперь знает о пользовательских сообщениях, определенных в пакете edumip_msgs командой: rosmsg show edumip_msgs/EduMipState
- Откройте два удаленных сеанса ssh на EduMIP:
Во-первых, в первой оболочке запустите «roslaunch edumip_balance_ros edumip_balance_ros»
Во-вторых, во второй оболочке смотрите topics ros и выведите topics /edumip/state.
Поставьте вашего робота, он должен балансировать.
6. Выключайте BBBL правильно: когда вы закончите и готовы к выключению BBBL, не просто отключите его — выполните команду «sudo poweroff», чтобы выключить Linux и выключить питание платы. После того, как все светодиоды на плате погаснут, то можно отключать кабель USB.
Некоторые полезные заметки по Linux для BBB и BBBL
- Редакторы emacs и nano уже установлены на образе BBB linux, предоставленном для этого урока.
- Утилита linux «locate» не установлена по умолчанию, но вы можете установить ее с помощью «sudo apt-get install locate» и инициализировать базу данных locate командой «sudo updatedb» (занимает несколько минут).
- Сервер времени NTP установлен на образе BBB linux, предусмотренном для этого урока, но он будет синхронизироваться только в том случае, если BBB имеет маршрут к интернету, например, когда ваш WIFi включен. Сетевое Подключение USB к компьютеру по умолчанию не маршрутизируется в интернет. Вы можете проверить состояние ntp с помощью команды «ntpq-p».
Заметки по настройке BeagleBone Black (ВВВ) и beaglebone Blue (BBBL) с Ununtu 16.04 и ROS
(Они приведены здесь только для справки и не должны быть обязательными шагами для выполнения задания 3).
Подключение вашего ПК к BBB через USB
- Следуйте инструкциям здесь
- После того, как вы установите соответствующие драйверы или правила udev на хост-компьютере, он установит Ethernet-соединение с BBB через USB-соединение через виртуальный адаптер Ethernet usb0. Ваш хост-компьютер будет по IP-адресу 192.167.7.1, и ВВВ будет 192.168.7.2. SSH с хост-компьютера на BBB «ssh ubuntu@192.168.7.2». Пароль по умолчанию для «ubuntu» — «temppwd».
Как установить Ethernet-соединение с DNS и маршрут к внешнему интернету
WiFi (BBBL, BBB Wireless, BBB Classic + USB WiFi Adapter):
- WiFi в один миг: следуйте инструкциям для connmanctl, перечисленных в комментариях к файлу /etc/network/interfaces. Для чтения комментариев используйте команду cat /etc/network/interfaces.
- Примечание: утилита connmanctl не поддерживает корпоративные сети, такие как «hopkins», но она поддерживает WPA/WPA2 сети.
- Примечание: при загрузке адаптер BBBL WiFi не всегда правильно. Если Вы не видите как «wlan0» в выводе команды ifconfig, попробуйте ручное включение BBBL как wlan0 interfce с помощью команды «ifconfig wlan0 up». Тогда вы должны увидеть wlan0 в выводе команды «ifconfig».
- Ifconfig: Используйте команду «ifconfig», чтобы увидеть все настроенные сетевые интерфейсы (локальная сеть, WiFi, USB и т. д.) на вашей машине.
- Iwconfig: используйте команду «iwconfig», чтобы увидеть все настроенные сетевые интерфейсы WiFi на вашем компьютере.
- Кто я такой? Самый простой способ определить IP-адрес (или адреса) машины Linux-войти в нее и использовать команду «ifconfig».
- Wifi День Сурка! К сожалению, в настоящее время BBBL не помнит настройки WiFi
Предпочтительным WiFi соединением должно быть как BBBL и ваш компьютер подключен к одной точке доступа Wi-Fi, так что вы можете заходить по ssh в BBBL с вашего компьютера, и ваш BBBL имеет доступ в интернет к git repos, и т.д.
Кроме того, можно напрямую подключиться к BBBL, используя его в качестве точки доступа Wi-Fi, подключив компьютер к сети Wi-Fi «BeagleBone-XXXX, где XXXX является уникальным для вашего BBBL. Пароль WiFi — «BeagleBone». Это простое подключение, но в этой конфигурации ни ваш BBBL, ни ваш компьютер не будет иметь доступ в интернет к git repos и т. д. После подключения ваш компьютер будет иметь IP-адрес 192.168.ХХХ.ХХХ. IP-адрес BBBL будет 192.168.ХХХ.1
Обновление вашего BBBL Ubuntu Distribution
На ВВВ запустите Linux-команды «sudo apt update» И «sudo apt dist-upgrade»
Установка программного обеспечения Robotics Cape на BBBL
- Поддержка Robotics Cape / BBBL уже доступна на предварительно настроенном образе Ubuntu для BBBL, описанного выше, вам не нужно переустанавливать его.
- Бинарная установка под Ubuntu 16.04 на ARM: «sudo apt-get install roboticscape»
- Установка из исходников
Вы хотите установить копию исходного кода robotics cape и примеры кода на ваш BBB. Он доступен здесь. Установка копии в домашнем каталоге:
«cd ~»
«git clone github.com/StrawsonDesign/Robotics_Cape_Installer.git»
Теперь вы можете просмотреть исходный код robotics cape и следовать инструкциям по компиляции и установке библиотеки robotics cape и примеров программ.
Установка базовых пакетов ROS для EduMIP
Клонируйте эти два git repos в ваш ~/catkin_ws/src directory:
cd to~/catkin_ws и соберите пакеты «catkin_make».
Для запуска узла edumip_balance_ros программе необходимы права root. Возможно, самый простой способ сделать это — изменить разрешения и владение скомпилированным двоичным файлом с помощью этих двух команд (в этом порядке) после того, как вы скомпилировали его:
- sudo chown root: root ~/catkin_ws/devel/lib/edumip_balance_ros
- sudo chmod u+s ~/catkin_ws/devel/lib/edumip_balance_ros
Запустить ROS node edumip_balance_ros »roslaunch edumip_balance_ros edumip_balance_ros.launch». Робот будет балансировать, получать сообщения twist velocity командной topic /edumip/cmd и публиковать свое состояние в ROS теме topic /edumip/state
Если Вы не можете найти файл запуска edumip_balance_ros.launch в каталоге ~/catkin_ws/src/edumip_balance_ros/launch, то вам нужно «git pull» последнюю версию этого пакета, как указано выше, и перекомпилировать источник с «catkin_make».
См. задание на 3-й неделе на этой веб-странице курса для получения более подробной информации об использовании этих ROS backages: Robot Systems Programming Week 3 Assignment
Примечания по запуску EduMIP с ROS
Почему я получаю ошибки разрешений при запуске edumip_balance_ros и как я могу это исправить?
Прочитайте это, если вы получаете ошибки, как «can«t open:
/sys/devices/platform/ocp/ocp: H18_pinmux/state
Pinmux: Permission denied» при запуске edumip_balance_ros.
При компиляции проекта edumip_balance_ros на edumip с catkin_make, скомпилируйте исполняемый файл:
»~/catkin_ws/devel/lib/edumip_balance_ros/edumip_balance_ros»
ubuntu@arm:~/catkin_ws$ ls -l devel/lib/edumip_balance_ros/
total 272
-rwxrwxr-x 1 ubuntu ubuntu 278292 Feb 18 18:48 edumip_balance_ros
Обратите внимание, что владельцем и группой файла являются ubuntu: ubuntu, и что он является исполняемым (»-rwxrwxr-x»).
ubuntu@arm:~/catkin_ws$ roslaunch edumip_balance_ros edumip_balance_ros.launch
… logging to /home/ubuntu/.ros/log/a271dd92–14dc-11e8-b293-dc5360d671c6/roslaunch-arm-2845.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.started roslaunch server 192.168.10.102:37365/
SUMMARY
========PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.12NODES
/
edumip_balance_ros_node (edumip_balance_ros/edumip_balance_ros)ROS_MASTER_URI=http://192.168.10.101:11311
process[edumip_balance_ros_node-1]: started with pid [2874]
[ INFO] [1518979862.674565427]: File /home/ubuntu/catkin_ws/src/edumip_balance_ros/src/edumip_balance_ros.cpp compiled on Feb 3 2018 19:38:02.
can’t open: /sys/devices/platform/ocp/ocp: H18_pinmux/state
Pinmux: Permission denied
can’t open: /sys/devices/platform/ocp/ocp: C18_pinmux/state
Pinmux: Permission denied
can’t open: /sys/devices/platform/ocp/ocp: U16_pinmux/state
Pinmux: Permission denied
can’t open: /sys/devices/platform/ocp/ocp: D13_pinmux/state
Pinmux: Permission denied
can’t open: /sys/devices/platform/ocp/ocp: J15_pinmux/state
Pinmux: Permission denied
can’t open: /sys/devices/platform/ocp/ocp: H17_pinmux/state
Pinmux: Permission denied
WARNING: missing PINMUX driver
You probbaly just need a newer kernel
Unable to open /dev/mem
mmap_gpio_adc.c failed to initialize gpio
[ INFO] [1518979862.806645002]: ERROR: failed to initialize cape.
[edumip_balance_ros_node-1] process has died [pid 2874, exit code 255, cmd /home/ubuntu/catkin_ws/devel/lib/edumip_balance_ros/edumip_balance_ros __name:=edumip_balance_ros_node __log:=/home/ubuntu/.ros/log/a271dd92–14dc-11e8-b293-dc5360d671c6/edumip_balance_ros_node-1.log].
log file: /home/ubuntu/.ros/log/a271dd92–14dc-11e8-b293-dc5360d671c6/edumip_balance_ros_node-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor…
… shutting down processing monitor complete
done
Проблема здесь в том, что ваш исполняемый файл должен работать как «root», а не как обычный пользователь, чтобы получить доступ к аппаратным регистрам BeagleBone.
После компиляции edumip_ros_balance можно изменить разрешения исполняемого файла, принадлежащие root (sudo chown root: root<имя_файла>), и установить его sticky bit (sudo chmod u+s <имя_файла>), выполнив следующий сценарий:
»~/catkin_ws/src/edumip_balance_ros/scripts/edumip_change_perms.sh»
Если вы посмотрите на этот сценарий оболочки, вы увидите, что он выполняет эти две команды:
sudo chown root: root ~/catkin_ws/devel/lib/edumip_balance_ros/edumip_balance_ros
sudo chmod u+s ~/catkin_ws/devel/lib/edumip_balance_ros/edumip_balance_ros
После запуска этого скрипта (он запросит у вас пароль sudo) права доступа и группы исполняемого файла будут изменены с ubuntu: ubuntu на root: root, и его sticky bit будет установлен (разрешения ранее были »- rwxrwxr-x » и стали» — rwsrwxr-x»):
ubuntu@arm:~/catkin_ws$ ls -l devel/lib/edumip_balance_ros/
total 272
-rwsrwxr-x 1 root root 278292 Feb 18 18:48 edumip_balance_ros
Теперь при запуске edumip_balance_ros, он должен нормально работать, как показано ниже:
ubuntu@arm:~$ roslaunch edumip_balance_ros edumip_balance_ros.launch
… logging to /home/ubuntu/.ros/log/a271dd92–14dc-11e8-b293-dc5360d671c6/roslaunch-arm-2099.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.started roslaunch server 192.168.10.102:34253/
SUMMARY
========PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.12NODES
/
edumip_balance_ros_node (edumip_balance_ros/edumip_balance_ros)ROS_MASTER_URI=http://192.168.10.101:11311
process[edumip_balance_ros_node-1]: started with pid [2108]
[ INFO] [1518981653.978399507]: File /home/ubuntu/catkin_ws/src/edumip_balance_ros/src/edumip_balance_ros.cpp compiled on Feb 3 2018 19:38:02.
ERROR: pru-rproc driver missing
[ INFO] [1518981654.104574860]: Inner Loop controller D1:order: 2
timestep dt: 0.0100
-4.9450z² + 8.8620z + -3.9670
— 1.0000z² + -1.4810z + 0.4812
[ INFO] [1518981654.107474727]:
Outer Loop controller D2:order: 2
timestep dt: 0.0100
0.1886z² + -0.3721z + 0.1835
— 1.0000z² + -1.8605z + 0.8605
[ INFO] [1518981654.573431369]:
Hold your MIP upright to begin balancing
ROS не может найти мой пакет ROS
Если в ваша среда ROS, не понимает, что у вас есть новые пакеты в catkin_ws/src, то попробуйте обновить свой профиль rospack с командой «rospack profile», и обновите rosdep cache с помощью команды «rosdep update».
Компиляция и привязка к Robotics Cape «C» библиотекам
Библиотека Robotics Cape поставляется предварительно установленной на Ubuntu 16.04 образе доступном по ссылке, представленной ранее на этой странице. Он был установлен с помощью команды «sudo apt-get install roboticscape».
Библиотека robotics cape и связанные с ней файлы заголовков уже установлены на EduMIP. Ссылка на библиотеки /usr/lib/libroboticscape.so, и два заголовочных файлов верхнего уровня rc_usefulincludes.h и roboticscape.h.
Вы можете обратиться к проекту edumip_balance_ros, чтобы узнать, как использовать файлы заголовков robotics cape C и библиотеку ссылок C с узлом C++ ROS.
Посмотрите edumip_balance_ros/src/edumip_balance_ros.cpp, чтобы увидеть, как включить файлы заголовков C в программе C++ с extern «C» directive.
Посмотрите edumip_balance_ros/CMakeLists.txt, чтобы узнать, как связать вашу программу с библиотекой roboticscape C.
Edumip_balance_ros Package
- Для компиляции пакета edumip_balance_ros необходимо также установить пакет edumip_msgs.
- Пакет edumip_balance_ros не будет компилироваться на вашем компьютере, это только для компиляции на EduMIP.
Горизонтальная Конфигурация EduMIP
Несколько студенческих команд использовали EduMIP в горизонтальной конфигурации с кастер колесом.
Для этого вам нужно будет заменить проект «edumip_balance_ros» собственным новым кодом для управления моторами колес, а также для чтения и публикации энкодеров колес. А я вчера рассмотрел в классе один из возможных пакетов, можно использовать пакет differential_drive ROS (http://wiki.ros.org/differential_drive). Чтобы использовать пакет differential_drive, необходимо написать новый узел C++ для edumip, который (a) считывает энкодеры колес и публикует их по темам и (b) подписывается на темы команд двигателя и команд напряжения для колесных двигателей.
Взаимодействие с устройствами последовательного порта (Serial Port Devices)
Для того чтобы взаимодействовать с датчиками по последовательному порту, такими как USB ультразвуковой датчик продемонстрированный в классе, вам будет нужно уметь открыть, прочитать, и отправить по серийным портам.
Хороший пакет для этого ROS serial package. Вы можете установить его «sudo apt-get install ros-kinetic-serial».
Простой пример здесь
Копию src можно клонировать в рабочую область ROS с помощью команды «git clone github.com/wjwwood/serial.git» и скомпилировать его с помощью «catkin_make». Каталог «examples» содержит более сложные примеры использования последовательного порта с пакетом «serial».
Обратите внимание, что этот пакет ros с именем «serial» не является пакетом «rosserial». «serial» пакет облегченная общецелевая библиотека для чтения и отправки данных по серийным портам. «rosserial» — это пакет для сопряжения небольших устройств, таких как Arduino в качестве узлов рос.
Дополнение от переводчика:
В статью добавил свои фото и видео, а также фото работ студентов. В целом для запуска достаточно только этой инструкции, желательно только иметь хотя бы минимальный опыт работы в командной строке linux и базовое понимание архитектуры ROS. Скрипты работы робота написаны на C.
Можете задавать вопросы в комментариях, я читаю и отвечу.