- PVSM.RU - https://www.pvsm.ru -

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


2018_02_03_beaglebone_blue_16p04_Ubuntu_LTS_EduMIP_ROS.img.zip
2018_02_03_beaglebone_black_wireless_16p04_Ubuntu_LTS_EduMIP_ROS.img.zip
Образ 8 Гб сжат в zip-файл 2,5 ГБ. ВАМ НЕ НУЖНО РАСПАКОВЫВАТЬ ZIP-ФАЙЛ. Программа (Etcher) может распаковать его на лету.
Соберите и Протестируйте EduMIP следующим образом. Будь осторожен. Будь нежным.
1. Сборка EduMIP: следуйте пошаговым инструкциям по сборке EduMIP, представленным здесь [1].
Смотрите мое видео по сборке на русском:
2. Некоторые Дополнительные Примечания:
Отсоедините кабель зарядки 12V от EduMIP
Перед транспортировкой робота Отсоедините аккумулятор от Robotics Cape.
Настройте свой Beaglebone Blue для использования в EduMIP следующим образом.
1. Проверьте свою плату BeagleBone Blue/Black: перед сборкой edumip протестируйте свою плату beaglebone blue-она поставляется с Debian Jessie, установленным на ее встроенном флэш-диске объемом 4 ГБ.
2. Установите и Протестируйте образ 8gb Ubuntu 16.04 LTS Linux с поддержкой ROS и BBBL / EduMIP на вашем BBBL: мы создали образ 8gb Ubuntu, который имеет ros kinetic и поддержку BBBL. Ваш набор EduMIP имеет пустую карточку 32GB или 64GB Micro-SD.
3. Тест EduMIP: проверьте EduMIP, войдя в систему как пользователь «ubuntu» с паролем «temppwd» следующим образом:
Вот пример этого сообщения об ошибках:
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
Вы можете узнать широту, долготу и напряженность магнитного поля для Балтимора, введя свой почтовый индекс на этой веб-странице [5].
4. Тест ROS на BBBL
5. Обновление и тест ROS EduMip программы баланса:
src/edumip_balance_ros.cpp Please, commit your changes or stash them before you can merge.», то удалите мешающий файл src/edumip_balance_ros.cpp, и «git pull» снова.
Во-первых, в первой оболочке запустите «roslaunch edumip_balance_ros edumip_balance_ros»
Во-вторых, во второй оболочке смотрите topics ros и выведите topics /edumip/state.
Поставьте вашего робота, он должен балансировать.
6. Выключайте BBBL правильно: когда вы закончите и готовы к выключению BBBL, не просто отключите его — выполните команду «sudo poweroff», чтобы выключить Linux и выключить питание платы. После того, как все светодиоды на плате погаснут, то можно отключать кабель USB.
(Они приведены здесь только для справки и не должны быть обязательными шагами для выполнения задания 3).
Подключение вашего ПК к BBB через USB
Как установить Ethernet-соединение с DNS и маршрут к внешнему интернету
WiFi (BBBL, BBB Wireless, BBB Classic + USB WiFi Adapter):
Предпочтительным 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 и примеры кода на ваш BBB. Он доступен здесь [8]. Установка копии в домашнем каталоге:
«cd ~»
«git clone github.com/StrawsonDesign/Robotics_Cape_Installer.git [9]»
Теперь вы можете просмотреть исходный код robotics cape и следовать инструкциям по компиляции и установке библиотеки robotics cape и примеров программ.
Установка базовых пакетов ROS для EduMIP
Клонируйте эти два git repos в ваш ~/catkin_ws/src directory:
cd to~/catkin_ws и соберите пакеты «catkin_make».
Для запуска узла edumip_balance_ros программе необходимы права root. Возможно, самый простой способ сделать это — изменить разрешения и владение скомпилированным двоичным файлом с помощью этих двух команд (в этом порядке) после того, как вы скомпилировали его:
Запустить 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_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 [10]: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 [10]: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 [11], чтобы узнать, как использовать файлы заголовков 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
Несколько студенческих команд использовали 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 [12]. Вы можете установить его «sudo apt-get install ros-kinetic-serial».
Простой пример здесь [13]
Копию src можно клонировать в рабочую область ROS с помощью команды «git clone github.com/wjwwood/serial.git [14]» и скомпилировать его с помощью «catkin_make». Каталог «examples» содержит более сложные примеры использования последовательного порта с пакетом «serial».
Обратите внимание, что этот пакет ros с именем «serial» не является пакетом «rosserial». «serial» пакет облегченная общецелевая библиотека для чтения и отправки данных по серийным портам. «rosserial» — это пакет для сопряжения небольших устройств, таких как Arduino в качестве узлов рос.
Дополнение от переводчика:
В статью добавил свои фото и видео, а также фото работ студентов. В целом для запуска достаточно только этой инструкции, желательно только иметь хотя бы минимальный опыт работы в командной строке linux и базовое понимание архитектуры ROS. Скрипты работы робота написаны на C.
Можете задавать вопросы в комментариях, я читаю и отвечу.
Автор: AmigoRRR
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/282422
Ссылки в тексте:
[1] здесь: https://jh.box.com/v/530-707-Dropbox
[2] здесь: https://github.com/StrawsonDesign/EduMiP
[3] здесь: https://beagleboard.org/getting-started
[4] etcher.io: https://etcher.io
[5] этой веб-странице: https://www.ngdc.noaa.gov/geomag-web/#igrfwmm
[6] общедоступного URL: https://git.lcsr.jhu.edu/lwhitco1/edumip_msgs.git
[7] общедоступного URL: https://git.lcsr.jhu.edu/lwhitco1/edumip_balance_ros.git
[8] здесь: https://github.com/StrawsonDesign/Robotics_Cape_Installer
[9] github.com/StrawsonDesign/Robotics_Cape_Installer.git: https://github.com/StrawsonDesign/Robotics_Cape_Installer.git
[10] 192.168.10.102: http://192.168.10.102
[11] edumip_balance_ros: https://git.lcsr.jhu.edu/lwhitco1/edumip_balance_ros
[12] ROS serial package: http://wiki.ros.org/serial
[13] здесь: https://github.com/garyservin/serial-example
[14] github.com/wjwwood/serial.git: https://github.com/wjwwood/serial.git
[15] Источник: https://habr.com/post/413677/?utm_campaign=413677
Нажмите здесь для печати.