From ba5652c11502fd017f1a45453e541ea885bc6cc3 Mon Sep 17 00:00:00 2001 From: ontuo Date: Fri, 14 May 2021 16:01:33 +0300 Subject: [PATCH] some changes --- README.md | 79 +++++++++++--------- {exemple => example}/circul_detect.py | 0 {exemple => example}/find_filter.py | 0 {exemple => example}/mnist_trained_model.h5 | Bin {exemple => example}/number_detect.py | 0 pic/bsp/RGB.png | Bin 0 -> 13772 bytes pic/bsp/line_sensor.png | Bin 0 -> 31999 bytes pic/raspb/rasp16.png | Bin 0 -> 18238 bytes 8 files changed, 45 insertions(+), 34 deletions(-) rename {exemple => example}/circul_detect.py (100%) rename {exemple => example}/find_filter.py (100%) rename {exemple => example}/mnist_trained_model.h5 (100%) rename {exemple => example}/number_detect.py (100%) create mode 100644 pic/bsp/RGB.png create mode 100644 pic/bsp/line_sensor.png create mode 100644 pic/raspb/rasp16.png diff --git a/README.md b/README.md index d866da5..f2be60b 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,14 @@ ## Сервис раздел -- [Страница](https://www.waveshare.com/wiki/AlphaBot2-Pi) с роботом -- [Схема](https://www.waveshare.com/w/upload/9/91/AlphaBot2-Base-Schematic.pdf) части с мотороми и аккумами и контроллером заряда (НИЗ) -- [Схема](https://www.waveshare.com/w/upload/7/72/AlphaBot2-Pi-Schematic.pdf) части с креплением для малины (ВЕРХ) -- User [Manual](https://www.waveshare.com/w/upload/1/1f/Alphabot2-user-manual-en.pdf) -- Набор [даташитов](https://www.waveshare.com/wiki/AlphaBot2_Datasheet) с компонентами на плате -- Примеры ```wget https://www.waveshare.com/w/upload/e/ee/AlphaBot2-Demo.7z``` +- [Wiki-страница](https://www.waveshare.com/wiki/AlphaBot2-Pi) с общей информацией о роботе. +- [Принципиальная схема](https://www.waveshare.com/w/upload/9/91/AlphaBot2-Base-Schematic.pdf) платы-шасси робота. +- [Принципиальная схема](https://www.waveshare.com/w/upload/7/72/AlphaBot2-Pi-Schematic.pdf) платы-адаптера робота. +- User [manual](https://www.waveshare.com/w/upload/1/1f/Alphabot2-user-manual-en.pdf) +- Набор [документации](https://www.waveshare.com/wiki/AlphaBot2_Datasheet) на компоненты робота +- Примеры кода ```wget https://www.waveshare.com/w/upload/e/ee/AlphaBot2-Demo.7z``` -Примеры: +Скачивание и разархивированиеы: ```bash cd @@ -206,16 +206,18 @@ network={ ![rasp13](pic/raspb/rasp13.png) -7. Для работы с камерой вам потребуется доступ к рабочему столу Raspberry Pi, для этого нужно до установить необходимые пакеты, чтобы иметь возможность видеть рабочий стол. +7. Для работы с камерой вам потребуется доступ к рабочему столу Raspberry Pi, для этого нужно установить необходимые пакеты, чтобы иметь возможность видеть рабочий стол. -> Для Дальнейшей работы с этим сервисом нужно выполнить настройки из следующего раздела ```Настройка робота```. +> Для дальнейшей работы с этим сервисом нужно выполнить настройки из раздела ```Настройка робота```. + +Для начала установим на Raspberry Pi программы, необходимые для трансляции рабочего стола: ```bash sudo apt install realvnc-vnc-server realvnc-vnc-viewer vncserver ``` -После запуска последний команды в терминале появится что-то похожее на это: +После исполнения последний команды вы увидите схожий вывод в терминале: ```bash Running applications in /etc/vnc/xstartup @@ -227,13 +229,16 @@ Log file is /home/pi/.vnc/raspberrypi:2.log New desktop is raspberrypi:1 (192.168.2.108:1) ``` -Нужно запомнить ```raspberrypi:1``` т.к. это нужно будет использовать как адрес в клиенте. +Нужно запомнить ```raspberrypi:1```, эта строчка будет использоваться как адрес в клиенте. + +Теперь переходим к вашему рабочему компьютеру - откройте [ссылку](https://www.realvnc.com/en/connect/download/viewer/) (https://www.realvnc.com/en/connect/download/viewer/), и скачайте версию программы, подходящую под вашу операционную систему. Установите и запустите программу. +После включение вы увидете окно, вверху которого расположена форма для ввода. Введите туда ```raspberrypi:1``` и нажмите Enter. -Потом переходим сюда (https://www.realvnc.com/en/connect/download/viewer/) и качаем оттуда версию для вашей операционной системы. +![rasp16](pic/raspb/rasp16.png) ![rasp14](pic/raspb/rasp14.png) -Вводите туда пароль, нажимаете Enter. После чего вам предложат ввести логин и пароль от Raspberry Pi, напомню это pi а пароль raspberry. После чего вы увидите рабочий стол малины. +Вам предложат ввести логин и пароль от Raspberry Pi. Они стандартные - логин это ```pi```, а пароль - ```raspberry```. После этих действий вы увидите рабочий стол Raspberry Pi. ![rasp15](pic/raspb/rasp15.png) @@ -483,9 +488,11 @@ except KeyboardInterrupt: GPIO.cleanup() ``` -### RGB диоды +### RGB светодиоды + +![RGB](pic/bsp/RGB.png) -Для работы с RGB необходимо внести некоторые изменения в конфиг запуска расбери, т.к. такие светодиоды WS2812B требуют очень специфического сигнала управления. Реализовать его средствами linux не возможно, поэтому на помощь нам приходят такие модули как DMA и PWM. DMA позволяет передавать данные на светодиоды минуя центральный процессор, а PWM через управление скважностью позволяет передрать данные от DMA в требуемом формате. Но за такую реализацию нужно платить, поэтому одновременно со светодиодами нельзя использовать аудиокарту встроенную в малину. Собственно для ее отключения нам и нужно исправить настройки запуска, для чего: +Для работы с RGB светодиодами необходимо внести некоторые изменения в конфигурацию запуска Raspberry Pi, так как адресные светодиоды WS2812B требуют специфического сигнала управления. Реализовать его средствами linux не возможно, поэтому на помощь нам приходят такие модули как DMA и PWM. DMA позволяет передавать данные на светодиоды минуя центральный процессор, а PWM через управление скважностью позволяет передать данные от DMA в требуемом формате. Но за такую реализацию нужно платить, поэтому одновременно со светодиодами нельзя использовать аудиокарту, встроенную в Raspberry Pi. Для ее отключения нам и нужно исправить настройки запуска следующим образом: ```bash sudo nano /boot/config.txt @@ -504,13 +511,13 @@ hdmi_force_edid_audio=1 dtparam=audio=on ``` -превратив ее в такую: +таким образом: ```txt #dtparam=audio=on ``` -Так-же для работы необходимо установить дополнительные библиотеки, для чего необходимо сделать следующее: +Также для работы нужно установить дополнительные библиотеки, для чего сделаем следующее: ```bash sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel @@ -527,7 +534,7 @@ r.color(2, 0, 255, 0) r.color(3, 255, 0, 0) ``` -Такого-же эффекта можно добиться если указать не яркость каждого отдельного цвета, а применить название соответствующего цвета. +Такого же эффекта можно добиться если указать не яркость каждого отдельного цвета, а применить название соответствующего цвета. ```python r = rgb_led() @@ -550,7 +557,9 @@ r.color(3, "Red") ## Датчики линии -Для отслеживания линии в нижней части робота есть 5 оптических датчиков. Для простого примера можно просто считать с них значения: +![line](pic/bsp/line_sensor.png) + +Для отслеживания линии в нижней части робота есть 5 оптических датчиков. Для примера можно просто считать с них значения: ```python l = line_sensor() @@ -563,16 +572,16 @@ while True: ## Управление положением камеры -Для управлением положением камеры (2мя сервоприводами) здесь отвечает специальная микросхема - PCA9685, её необходимо задать угол поворота камеры и она будет его поддерживать, пока мы не передадим новое значение угла. Для реализации данного функционала можно воспользоваться следующей функцией: +Для управлением положением камеры (а оно регулируется с помощью кронштейна с двумя сервоприводами) здесь отвечает специальная микросхема - PCA9685. Принцип работы с ней следующий - ей задается угол поворота камеры и она будет его поддерживать, пока мы не передадим новое значение угла. Для реализации данного функционала можно воспользоваться следующей функцией: ```python c = CameraAngle() c.setCameraAngle(30, 90) ``` -Установит на 30 градусов по вертикальной оси и 90 градусов по горизонтальной. +Этот код установит камеру на 30 градусов по вертикальной оси и 90 градусов по горизонтальной. -Пример программы которая двигает камерой вправо и влево, а так-же вверх и низ: +Пример программы, которая двигает камерой вправо и влево, а также вверх и низ: ```python c = CameraAngle() @@ -589,7 +598,7 @@ while True: # Примеры простых программ -Для примера работы с роботом давайте реализуем программу движения по линии, по датчикам линии. Данная программа позволит двигаться роботу по замкнутому контуру который можно получить распечатав страницы 2,2,2,2,3,3,3,3,11 из документа с элементами трассы. +Для примера работы с роботом реализуем программу движения по линии с помощью датчиков линии. Данная программа позволит двигаться роботу по замкнутому контуру, который можно получить распечатав страницы 2,2,2,2,3,3,3,3,11 из документа с элементами трассы (документ linefollowtiles.pdf в папке docs). ```python from bsp import rgb_led, line_sensor, motor @@ -600,20 +609,20 @@ l = line_sensor() colors = {0:4, 1:3, 2:1, 3:0} -delta_sensor = 200 +delta_sensor = 200 # Пороговое значение срабатывания сенсора while True: - c = l.AnalogRead() + c = l.AnalogRead() # Получаем текущее значение датчика линии i = 0 for i in range(4): if c[colors[i]] < delta_sensor: - r.color(i, "Red") + r.color(i, "Red") # Включаем красный на светодиоде, соотвсетствующем датчику, обнаружевшему черную линиб else: - r.color(i, "Black") + r.color(i, "Black") # Выключаем светодиод, если нет i = i+1 - + # Начинаем поворачивать в зависимости от того, какие датчики заметил черную линию if c[1] < delta_sensor: m.setMotor(40,0) elif c[3] < delta_sensor: @@ -626,13 +635,15 @@ while True: m.setMotor(10, 10) ``` -В данном примере робот ездит по черной линии, также светодиодами подсвечивается сенсор под которым обнаружена линия. delta_sensor это пороговое значения срабатывания сенсора, оно может меняться в зависимости от освещения. Это значение можно узнать если воспользоваться примером выше который считывает значения с сенсоров. +В данном примере робот ездит по черной линии, светодиодами подсвечивается сенсор под которым обнаружена линия. delta_sensor - пороговое значения срабатывания сенсора, оно может меняться в зависимости от освещения. Это значение можно узнать если воспользоваться примером, который считывает значения с сенсоров. ## Компьютерное зрение -В рамках данного блока я предлагаю рассмотреть пример который позволит распознать зеленый круг, а также взаимодействовать с ним. Этот процесс состоит из 2х этапов, первое это подбор параметров, а второе это непосредственная работа с программой по распознаванию. +В рамках данного блока предлагается рассмотреть пример, который позволит распознать зеленый круг, а также взаимодействовать с ним. Этот процесс состоит из двух этапов: +1. подбор параметров; +2. непосредственная работа с программой по распознаванию. -Для реализации нужно сделать следующее: +Перейдем к примеру: 1. Поставим пакеты для работы с компьютерным зрением: @@ -641,7 +652,7 @@ sudo apt install libatlas-base-dev pip3 install numpy opencv-python ``` -2. Далее запускаем скрипт предназначенный для подбора параметров. +2. Далее запускаем скрипт, предназначенный для подбора параметров. ```python import cv2 @@ -717,11 +728,11 @@ cv2.destroyAllWindows() ![cv1](pic/CV/cv_1.png) -Суть происходящего в том что для того чтобы определить объект на фото или видео нам нужно выделить его контур, а для этого необходимо знать его цвет. Также для более удобной работы мы переводим цвет в HSV (тон, насыщенность, значение) представление. +Суть происходящего в том, что для того чтобы определить объект на фото или видео нам нужно выделить его контур, а для этого необходимо знать его цвет. Также для более удобной работы мы переводим цвет в HSV (тон, насыщенность, значение) представление. ![cv0](pic/CV/HSV_cone.png) -Наша задача подобрать минимальное и максимальное значения для 3х параметров h, s, v. Сначала нужно подобрать нижнюю границу параметра тона h (h1). По сути это и есть выбор того цвета который мы хоти распознать. Для этого нужно двигать первый ползунок до тех пор пока круг не станет быть виден. потом подгоняем максимальное значение h (h2) так чтобы круг все еще отчетливо был виден, но при этом эти 2 ползунка были максимально близки. Потом также подгоняем второй параметр s - это насыщенность, чем больше этот параметр, тем «чище» цвет, а чем ближе этот параметр к нулю, тем ближе цвет к нейтральному серому. Третий v - это яркость. +Наша задача подобрать минимальное и максимальное значения для трех параметров - H, S, V. Сначала нужно подобрать нижнюю границу параметра тона H (h1). По сути это и есть выбор того цвета, который мы хотим распознать. Для этого нужно двигать первый ползунок до тех пор пока круг не станет видемым. Потом подгоняем максимальное значение H (h2) так, чтобы круг все еще отчетливо был виден, но при этом эти два ползунка были максимально близки. Потом также подгоняем второй параметр S - это насыщенность, чем больше этот параметр, тем «чище» цвет, а чем ближе этот параметр к нулю, тем ближе цвет к нейтральному серому. Третий V - это яркость. В итоге должно получится что-то похожее на это: diff --git a/exemple/circul_detect.py b/example/circul_detect.py similarity index 100% rename from exemple/circul_detect.py rename to example/circul_detect.py diff --git a/exemple/find_filter.py b/example/find_filter.py similarity index 100% rename from exemple/find_filter.py rename to example/find_filter.py diff --git a/exemple/mnist_trained_model.h5 b/example/mnist_trained_model.h5 similarity index 100% rename from exemple/mnist_trained_model.h5 rename to example/mnist_trained_model.h5 diff --git a/exemple/number_detect.py b/example/number_detect.py similarity index 100% rename from exemple/number_detect.py rename to example/number_detect.py diff --git a/pic/bsp/RGB.png b/pic/bsp/RGB.png new file mode 100644 index 0000000000000000000000000000000000000000..cde305c49f1f35fb57de0a4bac7b4e544de12325 GIT binary patch literal 13772 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 IHT?0v0Lh{F&Hw-a literal 0 HcmV?d00001 diff --git a/pic/bsp/line_sensor.png b/pic/bsp/line_sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..c90fc8adaead0283e886ea5ba07206f8d9260895 GIT binary patch literal 31999 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 literal 0 HcmV?d00001 diff --git a/pic/raspb/rasp16.png b/pic/raspb/rasp16.png new file mode 100644 index 0000000000000000000000000000000000000000..200f7376a7b3d2146e72acf7088da3d29c752a19 GIT binary patch literal 18238 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