сотрудников ❏ 100+ публикаций в 2018 году ❏ МИП «Визиллект Сервис» ❏ 5 крупных проектов за 5 лет ❏ 100% поддержка исходного кода ❏ Владение ключевыми РИД Лаборатория зрительных систем ИППИ РАН
реконструкции ❏ Методы и технологии обучения машин ❏ Комплексирование и фильтрация данных ❏ Проблемы «слепой» автокалибровки ❏ Модели внимания человеческого зрения ❏ Цвет и мультиспектральная визуализация Лаборатория зрительных систем ИППИ РАН
❏ Оптимизирован по цене аппаратуры и обслуживания (без лидаров и оптопар) ❏ Качество классификации 99,7%+ при любых погодных условиях ❏ Установлен на 300+ полос трасс М-1, М-4 и ЗСД ❏ 100 000+ строк «собственного» C++ кода: распознающее ядро, система визуализации и отладки, инструментарий обучения, БД истории событий Автоматический классификатор транспортных средств для контроля тарификации Программно-аппаратный комплекс «АКТС-4»
времени для технологической цепочки горно- обогатительного комбината ❏ Чувствительность 99%, избирательность 99,999% ❏ Используется в серийных сепараторах РГС-1 НПП «Буревестник» ❏ В сепараторе компании «Aliud» впервые успешно реализован алгоритм детектирования закрытых алмазов ❏ Разработка для ОСРВ “QNX”, скорость обработки – 200 мкс/скан на Atom D525 ПО для рентгенографических сепараторов алмазосодержащей руды
транспортного средства в экстремальных условиях съемки (большие углы, грязь на номере) ❏ Система лицензирована для использования одним из крупнейших интеграторов в Китае ❏ Работа с кадрами низкого качества и наличием артефактов (загрязнение и др.) ❏ Малое энергопотребление – без видеокарт ❏ Работа в многополосном режиме
для распознавания окружения, локализации, управления движением, комплексирования данных сенсоров, удаленного мониторинга и контроля ❏ Полностью автономное ТС, передвигающееся по фиксированному маршруту со скоростью до 20 км/ч ❏ Визуальная система навигации и распознавания препятствий на базе 6 оптических камер (без использования лидаров и GPS) ❏ Около 1000 пассажиров перевезено во время празднования 870-летия Москвы
сервисов, публикаций, подписок нода ❏ Каждый нод тестируется отдельно ❏ Инструменты: ❏ Google Test (С++) Unittest (Python) ❏ rostest Тестирование кода на уровне нодов
и совместной логики работы ❏ Тестируются 2 и более нодов ❏ Инструменты: ❏ Google Test (С++) Unittest (Python) ❏ rostest Тестирование кода на уровне интеграции нодов
отдельных модулей (функций, классов, библиотек) ❏ Цель модульного тестирования — изолировать отдельные части программы и показать, что по отдельности эти части работоспособны 27
наборов тестов - CamelCased ❏ Наименование тестовых сценариев - camelCased // Component to be tested #include "foo/foo.h" // Bring in gtest #include <gtest/gtest.h> // Declare a test TEST(TestSuiteName, testCaseName) { // test things here, calling EXPECT_* and/or ASSERT_* macros as needed }
Наименование наборов тестов - CamelCased ❏ Наименование тестовых сценариев - camelCased // Run all the tests that were declared with TEST() int main(int argc, char **argv){ testing::InitGoogleTest(&argc, argv); // ros::init(argc, argv, "tester"); // ros::NodeHandle nh; return RUN_ALL_TESTS(); }
Наименование наборов тестов - CamelCased ❏ Наименование тестовых сценариев - camelCased // Run all the tests that were declared with TEST() int main(int argc, char **argv){ testing::InitGoogleTest(&argc, argv); ros::init(argc, argv, "tester"); ros::NodeHandle nh; return RUN_ALL_TESTS(); }
## Add gtest based cpp test target and link libraries catkin_add_gtest(${PROJECT_NAME}_test test/foo_tests.cpp) if(TARGET ${PROJECT_NAME}_test) target_link_libraries(${PROJECT_NAME}_test ${PROJECT_NAME}) endif() ./bin/test/foo_test
тестирование группы модулей ❏ Цель интеграционного тестирования - проверка правильного функционирования подсистем ❏ Тестирование выполняется через интерфейсы т.е. методом «чёрного ящика» ❏ Входом интеграционного тестирования являются компоненты, прошедшие модульное тестирование
проводить интеграционное тестирование систем состоящих из 2 и более нодов ❏ Для написания сценариев тестирования используется синтаксис .launch-файлов с тэгом <test> ❏ Запуск rostest: rostest <имя пакета> <имя теста>.test
не могут быть сломаны или которые нельзя починить (системные вызовы) ❏ Чужие библиотеки (стандартная библиотека, и.т.д.). Такие модули уже должны быть оснащены своими тестами ❏ Тривиальные функции и модули
же код. Его нужно... ❏ ...писать ❏ ...поддерживать ❏ ...рефакторить ❏ Тесты полезны только при одном условии ❏ При наличии непрерывной интеграции (Continuous Integration, CI)
Victor Gonzales Pacheco ❏ Доклад “Effective C++ Testing Using Google Test”, Zhanyong Wan ❏ Инструмент для тестирования надежности/восстановления системы (Chaos Monkey для ROS): https://github.com/ros-testing/roschaos ❏ Инструмент для генерации псевдослучайных данных для ROS- топиков: https://github.com/ros-testing/hypothesis-ros