Тепловизионная камера¶
Вы можете подключить тепловизионную камеру к Raspberry Pi 5 на квадрокоптере и использовать полученные с нее данные для построения теплового изображения и определения температуры в отдельных точках кадра.
Принцип работы¶
Тепловизионная камера улавливает инфракрасное излучение, испускаемое окружающими объектами. Специальный датчик преобразует тепловое излучение в электрические сигналы. По полученным сигналам электроника тепловизора определяет распределение температур и формирует тепловое изображение объекта.
Используемый тепловизионный модуль имеет разрешение 256x192 пикселей и возвращает 2 кадра: обработанное тепловое изображение и матрицу температур.
Данные в ROS2¶
Драйвер clover2_thermal разделяет полученный от камеры кадр на тепловое изображение и матрицу температур. При стандартных настройках они публикуются в два топика с типом сообщения sensor_msgs/msg/Image:
Топик |
Кодировка ( |
Содержимое |
|---|---|---|
|
|
Обработанное тепловое изображение в оттенках серого. Каждый пиксель содержит значение яркости от 0 до 255. |
|
|
Матрица температур. Каждый пиксель содержит температуру в градусах Цельсия в виде 32-битного числа с плавающей точкой. |
Оба изображения имеют размер 256×192 пикселя. Пикселю теплового изображения соответствует элемент матрицы температур с теми же координатами. image_viz используется для просмотра изображения; температуру нужно брать из temperature.
Сборка и установка модуля¶
Тепловизионную камеру можно установить на квадрокоптер двумя способами.
Способ №1 (фронтальный):¶
Установите тепловизионную камеру в предусмотренное крепление для модуля камеры.
Установка тепловизионной камеры в крепление¶
Закрепите крепление с установленной камерой на дугах защиты, как показано на рисунке.
Установка тепловизионной камеры на карбоновые дуги защиты¶
Подсоедините USB-кабель из комплекта к камере.
Вставьте второй конец USB-кабеля в свободный USB-разъем Raspberry Pi 5.
Зафиксируйте подключенный кабель стяжками так, чтобы он не попадал в область вращения пропеллеров.
Способ №2 (горизонтальный):¶
Установите тепловизионную камеру в предусмотренное крепление для модуля камеры.
Установка тепловизионной камеры в крепление¶
С помощью винтов М3х8 закрепите крепление на нижней деке, как показано на рисунке.
Установка тепловизионной камеры на нижнюю деку¶
Подсоедините USB-кабель из комплекта к камере.
Вставьте второй конец USB-кабеля в свободный USB-разъем Raspberry Pi 5.
Зафиксируйте подключенный кабель стяжками так, чтобы он не попадал в область вращения пропеллеров.
Настройка¶
Запуск через clover2-settings¶
Чтобы включить тепловизионную камеру в Клевер необходимо открыть настройки:
Запустите узел следующей командой:
clover2-settings
Выберите группу additional_sensors, как показано на рисунке 5.
Рисунок 5 — Выбор группы additional_sensors в clover2-settings¶
В группе additional_sensors выберите настройку thermal_camera (см. рисунок 6) и включите её, установив значение true.
Рисунок 6 — Выбор пункта thermal_camera¶
Для сохранения изменений нажмите ctrl+S. Появится уведомление о сохранении, как показано на рисунке 7.
Рисунок 7 — Сохранение настройки тепловизионной камеры¶
Затем несколько раз нажмите esc чтоб выйти из приложения. Перезапустите сервис clover2:
sudo systemctl restart clover2
После успешного запуска драйвер будет публиковать кадры в топики /thermal_camera/image_viz и /thermal_camera/temperature.
Использование¶
В Python матрицу температур удобно получать через клиент Clover2:
from clover2 import Clover2
drone = Clover2()
temperature = drone.thermal_camera.get_temperature()
# Матрица NumPy имеет форму (192, 256), индексы задаются в порядке [y, x].
print(f"Температура в центре кадра: {temperature[96, 128]:.2f} °C")
Начало координат пикселей находится в левом верхнем углу: x увеличивается вправо, y — вниз. Метод get_temperature() возвращает последнюю полученную матрицу NumPy. При первом обращении он ожидает данные до 5 секунд и вызывает TimeoutError, если они не поступили. Для получения исходного ROS-сообщения используйте drone.thermal_camera.get_temperature_msg().