[ПОМиРС 3] Поднимаем ROS на тазике из призмы
Апр 9, 2020 в 23:07  •  9 мин  •  читали 711 раз

Привет, дорогие друзья!


Небольшой оффтоп. Теперь можно подписаться на обновления блога с помощью push-уведомлений. Я постарался сделать этот механизм как можно менее надоедающим, типа нет так нет. Также, хочу отметить, что весь этот функционал находится в режиме тестирования, поэтому в случае каких либо проблем я заранее прошу прощения.


Сегодня мы попробуем поднять Robot Operating System на тазике из призмы (конечно, нет).

На самом деле мы будем поднимать ROS на raspberry pi zero w. В моем блоге мы уже устанавливали данный фреймворк на RPi, почитать об этом можно тут:


https://yungvldai.ru/article/praktika-2-ustanovka-ros-na-raspberry-pi-zero-w


Можно даже считать, что статья по ссылке выше это первая часть, а эта статья - вторая. В цикле ROS для raspberry pi.


Весь код, как обычно, можно посмотреть на гитхабе:


Хотя кодом сегодня мы не будем особо заниматься. В этой статье нас интересует вопрос настройки всего-всего.


Итак, мы поставили ros на RPi и с того момента прошло уже ~2 месяца. Однако, давайте подключимся по ssh к RPi, введем roscore и увидим, что все работает:

Терминал зависнет в таком состоянии, это нормально, нужно открыть новый.


Если нет, то попробуйте

source /opt/ros/kinetic/setup.bash

(вместо kinetic можно вставить свой дистрибутив)


Если даже это Вам не помогло, то, возможно, вам придется проделать все пункты из этого туториала.


Если же все хорошо, то идем дальше.


Пока что я предлагаю не парится с настройкой собственных пакетов и сделать следующее:

%lang(bash)%
sudo apt-get install autoconf
pip install eventlet python-socketio RPi.GPIO
cd ~
git clone https://github.com/sarfata/pi-blaster/ && cd pi-blaster
./autogen.sh
./configure
make
sudo make install
git clone https://github.com/pomirs-workers/pomirs_catkin_ws app && cd app
cd src/runner/src/lib
rm catch_bot && git clone https://github.com/pomirs-workers/catch_bot
cd catch_bot/lib
rm pi_pwm && git clone https://github.com/pomirs-workers/pi_pwm 
cd ~/app
catkin_make_isolated
source ./devel_isolated/setup.bash

Этот набор команд установит зависимости, склонит все репозитории, установит все сабмодули и соберет catkin workspace. После этого мы готовы к дальнейшей работе


Эти команды склонят вам мою репу. Там есть два пакета: connector и runner

Пакет connector требует кое какие дополнительные зависимости (eventlet, python-socketio).

pip install eventlet python-socketio

(Мы уже делали это)


После разрешения зависимостей запустить пакет можно так

rosrun connector __init__.py

Если выпадет ошибка нужно сделать

sudo chmod +x ./src/connector/src/__init__.py


Если все хорошо мы увидим:

Вывод говорит нам, что мы слушаем 8765 порт, по которому нам будут приходить команды.

Теперь нам опять нужно открыть новый терминал.


Пакету runner нужен только RPi.GPIO

pip install RPi.GPIO

(Мы уже делали это)


После этого пакет даже должен запуститься. Кстати, запускается он так:

rosrun runner node.py


Если выпадет ошибка нужно сделать

sudo chmod +x ./src/runner/src/node.py

Тогда пакет должен запуститься и мы увидим:


Таким образом в трех терминалах на RPi у нас запущен ROS мастер и 2 ноды, что же нам с этим делать?


** Команды далее нужно выполнять на вашем компьютере **


Возьмем код из этой статьи

cd ~
git clone https://github.com/yungvldai-practice-2020/web-bot-controller webapp
cd webapp
npm install && npm run serve

(Нужны nodejs и npm)


немного его переделаем, чтобы можно было отправлять point событие с таким пейлоадом: <x>;<y>;<z> (обычная строка)


На localhost:8080 у нас открылось приложение

(если порт занят, откроется на 8081, потом на 8082 и т.д.)


Откроем веб приложение из браузера


Нажимаем на стрелочки и вуаля: