$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
Создадим на языке Python проект простых узлов: publisher (узел, публикующий сообщения в какую-нибудь тему в ROS) и subscriber (узел-слушатель сообщений из определенной темы ROS).
Для начала создадим проект в catkin (новая система построения пакетов в ROS, призванная заменить систему построения пакетов rosdep).
Для создания в catkin нового пакета beginner_tutorials выполняем следующие команды:
cd ~/ros catkin ws/src
catkin create pkg beginner tutorials std msgs rospy roscpp
При создании пакета сразу указываем зависимости. Система сообщает о создании нового пакета, и в каталоге src создается папка beginner_tutorials c необходимым набором файлов (рис. 4.37).
Внесем небольшие изменения в файл package.xml. В теги <name>, <version>, <description>, <maintainer>, <license>, <url>, <author> вносится информация о названии, версии, авторе, лицензии пакета. В теге <depends> указаны зависимости пакета. Все эти зависимости будут доступны в сборке и во время выполнения, поэтому мы добавим тег <run_depend> для каждой из них:
<run depend>roscpp</run depend>
<run depend>rospy</run depend>
<run depend>std msgs</run depend>
Далее переходим в наш пакет:
source devel/setup.bash roscd beginner tutorials
Затем пишем код. Создаем каталог scripts и в ней файл taker.py. Заносим в него код (листинг 4.9) и даем ему права на выполнение:
mkdir scripts cd scripts
touch talker.py sudo nano talker.py sudo chmod +x talker.py
Листинг 4.9. Файл taker.py
Скрипт talker.py каждую секунду отправляет сообщение типа String в тему chatter. Содержимое сообщения: "hello world" — c добавлением системного времени.
Создаем скрипт subscriber (слушателя) — listener.py:
cd scripts touch listener.py sudo nano listener.py sudo chmod +x listener.py
Содержимое для файла listener.py приведено в листинге 4.10.
Листинг 4.10. Файл listener.py
Обратите внимание — мы применяем CMake1 в качестве нашей системы сборки. Да, вы должны использовать ее даже для узлов Python. Это делается для уверенности, что создается автоматически сгенерированный Python-код для сообщений и сервисов.
cd ~/ros catkin ws catkin make
Теперь проверим работу нашего пакета beginner_tutorials.
Запускаем в первом терминале:
roscore
Во втором терминале запускаем на выполнение скрипт talker.py из пакета beginner_ tutorials:
rosrun beginner tutorials talker.py
И наблюдаем ежесекундную выдачу сообщений скриптом talker.py в тему chatter (рис. 4.38).
терминале запускаем на выполнение слушатель — скрипт listener.py:
rosrun beginner tutorials listener.py
И видим получение сообщений скриптом listener.py сообщений из темы chatter (рис. 4.39).
Командами rostopic list и rosnode list смотрим список тем и узлов (рис. 4.40).
1 CMake (от англ. cross platform make) — кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода.