Создание тестового проекта


Предыдущая | Следующая

Создадим на языке 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) — кроссплатформенная система автоматизации сборки про­граммного обеспечения из исходного кода.