Skip to content

Камеры

Подключение внешних камер и работа с ними.

Flir Duo

Flir Duo

Flir Duo представляет собой первое в мире компактное, легкое радиометрическое средство отображения инфракрасного и видимого спектра, разработанное для профессионального использования на частных беспилотных летательных аппаратах (дронах).

Камера имеет возможность общаться с БПЛА по протоколу MAVLink. С его помощью можно изменять настройки, посылать команды на съемку фото и видео, передавать данные о местоположении аппарата.

Подключение

Для подключения камеры к полетному контроллеру Pixhawk необходимо воспользоваться штатным miniUSB-кабелем камеры. Соединяем выход PWM2 и PWM1 камеры с пинами RX и TX соответственно разъемов telem1 или telem2 контроллера.

Подключение Flir Duo

Встроенного аккумулятора у камеры нет, необходимо запитать ее по usb.

Настройка камеры

Для настройки камеры используется приложение Flir UAS для мобильного телефона. Приложение взаимодействует с камерой по Bluetooth.

Для того, чтобы камера общалась с полетным контроллером по протоколу MAVLink необходимо:

  • Включить bluetooth на камере (нажать на кнопку с соответствующим значком на камере - загорится синий светодиод).
  • Включить приложение на телефоне, оно произведет поиск камеры.
  • Подключиться к Flir Duo.
  • На вкладке Controller выбрать MAVLink как протокол для общения по Serial.

Настройка PX4

Для настройки полетного контроллера используйте приложение QGroundControl.​

Подключитесь к дрону, перейдите на панель настроек, на ней выберите пункт "Camera" - откроется страница настроек камеры. В выпадающем списке "Trigger Interface" выберите "MAVLink" (TRIG_INTERFACE=3).

Настройки Pixhawk

"Trigger mode" выберите в соответствии со своими задачами. "AUX Pins" не используются, можно оставить значения по умолчанию.

Управление настройками камеры с помощью виджета

Для получения доступа к настройкам выберите виджет Camera в выпадающем списке виджетов в правой части главного экрана QGC.

Виджет настроек камеры

В списке "Picture mode" можно выбрать режим стриминга и записи видео:

  • IR - картинка только с тепловизора
  • VIS - картинка только с обычной камеры
  • PIP - картинка-в-картинке

В списке "Color palette" можно выбрать цветовую палитру тепловизора:

  • Hot metal - от синего (холодный) до красного (горячий)
  • White hot - черно-белая палитра
  • Rainbow - радужная - от фиолетового до красного

Функция "Enable MSX" активирует наложение изображения с визуальной камеры на тепловизинное. Ползунок "MSX Strength" позволяет выбрать интенсивность наложения.

GitUp Git2P

GitUp

Камера имеет возможность удаленного управления с помощью подачи PWM сигнала на один из пинов microHDMI-порта, что делает ее подходящей для использования на беспилотниках.

Подключение

Для управления камерой PWM-сигналами требуется специальный кабель с выводом отдельного провода и земли для подсоединения к полетному контроллеру.

Распиновка разъема microHDMI

Выведенный провод и земля подсоединяются к соответствующим пинам одного из указанных в разделе "Camera" AUX-выводов.

Настройка PX4

Подсоединитесь QGroundControl'ом к своему контролеру. На панели настроек в разделе "Camera" в списке "Trigger interface" выберите "PWM" (TRIG_INTERFACE=4).

Камера реагирует на следующие значения PWM:

  • 1500 - нейтральное положение, камера ожидает следующей команды..
  • 2000 - однократное фото. Чтобы сделать следующее, необходимо послать нейтральное значение (1500), а потом снова 2000.
  • 1000 - начать запись видео. Для остановки необходимо послать нейтральное значение (1500), а потом снова 1000.

Foxtech Map-02

Foxtech Map-02

Беззеркальная 24-мегаписельная камера, разработанная специально для использования на дронах.

Подключение

Подсоедините провода, помеченные как "Photo" и "GND" в один из AUX-портов, указанных в параметре TRIG_PINS. Подведите питание 8.4В к соответствующим контактам.

Настройка PX4

Для корректной работы камеры, в течение десяти секунд после ее включения необходимо два раза нажать на спуск. Иначе она зависнет с ошибкой. Чтобы выполнить эту операцию, следует создать на sd-карте полетного контроллера файл /etc/extras.txt и записать в него следующие команды:

camera_trigger test
sleep 2
camera_trigger test

Камера работает по интерфейсу GPIO, поэтому на панели настроек в разделе "Camera" в списке "Trigger interface" выберите "GPIO" (TRIG_INTERFACE=1). "Trigger Pin Polarity" установите в "Low" (TRIG_POLARITY=0).

Seagull MAP2 (Sony a7, Sony RX1 r2 mk2)

Seagull MAP2

Для управления множеством различных камер существует устройство Seagull #MAP2. Оно представляет собой достаточно простой выключатель, реагирующий на PWM-сигналы. Это позволяет подключать широкий спектр кабелей для удаленного управления затвором.

Подключение

В комплекте с устройством идут два стандартных серво-кабеля. Ими необходимо соединить 1-й и 2-й выход Seagull MAP2 соответственно с двумя AUX-выходами Pixhawk'а, указанными в параметре TRIG_PINS (5 и 6 по умолчанию).

В mini-jack разъем устройства подсоединяется кабель, идущий непосредственно в камеру.

Настройка PX4

Подсоединитесь QGroundControl'ом к своему контролеру. На панели настроек в разделе "Camera" в списке "Trigger interface" выберите "Seagull MAP2" (TRIG_INTERFACE=2).

Canon M100

Canon M100

24-мегапиксельный беззеркальный фотоаппарат.

Конструктивные доработки

Для того, чтобы камера могла включаться в автоматическом режиме при подаче питания, необходима скоба, зажимающая кнопку включения. Вместо аккумулятора ставится заглушка, в нее вставляется БЕК, выдающий необходимые камере 7.2 вольта.

Подключение

Из заглушки через отверстие в крышке аккумуляторного отсека выводятся три провода:

  • плюс от аккумулятора коптера
  • земля
  • управляющий включением-выключением

Управляющий провод подключается к тому или иному пину GPIO Raspberry Pi и принимает высокий сигнал (3.3В) для включения и низкий для выключения камеры.

Для отправления команд камере и скачивания файлов, камеру необходимо подключить к RPi по USB.

Программные зависимости

Для обеспечения передачи команд между полетным контроллером и камерой используется фреймворк Robot Operating System (ROS). С помощью ROS'а необходимо запустить две ноды:

Управление камерой осуществляется с помощью библиотеки libgphoto2. Для проверки работоспособности и выполнения различных операций с камерой из командной строки удобно использовать утилиту gphoto2. Версии библиотеки и утилиты, начиная с которых поддерживается Canon M100:

  • gphoto2 - 2.5.15.1
  • libgphoto2 - 2.5.16.1

Инструкция по сборке libgphoto2 и gphoto2

  • удаляем установленные ранее пакеты (если были)
  • клонируем репозитории https://github.com/gphoto
  • устанавливаем libgphoto по инструкции (не забывая установить зависимости)

С установкой libgphoto проблем быть не должно, переходим к установке gphoto2:

  • выполняем в репозитории ghoto2 команду autoreconf --install (https://stackoverflow.com/questions/2705014/autoconf-automake-configure-ac2-option-%E2%88%92wall-not-recognized)
  • выполняем команду autoconf
  • и дальше по инструкции

Для работы с libgphoto2 из Python необходимо установить соответствующий Python-интерфейс командой sudo pip install gphoto2

Если gphoto2 выдает ошибку 53, "Сould not claim the usb device"

По всей видимости, что-то с правами на чтение-запись в usb-устройство. Есть мануал. Мне помогла строчка в файле /etc/udev/rules.d/10-local.rules: SUBSYSTEMS=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="32d1", GROUP="users", MODE="0666"

Алгоритм работы

За взаимодействие с камерой отвечает класс CanonCamera в файле src/external_camera.py. При старте ноды external_camera на пин питания камеры подается высокий сигнал (gpio.pi.write), ожидается ее определение библиотекой gphoto2 (CanonCamera.is_on). Как только камера задетектировалась, ее необходимо проинициализировать библиотекой gphoto2 (CanonCamera.__init_camera), после чего она готова к работе. Фотографирование осуществляется командой CanonCamera.capture_image, в параметры которой передается объект с gps-данными. Непосредственно на камеру через gphoto2 отправляется команда gphoto2.Camera().capture, которая возвращает либо имя файла в камере, либо информацию о произошедшей ошибке. В случае успешного выполнения, имя файла и объект с gps-данными сохраняется в очереди в файле.

Предполетная проверка

  • Запустить ноду external_camera.py
  • Направить камеру "вдаль", чтобы она могла сфокусироваться
  • Вызвать сервис /external_camera/capture_image для одиночного снимка
  • Вызвать сервис /external_camera/start_capture для начала серии снимков
  • Отснять пару десятков снимков, убедиться, что камера не переходит в режим сна в связи с отходящей скобой
  • Вызвать сервис /external_camera/stop_capture для остановки серии
  • Дождаться скачивания снимков и добавления в них координат
  • Посмотреть получившиеся фотографии, убедиться, что они не темные, не пересвеченные и т.д.

Всякие нюансы

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

Настройка PX4

Аналогично Flir Duo: выставляем TRIG_INTERFACE=3, общаемся по протоколу MAVLink.

Использование камер

Параметры PX4

В PX4 есть ряд параметров, управляющих соединением с камерой и ее поведением.

Режимы фотографирования

Режимы работы контролируются параметром TRIG_MODE:

Режим Значение Описание
0 Disable Фотографирование отключено
1 Time based, on command Срабатывание по MAVLink-команде MAV_CMD_DO_TRIGGER_CONTROL.
2 Time based, always on Постоянное срабатывание через равные промежутки времени, указанные в TRIG_INTERVAL
3 Distance based, always on Спуск будет срабатывать всякий раз, когда коптер преодолевает по горизонтали дистанцию, указанную в параметре TRIG_DISTANCE. Минимальное время между двумя срабатываниями, однако, ограничено TRIG_INTERVAL
4 Distance based, on command (Survey mode) Автоматически срабатывает во время полета по Survey-миссии

После смены этого параметра необходима перезагрузка контроллера.

Интерфейс взаимодействия

Драйвер работы с камерами поддерживает несколько интерфейсов, управляемых параметром TRIG_INTERFACE:

Интерфейс Значение Описание
1 GPIO Запускает GPIO интерфейс. Пины, указанные в параметре TRIG_PINS по команде выдают высокий или низкий сигнал (в зависимости от параметра TRIG_POLARITY).
2 Seagull MAP2 (over PWM) Запускает интерфейс Seagull MAP2, позволяющий устройству взаимодействовать с множеством поддерживаемых камер. Пины 1 и 2 Seagull должны быть включены в AUX пины, указанные в параметре TRIG_PINS (5 и 6 по умолчанию). В этом режиме PX4 поддерживает автоматическое управление питанием и keep-alive функцию камер с поддержкой Sony Multiport (например, QX-1)
3 MAVLink (forward via MAV_CMD_IMAGE_START_CAPTURE) Запускает интерфейс MAVLink. В этом режиме не выдается никакого сигнала на AUX-выходы. Происходит пересылка MAVLink-сообщения CAMERA_TRIGGER ко всем подключенным устройствам.
4 Generic PWM (IR trigger, servo) Запускает интерфейс, генерирующий ШИМ(PWM)-сигнал, позволяющий использовать инфракрасные триггеры или серво-подобные интерфейсы для управления камерой.

Ручное управление

Для получения доступа к функциям ручного управления камерами необходимо собрать прошивку из ветки нашего репозитория, а также собрать QGroundControl с дополнительными кнопками на панели. (TODO: собрать и залить все куда-нибудь)

Использование переключателей на пульте дистанционного управления

Для настройки нужного канала и значений PWM для срабатывания переключателей, используйте следующие параметры:

  • TRIG_PHOTO_CHAN - канал для фотографирования.
  • TRIG_PHOTO_PWM - уровень PWM для срабатывания затвора.
  • TRIG_PHOTO_NTRL - фото нейтраль.
  • TRIG_VIDEO_CHAN - канал для съемки видео.
  • TRIG_VIDEO_PWM - уровень PWM для начала/окончания съемки.
  • TRIG_VIDEO_NTRL - видео нейтраль.

Фото делается однократно при сигнале нужного уровня, чтобы сделать новое - надо сбросить в нейтраль (TRIG_NTRL) и снова послать сигнал. Видео стартует при достижении указанного сигнала и останавливается при сбросе в нейтраль.

Использование кнопок на панели

Кнопки в QGC

Для съемки фото используйте кнопку с изображением фотоаппарата. Для начала записи видео - кнопку с надписью "Start video". Для остановки записи нажмите ее снова.

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

Условное срабатывание вне миссий

На странице настроек камеры в QGroundControl в выпадающем списке "Trigger mode" вы можете выбрать режимы:

  • "Time based, always on" - затвор будет срабатывать все время, пока включен коптер через интервалы времени, указанные в параметре TRIG_INTERVAL.
  • "Distance based, always on" - затвор будет срабатывать всякий раз, когда коптер пройдет дистанцию, указанную в параметре TRIG_DISTANCE.

Создание миссий с использованием камер

Survey

Добавление геоданных в изображения

Для составления фотопланов необходимо, чтобы каждое изображение содержало в себе данные о координатах съемки.

Flir Duo при работе по MAVLink умеет самостоятельно подставлять геоданные в фотографии, для других же камер необходима постобработка.

В QGroundControl есть модуль, реализующий этот функционал.

Скачайте лог и фотографии, сделанные в процессе полета. Зайдите в раздел "GeoTag Images", укажите путь к файлу лога, директории с фотографиями и (опционально) директорию для обработанных фотографий.

QGC GeoTag