Инструменты пользователя

Инструменты сайта


courses:ros:class1

Занятие № 1. Введение в среду

По завершении занятия студент должен:
  • установить среду
  • уметь писать простые программы, взаимодействующие с ROS
Содержание
  • Демонстрация примера с использованием rviz
  • Описание структуры общения node-topic
  • Описание простой программы Hello world
Как написать программу

В первую очередь необходимо создать workspace

$ mkdir -p ~/<put_your_path_here>/workspace/src
$ cd ~/<put_your_path_here>/workspace/src
$ catkin_init_workspace

После выполнения этой команды создастся только ссылка на CMakeLists.txt, однако, для утилиты catkin это будет означать, что рабочая область определена в дивектории workspace/ После сборки в директории workspace/ появятся папки devel/ и build/

Во-вторых, находясь в директории workspace/src/ необходимо создать пакет

$ catkin_create_pkg lab1

Дерево файловой системы должно выглядеть следующим образом:

workspace/
┣━━━━src/
┃    ┣━━━━CMakeLists.txt
┃    ┗━━━━lab1/
┃         ┣━━━━package.xml
┃         ┣━━━━CMakeLists.txt
┃         ┣━━━━...
┃         ┗━━━━src/
┃              ┗━━━━...
┣━━━━devel/
┃    ┗━━━━...
┗━━━━build/
     ┗━━━━...

В папке src/ необходимо расположить файлы исходного кода.

Задание
  • Скачать с github исправления сгенерированных файлов. (Обратите внимание, что заменить необходимо два файла, находящиеся в папке lab1/. CMakeLists, лежащий в workspace/src/ трогать не надо!)
  • Написать программу, передающую черепашке команду на движение в случайном направлении. Файл с кодом необходимо назвать lab1.cpp и расположить в папке src/
Краткое пояснение к заданию

У объекта класса NodeHandle

ros::NodeHandle <node_handle_name>;

есть метод, реализующий механизм отправки сообщений в топик с именем <topic_name>.

Это делается при помощи команды

ros::Publisher <publisher_name> = <node_handle_name>.advertise<msg_type>("<topic_name>",<size>);

где <topic_name> это имя топика, через который будут общаться publisher и subscriber; а <size> - размер буфера сообщений (а треугольные скобочки после advertize - это конкретизация шаблонной функции).

В данном случае имя топика можно получить, узнав, на какой топик подписан turtlesim_node. Тип сообщения можно узнать, выведя информацию о топике.

Информацию о том, из каких полей состоит сообщение можно узнать командой

rosmsg show <msg_type>

В тексте программы необходимо создать объект класса <msg_type> и наполнить его содержимым. Информативными являются поля msg.linear.x и msg.angular.z. Остальные поля сообщения не учитываются при обработке.

После того, как сообщение сформировано, его можно отправить в топик командой

<publisher_name>.publish (msg)