==== Занятие № 1. Введение в среду ==== == По завершении занятия студент должен: == * установить среду * уметь писать простые программы, взаимодействующие с ROS == Содержание == * Демонстрация примера с использованием rviz * Описание структуры общения node-topic * Описание простой программы Hello world == Как написать программу == В первую очередь необходимо создать workspace $ mkdir -p ~//workspace/src $ cd ~//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/ необходимо расположить файлы исходного кода. == Задание == * Скачать с [[https://github.com/anyfilatov/ROS-manuals/tree/master/forLab1|github]] исправления сгенерированных файлов. (Обратите внимание, что заменить необходимо два файла, находящиеся в папке lab1/. CMakeLists, лежащий в workspace/src/ трогать не надо!) * Написать программу, передающую черепашке команду на движение в случайном направлении. Файл с кодом необходимо назвать lab1.cpp и расположить в папке src/ == Краткое пояснение к заданию == У объекта класса NodeHandle ros::NodeHandle ; есть метод, реализующий механизм отправки сообщений в топик с именем . Это делается при помощи команды ros::Publisher = .advertise("",); где это имя топика, через который будут общаться publisher и subscriber; а - размер буфера сообщений (а треугольные скобочки после advertize - это конкретизация шаблонной функции). В данном случае имя топика можно получить, узнав, на какой топик подписан turtlesim_node. Тип сообщения можно узнать, выведя информацию о топике. Информацию о том, из каких полей состоит сообщение можно узнать командой rosmsg show В тексте программы необходимо создать объект класса и наполнить его содержимым. Информативными являются поля msg.linear.x и msg.angular.z. Остальные поля сообщения не учитываются при обработке. После того, как сообщение сформировано, его можно отправить в топик командой .publish (msg)