=== Занятие № 5. Navigation_stack === В среде ROS существует набор пакетов, описывающих поведение роботов, выполняющих задачу SLAM. На самом деле робот решает некоторые дополнительные задачи, как то: * считывает информацию с датчиков; * передаёт информацию двигателям; * обрабатывает входные сигналы управляющего воздействия; и так далее Набор пакетов navigation_stack выполняет все эти действия. На самом деле цель этого пакета в том, чтобы упростить перенос ПО, связанного со SLAM, на реальных роботов. navigation_stack использует строгую иерархию топиков и сообщений. Таким образом, каждый компонент может быть заменён на аналогичный, если только он поддерживает такую же структуру топиков, на которые он подписан и в которые он пишет. Полная структура пакетов, входящих в navigation_stack представлена на вики http://wiki.ros.org/navigation Для того, чтобы воспользоваться рабочей версией, необходимо воспользоваться инструкцией, представленной на [[https://github.com/OSLL/multibot| гитхабе]]. Скачав все требуемые пакеты и выполнив catkin_make в созданной директории catkin_ws/, можно запустить симулятор командой roslaunch map_merger test_one.launch откроется несколько окон, среди которых будут: *rviz {{courses:ros:снимок_экрана_от_2016-10-10_14-24-07.png|rviz}} *sage {{courses:ros:снимок_экрана_от_2016-10-10_14-24-21.png|sage}} *консли {{courses:ros:снимок_экрана_от_2016-10-10_14-24-47.png|console}} Если сделать активным окно teleop_twist_keyboard.py, то клавишами, указанными в консоли, можно управлять роботом. При этом в rviz будет нарисована карта, какой себе её представляет робот после проделывания алгоритма SLAM (в данном случае используется алгоритм, который называется gmapping). В sage нарисована карта и реальное перемещение робота по ней. Карта располагается в файле /catkin_ws/src/aau_multi_robot/map_merger/world/small_world.pgm Пакеты, используемые в данном симуляторе можно увидеть, посмотрев на rqt_graph: {{courses:ros:снимок_экрана_от_2016-10-10_14-18-57.png|rqt_graph}} На схеме видно, что ключевую роль в этом симуляторе играет slam_gmapping. Как было сказано выше, на этом месте может быть любой SLAM. Перемещая робота с использованием клавиатуры можно наблюдать, что gmapping ощутимо корректирует данные одометрии, выстраивая карту, похожую на введённую. Построенная карта всё же имеет погрешности. Эти погрешности возникают из-за несовершенства реализации предложенного алгоритма SLAM. Названия топиков достаточно красноречиво говорят об их предназначении, однако всегда можно узнать содержимое этих топиков с помощью команды rostopic echo. Но необходимо помнить, что почти в каждый топик сообщения посылаются с очень высокой частотой.