Как сделать робота на raspberry pi

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Raspberry Pi – это востребованный одноплатный мини-компьютер, который можно адаптировать под решение множества бытовых задач. Он может работать на операционной системе Linux. В качестве эксперимента на нем был реализован любопытный проект создания подвижного робота с веб-камерой. Робот с функциями фото- и видеосъемки размещен на управляемой через web-интерфейс подвижной платформе.

По проекту для робота задаются следующие требования:
• возможность управления через Wi-Fi сигнал;
• способность передвижения платформы по команде;
• видеосъемка по ходу движения;
• съемка фото высокого качества;
• получение команд с основного компьютера, отправка на него видео и фото.

Итак, для воссоздания эксперимента необходимо:
• умение работать с python для создания алгоритма (уровень сложности программируемого алгоритма, соответственно, зависит от уровня знания);
• способность писать код в HTML для доработки веб-интерфейса;
• навык работы в javascript и в jquery;
• элементарный навык паяния, чтобы спаять специальную приводную плату.
Также придется вводить ряд команд из терминала, что может быть несколько сложно для неопытных пользователей Linux.

Что же такое WebIOPi?

Это – готовый продукт от Internet of Things для работы с портами ввода-вывода (GPIO) на Raspberry Pi. При помощи этого фреймворка можно управлять всеми портами как локально, так и удаленно – через обычный браузер или специальные программы, а также определять их состояние.
Какие именно он дает преимущества:
1. Дефолтная поддержка почти сорока устройств (ADC, DAC, различные датчики и т.п.);
2. Совместимость с python 2-й и 3-й версий;
3. Отличная адаптивность к потребностям пользователя;
4. Возможность защиты парой логин-пароль;
5. Многовариантность применения;
6. Сервер разработан на python-е;
7. Работа с SPI, 1-Wire, I 2C, GPIO, Serial;
8. CoAP c REST-архитектурой поддерживает IP Multicast;
9. Возможность работы с облачным сервисом.

Для инсталляции WebIOPi предустановите на мини-компьютере Python совместимой версии. В таком случае установка осуществляется через терминал:


После установки запускаем фреймворк с помощью командной строки:

$ sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port]

Options:
-h, --help Display this help
-c, --config file Load config from file
-l, --log file Log to file
-s, --script file Load script from file
-d, --debug Enable DEBUG

Тут есть нюанс – если закрыть терминал, или сочетанием Ctrl+C прервать скрипт, доступ к портам и сервер потеряются. Чтобы этого избежать, стоит запускать фреймворк как сервис. Делаем это следующим образом:
Запуск –

Возможен вариант настройки автозапуска WebIOPi при включении компьютера:

Отображаться порты GPIO будут приблизительно таким образом:


Можно отрегулировать выходной показатель каждого порта и установить для них режим работы.

Итак, перейдем непосредственно к роботу WebCamBot

Для его изготовления доработан открытый проект подвижного робота с веб-камерой CamBot. Как говорилось выше, драйвера моторов размещались на плате Raspirobot, в которую добавлен импульсный регулятор. Для управления электромоторами, приводящими конструкцию в движение, будут задействованы четыре порта мини-компьютера.

Камера может работать в одном из режимов: транслировать текущий видеопоток с низким качеством и снимать фото с высоким качеством. Режим можно поменять с помощью скриптов: stream.sh, stream_stop.sh, photo.sh.

Для включения камеры:

Для отключения камеры:

Упрощенный веб-интерфейс
Процесс написания web-интерфейса оптимизирован – достаточно лишь с помощью возможностей javascript создать кнопки управления, активизирующие макросы, ранее прописанные для Raspberry на Python. Эти кнопки через jQuery необходимо внести в HTML код веб-страницы.

1. Механизм такой:

3. Прописываем также возможность управления с клавиатуры:

$(document).keydown(function(e)
switch(e.which)
case 37:turn_left(); break; //key Arroy left
case 38:go_forward(); break; // key Arroy up
case 39:turn_right(); break; //key Arroy right
case 40:go_backward(); break; //key Arroy down
case 32:stop(); break; //key Space
case 75:camera(); break;. .//key K
case 80:photo(); break; // key P
>
>);

4. После выполнения компьютером макроса фото и потоковое видео загружаются в HTML:

Конфигурация

Для настройки WebIOPi нужно открыть файл по пути /etc/webiopi/. В файле будет несколько блоков, нас интересует два из них:

1. Содержащий описание макросов:

2. Содержащий настройки сервера:

В нем можно изменить конфигурацию сервера.

Необходимые скрипты


Чтобы написать упомянутый скрипт с макросами, вводим необходимые при включении и отключении сервера функции setup и destroy. В них будет определяться состояние портов GPIO и режим работы.
Чтобы эти опции стали доступны в веб-интерфейсе, перед ними ставим указатель @webiopi.macro. В частности, для функции, приводящей робота в движение, описание будет выглядеть так:

А для управления камерой будет использоваться команда call, активирующая скрипт:

def camera_start():
return_code = call("/usr/share/webiopi/htdocs/app/Raspirobot/stream.sh", shell=True)

В итоге у вас получится интерфейс следующего вида:


Отладка


В случае, если не открывается страница приложения, наверняка в коде спряталась ошибка. Облегчить ее поиск можно с помощью написанного скрипта и посмотреть, какие получились ошибки/предупреждения. Также рекомендуем проверить файл в каталоге /var/log/webiopi.
В случае, когда страница отображается корректно, но нет отклика на кнопки управления, очевидно проблема в javascript.
Источник

Можно ли сделать BEAM-робота на Raspberry Pi?


10 ноября 2019 года весь прогрессивный мир начал отмечать замечательную дату — 30-летие BEAM-робототехники. И, конечно же, в связи с этим снова возник вопрос, который мучает вот уже не одно десятилетие всех, кто так или иначе обращал свое внимание на BEAM-парадигму: что же такое BEAM-робот?

Ответ Марка Тилдена с уникальной фотографией, которую он любезно приложил к своему письму, публикуется с небольшим сокращением.

Именно это BEAM и должен был побудить их (процесорные решения — прим. перев.) сделать.


… где я раздвигаю границы минимального BEAM, хотя все еще только склеиваю логические мозги. Если бы я добавил Raspberry Pi, это был бы программируемый цифровой робот с базой BEAM, но в основном просто цифровой робот с предсказуемым поведением.

Поэтому я должен сказать, что как только ваша система управления будет основана на CPU или MCU, вы выйдете за пределы барьера BEAM, если только вы не сможете доказать, что имитируете атрибуты BEAM.

Sincerely,
Mark W. Tilden
Robotics Physicist

Nv — сокращение от Nv Neuron, основной компонент Nv-сетей (Nv Networks) в BEAM-робототехнике. Цель Nv — принять входной сигнал, сделать что-то с ним и передать на выход. Наиболее распространенное действие Nv - формировать задержку.

Стандарт для Nv-нейронов в BEAM-технологии — это конденсатор, у которого один вывод является входом, а другой соединен с входной линией инвертора. Выход этого инвертора является выходом нейрона.

Пример простой нейронной сети на Nv-нейронах для управления двухмоторным шагающим BEAM-роботом класса "Ходок" (Walker)

Вывод конденсатора, который подсоединен к инвертору, заземляется резистором. Когда на вход подается положительное напряжение, конденсатор заряжается. Как только сигнал на входе теряется (отрицательное напряжение на входной линии), конденсатор разряжается в инвертор, в результате чего инвертор вырабатывает выходной сигнал, который передается следующему нейрону. Скорость разрядки конденсатора связана с резистором, который подтягивает вход инвертора к отрицательному значению. Чем больше резистор, тем больше времени потребуется для полной разрядки конденсатора, и тем больше времени потребуется для полного запуска этого нейрона.

Бот Raspi похож на всех остальных интернет ботов. Для его настройки необходимо иметь отдельный адрес электронной почты, связанный с учетной записью Google Talk. Этот адрес должны будут добавить себе в контакты все желающие управлять ботом. Затем, как только будет запущен скрипт бота, он подключится к службе чата Google и появится среди ваших друзей в списке контактов.

Программное обеспечение бота представляет собой клиента протокола XMPP, написанного на языке Python. При запуске, скрипт подключается под своими учетными данными к службе Google Talk. Скрипт на языке Python является развитием проекта pygtalkrobot — открытого проекта бота gtalk (google talk) с использованием библиотек XMPPPY и PyDNS, а также с использованием кода проекта python-jabberbot.

Программное обеспечение

Бот требует наличия дополнительных модулей Python. Проще всего установить их с помощью менеджера пакетов pip. Если он не установлен, вы можете установить его с помощью apt-get:

Затем обновите индекс easy_install:

и установите модули GPIO, xmpppy и pydns:

Затем скопируйте мой репозиторий с исходниками робота Raspi Gtalk:

Теперь смените рабочий каталог:

Наконец, укажите имя пользователя и пароль в службе Google для своего робота. Это можно сделать с помощью полей BOT_GTALK_USER, BOT_GTALK_PASS, и BOT_ADMIN в строках с 31 по 33 файла raspiBot.py. Рекомендуется (но не является необходимым) создать для робота свою собственную учетную запись в службах Google. Кроме того, поскольку доступ к шине GPIO на компьютере Raspberry Pi предоставляется только суперпользователю, запускать робота необходимо с помощью команды sudo:

Скрипт, предлагаемый в качестве образца, понимает следующие команды:

Железо

Конфигурация, показанная в видеоролике, включает в себя двухпозиционный переключатель, подключенный к входу 8 GPIO, а также светодиод, подключенный к 10-му выходу GPIO. Вот подробная схема подключения (схема сделана с помощью Fritzing):

raspi_gtalk_robot

Пример использования №1. Домашняя автоматизация

Пример использования №2. Удаленный доступ

Вот небольшой список относительно безопасных команд, которые можно запускать удаленно с помощью робота Raspberry Pi:

vmstat — отображает активность системы, оборудования и прочую информацию
uptime — время непрерывной работы системы
w — показывает подключенного пользователя и его активный процесс
ps — выдает список запущенных процессов
free — объем свободной физической и виртуальной памяти
iostat — средняя загрузка процессора, активность дисков

Конечно, перехват некоторого количества системной информации может рассматриваться как серьезная брешь в безопасности. Для тех, кто заботится о безопасности меньше, чем об удобстве работы, могут быть полезны некоторые дополнительные команды и скрипты, а также передача отдельных личных данных.

Пример использования №3. Удаленная перезагрузка


Колёсная платформа с камерой и управлением по Веб на Raspberry Pi


Используемые компоненты данной телеуправляемой машины с камерой это Raspberry Pi, USB веб-камера, шасси с двумя мотор-редукторами, драйвер моторов l293d, power bank, макетная плата и соединительные провода. В третьей Raspberry уже встроен WiFi, если у Вас вторая версия, дополнительно понадобиться USB-WiFi.
С установленной сверху веб-камеры мы будем получать видео, так же по сети будет осуществляться и управление. Интерфейс управления реализован с использованием веб-страницы. Это даёт возможность управлять машиной из локальной сети или из интернета с компьютера, смартфона или планшета.
Веб-страница сделана на HTML, в ней отображается видео с камеры и есть ссылки "влево", "вправо", "вперед", "назад", щелкая по которой мы можем перемещать робота в нужном направлении. Для получения видео с веб-камеры используется Motion, а Flask для отправки команд с веб-страницы в Raspberry Pi с помощью Python.
Установка и настройка Motion рассмотрена в статье "Система видеонаблюдения с функцией распознавания движения на Raspberry Pi". Так как видео будет передаваться по сети, в конфигурационном файле Motion (/etc/motion/motion.conf) нужно отключить потоковую передачу для localhost:

После внесения изменений в файл настроек запустите службу Motion (если она ещё не была запущена) командой:

sudo /etc/init.d/motion start

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

sudo /etc/init.d/motion restart

если она уже была запущена.
Для проверки откройте IP-адрес вашего Raspberry Pi с портом 8081 в своем браузере (например, 192.168.1.6:8081). Узнать адрес можно командой ifconfig.


Если для проверки подключены по Ethernet, смотрите адрес для интерфейса eth0. Если подключены через роутер по Wi-Fi, смотрите адрес для интерфейса wlan0.
Flask - это фреймворк для создания веб-приложений на языке программирования Python, который позволяет отправлять команды с веб-страницы в Raspberry Pi для управления роботом по сети. Так же он позволяет отправлять данные из Raspberry Pi на страницу в веб-браузере и наоборот, со страницы в Raspberry Pi.
Для установки Flask нужен pip, он устанавливается командой:

sudo apt-get install python-pip

Когда pip установлен, им можно установить Flask следующей командой:

sudo pip install flask

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

Для вызова функций программы на Python, в HTML используется скрипт jQuery. В коде Python есть пять функций для перемещения робота влево, вправо, вперед, назад и для его остановки. Эти функции будут выполняться при нажатии на ссылки управления на веб-странице, и двигатели будут двигаться в зависимости от нажимаемой ссылки. Нажали и пока удерживаете, робот будет двигаться в определенном направлении. Как только кнопка мыши будет отпущена, робот остановится.

На Raspberry Pi загрузить файлы можно в браузере с GitHub или Яндекс.Диск или в консоли, используя Git. Если Git не установлен, его можно установить командой:

sudo apt-get install git

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

Будет скачано два файла - "robot.py" и в папке "templates" файл "robot.html". Открыв в текстовом редакторе файл "robot.html", найдите строчку

В ней задаётся адрес, с которого берётся видео. Измените 192.168.1.6 на адрес Вашей Raspberry Pi.

Вторая версия AlphaBot2 беспроводного робота, которого можно построить на базе raspberry PI 4. У новой модели управление через Bluetooth, ИК и wifi. А также добавлены функции — предотвращения столкновения и автоматическое слежение за траекторией, которую вы можете нарисовать любой формы.

AlphaBot2 беспроводной умный робот c функцией видео на Raspberry Pi 4

Ознакомиться с первой версией робота можно в статье AlphaBot PI .

  • Более мощный процессор,
  • Более мощная мультимедийная возможность,
  • Более быстрое подключение к сети

Обновленный робот AlphaBot2 можно собрать на обновленной версии Raspberry Pi 4

Универсальные шасси AlphaBot2

Универсальные шасси AlphaBot2

Высоко интегрированная плата адаптера AlphaBot2-Pi

Высоко интегрированная плата адаптера AlphaBot2-Pi

  • ИК предотвращение столкновений,
  • 5-канальный детектор отслеживания,
  • Высококачественный N20 Мотор,
  • Резиновые Колеса

Raspberry Pi 5MP HD Камера 1080 P

Raspberry Pi 5MP HD Камера 1080 P

Предотвращение столкновений AlphaBot2

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

Автоматическое отслеживание линии AlphaBot2

Особенности 5 канального ИК детектор для зондирования и анализа черной линии, в сочетании с PID алгоритм для регулировки движения робота, высокая чувствительность, стабильное отслеживание.

Bluetooth управление AlphaBot2 беспроводного умного робота

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

Инфракрасное управление AlphaBot2 беспроводного умного робота

С ИК-приемником, он может управлять роботом через ИК-пульт дистанционного управления, сделать его двигаться вперед или изменить направление…

Wi-Fi управление AlphaBot2 беспроводного умного робота

Поддерживает дистанционное управление Wi-Fi, мониторинг видео в режиме реального времени через веб-страницу/приложение/ПК, также имеет функцию маршрутизации путем создания точки доступа Wi-Fi.

2-DOF Pan-Tilt

2-DOF с функцией панорамирования и наклона + аппаратное обеспечение ШИМ-управляемый сервопривод, плавно поворачивается на камеру для съемки всенаправленная изображения.

Комплект поставки AlphaBot2 беспроводного умного робота c функцией видео на Raspberry Pi 4

Вес:0,528 кг

Примечание: для работы этого продукта требуется два 14500 аккумулятора, которые не входят в комплект и должны быть приобретены отдельно.

  1. Raspberry PI4B-4GB x1
  2. AlphaBot2-Pi (плата адаптера) x1
  3. AlphaBot2-Base (Базовое шасси) x1
  4. Камера RPI (B) x1
  5. Карта Micro SD 16 Гб x1
  6. Адаптер питания x1
  7. Адаптер USB Micro-B для USB-C x1
  8. SG90 servo x2
  9. 2 DOF pan и комплект для наклонных элементов x1
  10. ИК-пульт дистанционного управления x1
  11. FC-20P кабель 8 см x1
  12. Штекер USB типа A для кабеля micro B x1
  13. 15PIN FFC 25 см x1
  14. AlphaBot2-Pi винты x1
  15. Кардридер Micro SD x1 (Бесплатно)
  16. Отвертка x1 (Бесплатно)

Купить AlphaBot2 беспроводной умный робот c функцией видео на Raspberry Pi 4

Купить AlphaBot2 беспроводной умный робот c функцией видео на Raspberry Pi 4

Похожие статьи:

Сайт посвящен компьютеру, который располагается на одной плате размерами с банковскую карту (90 х 56 мм). Процессор Cortex A53 (архитектура ARM v7) 1200 Мгц и 1 ГБайт ОЗУ, а также уже в "коробочной" версии WIFI (802.11n) и Bluetooth 4.1 Обзор платформы, а также различные проекты, которые можно реализовать на ней. Автор находит проекты в интернете и повторяет, возможно, видоизменяя и привнося что-то свое.

Читайте также: