Skip to content

DmKazakov/Rviz-Project

Repository files navigation

Постановка задачи

Проект связан с 3D визуализатором RViz, одна из проблем которого заключается в том, что буфер для преобразования координат хранит информацию 10 последних минут, в чем не всегда есть необходимость и что в некоторых случаях приводит к значительному потреблению памяти. Цель - предоставить пользователю возможность самому выбирать нужный ему размер буфера.

Описание решения

В репозиторий помещены следующие измененные файлы:

  • src/rviz/src/rviz/visualizer_app.cpp
  • src/rviz/src/rviz/frame_manager.h
  • src/rviz/src/rviz/frame_manager.cpp
  • src/rviz/src/rviz/visualization_frame.h
  • src/rviz/src/rviz/visualization_frame.cpp
  • src/rviz/src/rviz/visualization_manager.h
  • src/rviz/src/rviz/visualization_manager.cpp

В visualizer_app.cpp была добавлена обработка нового ключа: -t, за которым в командной строке должен следовать желаемый размер буфера в секундах. Значение переменной с данным параметром передается между фунциями и методами в вышеперечисленных файлах и доходит до конструктора FrameManager, где и происходит инициализация размера. Если ключ не указан, то значением по умолчанию будет 1 минута. Детальные изменения можно посмотреть в pull request: DmKazakov/rviz#1.

Тестовый пример

Для начала нужно заменить исходные файлы на файлы из репозитория и скомпилировать. Убедимся в изменении размера буфера, пронаблюдав за потреблением памяти. Для примера будем использовать turtleslim. Сначала установка:
sudo apt-get install ros-lunar-ros-tutorials ros-lunar-geometry-tutorials ros-lunar-rviz ros-lunar-rosbash ros-lunar-rqt-tf-tree

В первом терминале выполняем команду:
roslaunch turtle_tf turtle_tf_demo.launch

Во втором запускаем rviz с буфером в 1 минуту:
rosrun rviz rviz -t 60 -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz

Посмотрим на потребление памяти в системном мониторе. Стабилизация происходит на 31.6 МБ.

Теперь запустим rviz c буфером в 10 минут:
rosrun rviz rviz -t 600 -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz

Размер буфера был увеличен и потребление памяти оказывается 41.5 МБ.

Автоматическое тестирование

Предыдущий пункт можно автоматизировать с помощью скрипта. Перед запуском необходимо так же утановить демо.

Запуск:
./test.sh first_buffer_size second_buffer_size
first_buffer, second_buffer - размеры буфферов в секундах

Скрипт запустит rviz с указанными размерами буфферов, даст им время заполниться и проверит, что если first_buffer_size и second_buffer_size отличаются в X раз, то потребления памяти буфферами соотвествующих процессов отличаются не более чем в X+eps раз не менее чем в X-eps раз.

К сожалению, при маленьких размерх буффера на потребление памяти в первую очередь влияют други факторы, так что тестирование корректно лишь при достаточно больших значениях (приблизительно более 2 минут).

About

II term

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published