[Перевод] Запуск ROS на самобалансирующем роботе EduMIP

8hnjttadeo1bqubidyjqbs__zta.jpeg

Введение


В этой публикации представлена инструкция по установке и запуску операционной системы робота (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 в одноплатном компьютере.

    tj1p_zumabntnzh4jqyoy4w3huy.png

  • 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, редукторы, энкодеров, колес, пластиковых деталей, проводов, и крепежных деталей.
    x24zseh1x6idjkg-ytpfd684w-c.jpeg
  • 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 ГБ.

  1. Следуйте инструкциям здесь. Для установки правил udev на ваш linux ПК. Используйте эту страницу только для того, чтобы узнать, как защитить правила UDEV на вашем LINUX ПК, игнорируйте все остальное.
  2. После того, как вы установите соответствующие правила 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».
  3. Всякий раз, когда вы закончите работать с 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.

  1. Загрузите: готовый образ Ubuntu 16.04 для поддержки ARM для BBBL и ROS, см. выше инструкции, озаглавленные «образ Ubuntu 16.04 LTS для beaglebone black и blue».
  2. Вам не нужно распаковывать заархивированный образ.
  3. Скачать Etcher: скачать и установить Etcher на вашем компьютере с etcher.io -Etcher-это программа для записи образов дисков на SD-карты.
  4. Запишите образ диска на карту micro-SD.
  5. Аккуратно Установите микро-SD-карты: Установка микро-SD-карта в микро-SD слот для карты и beaglebone. НЕ ПЕРЕДАВИТЕ ЕГО, ОН ПРЕДУСМАТРИВАЕТ КАК РАЗ НЕЖНОЕ КАСАНИЕ ДЛЯ ТОГО ЧТОБЫ УСТАНОВИТЬ.
  6. Загрузите его! Загрузите BBBL из образа карты Micro-SD, подключив его к компьютеру с помощью кабеля USB.
    1. Если карта Micro-SD содержит загрузочный образ, то BBBL загрузится с нее, а не с ее встроенного флэш-диска.
    2. SSH в BBBL («ssh ubuntu@192.168.7.2» с паролем «temppwd») и убедитесь, что вы на самом деле работаете в образе 32GB. Команда «df -h» должна показать по крайней мере 2 ГБ свободного места, и команда «htop» должна Показать 1 ГБ активного файла подкачки.


3. Тест EduMIP: проверьте EduMIP, войдя в систему как пользователь «ubuntu» с паролем «temppwd» следующим образом:

  1. Примечание по сообщениям об ошибках: последняя версия библиотеки 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
    
  2. Тест энкодеров: выполните команду «rc_test_encoders» и немного поверните колеса — вы увидите энкодеры E2 и E3, отображающие изменение количества оборотов.
  3. Тестирование двигателей: выполните команду «rc_test_motors-D 0.1» — когда вы поднимаете EduMIP, два колеса должны вращаться в противоположных направлениях.
  4. Калибровка Гироскопов: поместите EduMIP на стол, неподвижно, и запустите команду «rc_calibrate_gyro» и следуйте инструкциям. Эта программа калибровки пишет калибровку гироскопа в файл /var/lib/roboticscape/gyro.cal
  5. Тест Гироскопа: выполните команду «rc_test_imu» и убедитесь, что данные «Gyro XYZ (rad/s)» равны нулю (или почти нулю).
  6. Калибровка Магнитометра: выполните команду «rc_calibrate_mag» и следуйте инструкциям — Вам будет предложено подержать EduMIP в руке и повернуть («спин») его во всех ориентациях. Эта программа калибровки пишет калибровку магнитометра файл /var/lib/roboticscape/mag.cal
  7. Тест Магнитометра: выполните команду «rc_test_imu» и убедитесь, что данные «Mag Field XYZ (uT)» ненулевые. Магнитуда вектора магнитного поля Земли в Балтиморе и Вудс-холе составляет около 52uT, но пока не волнуйтесь, если ваш магнитометр кажется немного выключенным.

    Вы можете узнать широту, долготу и напряженность магнитного поля для Балтимора, введя свой почтовый индекс на этой веб-странице.

  8. Тест балансировки EduMIP: Запускаем команду «rc_balance», и ставим робота вверх. Ваш робот должен балансировать на месте.



4. Тест ROS на BBBL

  1. Проверь файл .bashrc. В конце файл должен иметь следующие команды в следующем порядке:
    Во-первых, команда «source /opt/ros/kinetic/setup.bash» для настройки переменных среды ROS.
    Во-вторых, команда «source ~/catkin_ws/devel/setup.bash», чтобы добавить локальное рабочее пространство catkin в среду ROS (это называется «worspace overlay»).
  2. Выполните команду «source .bashrc» для настройки переменных среды ROS. Проверьте их с помощью команды «printenv / grep ROS».
  3. Убедитесь, что вы можете запустить «roscore» и другие утилиты ROS.
  4. Убедитесь, что вы можете запустить «catkin_make» в рабочей области BBBL ROS.
  5. Образ проверен


5. Обновление и тест ROS EduMip программы баланса:

  1. Если вы еще этого не сделали, откалибруйте гироскоп EduMIP командой «rc_calibrate_gyro», пока робот неподвижно лежит на столе.
  2. Войдите в EduMIP с именем пользователя «ubuntu» и паролем «temppwd»
  3. Настройка Wi-Fi на EduMIP: Настройте свой Wi-Fi, так что вы могли клонировать пакеты ROS из нашего репозитория git.
  4. Если вы установили предустановленный 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» снова.

  5. Если ваш edumip_msgs и edumip_balance_ros еще не в директории src рабочего пространства catkin вашего EduMIP это (должно быть ~/catkin_ws/src), затем клонируйте эти два пакета ROS в ~/catkin_ws/src):
    1. Пакет edumip_msg определяет пользовательский тип сообщения edumip_msf/EduMipState для EduMIP. Этот пакет не содержит исходного кода, только определения сообщений и связи CMakeLists.txt и package.xml. Если ваш компьютер должен получить доступ к этому типу сообщений, Вы также должны клонировать проект на свой компьютер. Этот пакет не зависит от архитектуры. Этот пакет может быть клонирован git из этого общедоступного URL.
    2. Пакет edumip_balance_ros содержит узел edumip_ros_node C++ ROS.cpp, который является версией ROS-ified программы rc_balance. В образе linux, который мы Вам предоставили, уже установлены драйверы Robotics Cape и ROS. Этот пакет может быть клонирован git из этого общедоступного URL.
  6. Создайте эти два пакета с помощью команды «catkin_make» в главном каталоге catkin workspace.
  7. Проверьте, что ROS теперь знает о пользовательских сообщениях, определенных в пакете edumip_msgs командой: rosmsg show edumip_msgs/EduMipState
  8. Откройте два удаленных сеанса 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.12

NODES
/
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

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.12

NODES
/
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 в горизонтальной конфигурации с кастер колесом.

wwbqywxez62plhzy1rjeu0p-s_8.jpeg


Для этого вам нужно будет заменить проект «edumip_balance_ros» собственным новым кодом для управления моторами колес, а также для чтения и публикации энкодеров колес. А я вчера рассмотрел в классе один из возможных пакетов, можно использовать пакет differential_drive ROS (http://wiki.ros.org/differential_drive). Чтобы использовать пакет differential_drive, необходимо написать новый узел C++ для edumip, который (a) считывает энкодеры колес и публикует их по темам и (b) подписывается на темы команд двигателя и команд напряжения для колесных двигателей.

kvzbetynezcub7sclpdf5bq9kdu.jpeg

ayonvbvtzgmccqeyu5rlmp604xm.jpeg

vdztguslq4mgpabge6ffbdbj-yu.jpeg

Взаимодействие с устройствами последовательного порта (Serial Port Devices)

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

olet8g926448yknxtl4zvn-bsiy.jpegg4y-dov8fy2n99k2b1flozwbj0u.jpeg
xtb_zuhwmwpzfasvxwlilxrw3pa.jpeg

Хороший пакет для этого 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.

Можете задавать вопросы в комментариях, я читаю и отвечу.

© Habrahabr.ru