📚
ROS Robotics Projects
  • Титульная страница
  • Термины
  • Глава 1. Начало работы с разработкой приложений ROS Robotics
    • Подглава 1.1 Начало работы с ROS
      • Подглава 1.1.1 Дистрибутивы ROS
      • Подглава 1.1.2 Поддерживаемые операционные системы
      • Подглава 1.1.3 Роботы и датчики, поддерживаемые ROS
      • Подглава 1.1.4 Почему ROS?
    • Подглава 1.2 Основы ROS
      • Подглава 1.2.1 Уровень файловой системы
      • Подглава 1.2.2 Уровень графов вычислений
      • Подглава 1.2.3 Уровень сообщества ROS
      • Подглава 1.2.4 Общение в ROS
    • Подглава 1.3 Клиентские библиотеки ROS
    • Подглава 1.4 Инструменты ROS
      • Подглава 1.4.1 Rviz (Визуализатор ROS)
      • Подглава 1.4.2 rqt_plot
      • Подглава 1.4.3 rqt_graph
    • Подглава 1.5 Симуляторы ROS
    • Подглава 1.6 Установка ROS kinetic на Ubuntu 16.04 LTS
      • Подглава 1.6.1 Начало работы с установкой
        • Подглава 1.6.1.1 Настройка репозиториев Ubuntu
        • Подглава 1.6.1.2 Настройка source.list
        • Подглава 1.6.1.3 Настройка ключей
        • Подглава 1.6.1.4 Установка ROS
        • Подглава 1.6.1.5 Инициализация rosdep
        • Подглава 1.6.1.6 Настройка среды ROS
        • Подглава 1.6.1.7 Получение rosinstall
    • Подглава 1.7 Настройка ROS на VirtualBox
    • Подглава 1.8 Настройка рабочего пространства ROS
    • Подглава 1.9 Возможности для ROS в отраслях и исследованиях
    • Подглава 1.10 Вопросы
    • Подглава 1.11 Заключение
  • Глава 2. Обнаружение и отслеживание лиц с использованием ROS, OpenCV и Dynamixel Servos
    • Подглава 2.1 Обзор проекта
    • Подглава 2.2 Аппаратные и программные предпосылки
      • Подглава 2.2.1 Установка зависимых пакетов ROS
        • Подглава 2.2.1.1 Установка пакета usb_cam ROS
          • Подглава 2.2.1.1.1 Создание рабочей области ROS для зависимостей
    • Подглава 2.3 Взаимодействие Dynamixel с ROS
      • Подглава 2.3.1 Установка пакетов ROS dynamicixel_motor
    • Подглава 2.4 Создание ROS-пакетов для трекера лица
      • Подглава 2.4.1 Интерфейс между ROS и OpenCV
    • Подглава 2.5 Работа с ROS-пакетом для отслеживания лиц
      • Подглава 2.5.1 Понимание кода трекера лица
      • Подглава 2.5.2 Понимание CMakeLists.txt
      • Подглава 2.5.3 Файл track.yaml
      • Подглава 2.5.4 Файлы запуска
      • Подглава 2.5.5 Запуск узла отслеживания лица
      • Подглава 2.5.6Пакет face_tracker_control
        • Подглава 2.5.6.1 Файл запуска start_dynamixel
        • Подглава 2.5.6.2 Файл запуска контроллера панорамирования
      • Подглава 2.5.7 Файл конфигурации контроллера панорамирования
      • Подглава 2.5.8 Файл конфигурации параметров сервосистемы
      • Подглава 2.5.9 Узел контроллера трекера лица
      • Подглава 2.5.10 Создание CMakeLists.txt
      • Подглава 2.5.11 Тестирование пакета управления трекером лица
      • Подглава 2.5.12 Соединение всех узлов вместе
      • Подглава 2.5.13 Закрепление кронштейна и настройка цепи
      • Подглава 2.5.14 Финальный запуск
    • Подглава 2.6 Вопросы
    • Подглава 2.7 Заключение
Powered by GitBook
On this page

Was this helpful?

  1. Глава 2. Обнаружение и отслеживание лиц с использованием ROS, OpenCV и Dynamixel Servos

Подглава 2.5 Работа с ROS-пакетом для отслеживания лиц

PreviousПодглава 2.4.1 Интерфейс между ROS и OpenCVNextПодглава 2.5.1 Понимание кода трекера лица

Last updated 5 years ago

Was this helpful?

Мы уже создали или скопировали пакет face_tracker_pkg в рабочую область и обсудили некоторые из его важных зависимостей. Теперь мы собираемся обсудить, что именно делает этот пакет!

Этот пакет состоит из узла ROS с именем face_tracker_node, который может отслеживать лица с помощью API OpenCV и публиковать центроид лица в теме. Вот блок-схема работы face_tracker_node:

Давайте обсудим вещи, связанные с face_tracker_node. Один из разделов, который может быть вам незнаком, - это классификатор Face Haar:

  • Face Haar классификатор: Каскадный классификатор на основе признаков Хаара - это подход машинного обучения для обнаружения объектов. Этот метод был предложен Полом Виола и Майклом Джонсом в их работе «Быстрое обнаружение объектов» с использованием расширенного каскада простых функций в 2001 году. В этом методе каскадный файл обучается с использованием положительного и отрицательного образца изображения, и после обучения этот файл используется для обнаружения объекта.

  • track.yaml: Это файл параметров ROS, имеющий такие параметры, как путь к файлу Haar, topic входного изображения, topic выходного изображения и флаги для включения и отключения отслеживания лица. Мы используем файлы конфигурации ROS, потому что мы можем изменить параметры узла без изменения исходного кода трекера лица. Вы можете получить этот файл из face_tracker_pkg/config/track.xml.

  • Узел usb_cam. В пакете usb_cam есть узел, публикующий поток изображений с камеры в сообщениях ROS Image. Узел usb_cam публикует изображения с камеры в topic /usb_cam/raw_image, и этот topic подписывается узлом отслеживания лица для обнаружения лица. Мы можем изменить topic ввода в файле track.yaml, если потребуется.

  • face_tracker_control: это второй пакет, который мы собираемся обсудить. Пакет face_tracker_pkg может обнаруживать лица и определять центр тяжести лица на изображении. Сообщение центроида содержит два значения, X и Y. Мы используем пользовательское определение сообщения для отправки значений центроида. Эти значения центроида подписываются узлом контроллера и перемещают Dynamixel для отслеживания лица. Dynamixel контролируется этим узлом.

Вот файловая структура face_tracker_pkg:

Давайте посмотрим, как работает код отслеживания лица. Вы можете открыть файл CPP по адресуface_tracker_pkg/SRC/face_tracker_node.cpp, Этот код выполняет обнаружение лица и отправляет значение центроида в topic.

Мы рассмотрим и поймем некоторые фрагменты кода.

В нашем случае мы используем обученный файл классификатора Haar вместе с исходным кодом OpenCV. Вы получите эти файлы классификатора Хаара из папки данных OpenCV (). Вы можете заменить нужный файл Haar в соответствии с вашей задачей. Здесь мы используем классификатор лица. Классификатор это XML-файл, в котором есть теги, содержащие признаки лица. После того, как функции внутри XML совпадают, мы можем извлечь интересующую область (ROI) лица из изображения, используя API-интерфейсы OpenCV. Вы можете проверить классификатор Хаара этого проекта из face_tracker_pkg/data/face.xml.

https://github.com/opencv/opencv/tree/master/data
Рисунок 15: Блок-схема face_tracker_node
Рисунок 16: Файловая структура face_tracker_pkg