This shows you the differences between two versions of the page.
courses:ros:lab1 [2018/10/05 05:02] anton.filatov |
courses:ros:lab1 [2022/12/10 09:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Задание ==== | ||
- | * Скачачать с [[https://github.com/anyfilatov/ROS-manuals/tree/master/forLab1|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. Тип сообщения можно узнать, выведя информацию о топике. | ||
- | Команды для этого: | ||
- | |||
- | rosnode list | ||
- | rosnode info <node_name> | ||
- | rostopic info <topic_name> | ||
- | |||
- | Информацию о том, из каких полей состоит сообщение можно узнать командой | ||
- | rosmsg show <msg_type> | ||
- | В тексте программы необходимо создать объект класса <msg_type> и наполнить его содержимым. Информативными являются поля msg.linear.x и msg.angular.z. Остальные поля сообщения не учитываются при обработке. | ||
- | |||
- | После того, как сообщение сформировано, его можно отправить в топик командой | ||
- | <publisher_name>.publish (msg) | ||
- | |