Робот для duckietown, урок 2: подключение и программирование видеокамеры на raspberry pi.

Мы поставили перед собой задачу построить мобильную платформу которая будет двигаться автономно используя дорожную разметку и дорожным знаком. Для их распознавания мы будем использовать исключительно видеокамеру.
Для работы с видеоизображением нам понадобиться установить на наш контроллер (плата Raspberry Pi) несколько программных пакетов, в том числе:

Python 3язык программирования Python 3 и IDE (среда разработки для него)
Библиотека NumPy для языка Python 3эта библиотека позволит нам эффективно работать с массивами данных. Все изображения с нашей видеокамеры будем преобразовывать в массив данных , где каждому пикселю на изображении соответствует свой элемент массива с опреденным значением (интенсивностью цвета).
Библиотека OpenCV для Python 3библиотека для работы с изображениями и видео.
Набор дополнительных кодеков и инструментовнабор библиотек для работы с различными форматами изображений (jpeg, tiiff и др.) и видео (mp4, xvid, h264) и другие.

Так как данные пакеты не установлены в системе raspbian по умолчанию, нам придется сделать это вручную. Приступим!

1. Подключение камеры к raspberry pi

Для начала мы разберемся как правильно и безопасно подключить камеру к плате Raspberry Pi.
Подробно подключение описано по ссылке: https://thepihut.com/blogs/raspberry-pi-tutorials/16021420-how-to-install-use-the-raspberry-pi-camera

  1. Подключаем шлейф камеры в соответствующий разъем на плате. При подключении и работе с камерой, будьте аккуратны, по возможности, используйте заземление, чтобы снять статическое напряжение с рук, например, прикоснитесь к батарее. Камера очень чувствительна и в процессе работы над проектом одна камера сгорела от статики.
Разъем для поключения камеры на raspberry pi
Рис. 1 Разъем для подключения шлейфа от камеры на плате Raspberry Pi

2. После подключения камеры ее нужно активировать в настройках. На плате распберри это можно сделать через терминал (вызывается сочитанием клавиш ctrl + alt + t), используя команду:

sudo raspi-config

В открывшемся окне настроек переходим в раздел Interfacing options — P1 Camera — Enable. После сохранения настроек скорее всего понадобиться перезагрузить плату. В современных версиях raspbian активировать камеру можно также через раздел меню preferences — raspberry pi configuration — interfaces.

Меню включения камеры через терминал (sudo raspi-config)
Рис. 2 Меню включения камеры через терминал (sudo raspi-config)

2. Используем камеру

Съемка фото

Для получения фотоизображений с камеры можно использовать команду raspistill в терминале. Например, используя команду:

raspistill -o image.jpg

Вы сделаете фотоснимок с камеры в папку в которой находитесь.

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

Съемка видео

Для съемки видео на плате raspberry используется команда raspivid . Пример реализации:

raspivid -o video.h264 -t 10000

Это команда в терминале запускает съемку видео длительностью 10000 милисекунд (или 10 секунд). Подробная инструкция по настройкам и атрибутам видеозаписи на сайте производителя доступна по ссылке.

3. Доступ к камере с помощью библиотеки OpenCV на языке программирования Python

Хорошая инструкция на русском языке, только мы не будем использовать виртуальное окружение. http://robotclass.ru/articles/raspberrypi-3-opencv-3-install/

3.1. Установка зависимостей

Начнем с проверки наличия обновления и их установки:

sudo apt-get update
sudo apt-get upgrade

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

dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n

Удалить ненужные пакеты можно с помощью команды. Например, приведенная ниже команда удаляет wolfram engine:

sudo apt-get purge wolfram-engine

Далее устанавливаем необходимую среду разработки и пакеты:

sudo apt-get install build-essential cmake pkg-config

Устанавливаем пакеты для работы с форматами изображений JPEG, PNG, TIFF, и т.д.

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

Установка пакетов для работы с различными форматами видео:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev

Пакеты для создания простых экранных форм:

sudo apt-get install libgtk2.0-dev

Ускоренные операции над матрицами:

sudo apt-get install libatlas-base-dev gfortran

Заголовочные файлы языка python версий 2.7 и 3. у нас на плате они уже были установлены ранее:

sudo apt-get install python2.7-dev python3-dev

3.2 Менеджер пакетов pip и библиотека numpy

Установим менеджер пакетов pip с его помощью мы сможем легко устанавливать дополнительные библиотеки для языка python

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Для работы в python 3 рекомендуем установить pip3:

sudo apt install python3-pip

Установим библиотеку для работы с массивами данных на языке python (именно в числовой массив мы будем преобразовывать наши изображения для их последующей обработки:

pip3 install numpy
Рис. 3 Устанавливаем необходимые пакеты через терминал. Пакет numpy успешно установлен

3.3 Скачиваем и устанавливаем OpenCV

Мы установим библиотеку opencv с помощью менеджера библиотек для языка python — pip, который скачивали ранее. Это займет не больше минуты.

pip3 install opencv-python

В интернете вы можете найти инструкции в которых библиотеку opencv рекомендуют собирать с помощью пакета cmake, но , во-первых, это занимает много времени, от двух часов, во-вторых, потребует от вас длительных танцов с бубном.
На дату написания данной статьи на плату Raspberry Pi 3b+, с установленной операционной системой Raspbian stratch мы успешно установили OpenCV версии 3.4.4 через менеджер библиотек pip.

4. Проверяем установленное программное обеспечение (библиотека OpenCV и среда разработки Python3) в работе.

4.1 Проверка OpenCV и Python.

Запускаем среду разработки Python3 через меню. Также, возможно сделать это через командную строку прописав в ней:

python3

Теперь выполним простейший алгоритм с использованием библиотеки OpenCV. Сначала, загрузим библиотеку:

import cv2

Затем запросим у интерпретатора версию данной библиотеки:

cv2.__version__

Если она установлена , вы получите в ответ: «3.4.4». Либо другую версию, если вы устанавливали ее. Это значит, что все установилось корректно.

4.2 Удаляем временные файлы и восстанавливаем размер файла подкачки.

Полезные ссылки:

  1. Инструкция по подключению камеры , установке и настройке opencv и python на raspberry pi на английском: https://www.pyimagesearch.com/2015/02/23/install-opencv-and-python-on-your-raspberry-pi-2-and-b/
  2. Инструкция по установке и настройке opencv на raspberry pi на русском: http://robotclass.ru/articles/raspberrypi-3-opencv-3-install/
  3. Еще одна краткая инструкция как установить opencv3 на python3 на английском https://www.deciphertechnic.com/install-opencv-python-on-raspberry-pi/

Предыдущие уроки:

  1. Урок № 1 в котором мы проектировали и собирали корпус робота для соревнований duckietown

Добавить комментарий

Ваш e-mail не будет опубликован.