Роботы с управлением андроид

CxemCAR 2 — управление роботом и просмотр real-time видео с Android-смартфона

В интернете существует масса статей по использованию мобильных платформ совестно с IP или Web-камерой. Но в большинстве из них используются ноутбук, либо внутренности маршрутизатора с перепрошивкой на Open-WRT или DD-WRT. Просмотр видео и управление платформой в таких проектах как правило осуществляется с компьютера/ноутбука. В данном проекте реализована система управления мобильной гусеничной платформой с любого Android-устройства (планшет, смартфон и т.п.), а также просмотр real-time видео и управление поворотом IP-камеры. Вся электронная начинка осталась практически в неизменном видео с первого проекта CxemCAR, изменения коснулись Android-приложения для работы с IP камерой.

Проект построен на платформе Arduino. Управление гусеничной платформой осуществляется по Bluetooth каналу. В качестве IP камеры я использовал популярную модель Foscam FI8918, процесс покупки которой я подробно расписывал в данной статье. На сегодняшний день (август 2013) оригинальная Foscam FI8918 на AliExpress стоит 90$. Появилось много аналогов по цене 30-40$, с такими же функциями, но не известно управляются ли они также сриптами (об этом чуть ниже) через web.

Как видно на вышеприведенном рисунке, взаимодействие между смартфоном и гусеничной платформой осуществляется напрямую по Bluetooth-каналу, а взаимодействие с камерой осуществляется по Wi-Fi каналу, но через маршрутизатор. И это большой минус — т.к. без маршрутизатора все операции с камерой работать не будут, к примеру на улице или где-нибудь за городом. Я пытался сделать прямое управление через Wi-Fi, включив на Android’е режим Host Wi-Fi, но ничего не получилось, до камеры не удается достучаться, но работать в этом направлении продолжаю, и возможно что в дальнейшем получиться сделать прямое взаимодействие без маршрутизатора. Есть предположение, что для этого необходима камера с поддержкой технологии W-Fi Direct.

IP-камера

IP-камера Foscam FI8918 выдает видеопоток в формате MJPEG (Motion JPEG), в котором каждый кадр сжимается при помощи популярного алгоритма сжатия изображения JPEG. При разрешении потока 320×240, количество кадров в секунду (FPS) составляет 25-30. Если разрешение видеопотока увеличить до 640х480, то FPS падает примерно в 2 раза. Для Android на просторах сети интернет был найден соответствующий MJPEG класс для обработки и вывода данных в activity приложения.

Модель FI8918 имеет функцию вращения и наклона камеры через web-интерфейс. В данном проекте эта функция также реализована. Функциональные возможности камер Foscam хорошо документированы (см. файл IPCAM CGI SDK V1.7). Просмотр потока, управление, настройки осуществляются через CGI скрипты. Просмотр потока осуществляется путем вызова videostream.cgi с соответствующими параметрами, например:
http://192.168.1.10:8081/videostream.cgi?user=cxemcar&pwd=cxemcar&resolution=8
где user — имя пользователя, pwd — пароль, resolution — разрешение видеопотока (8 — 320×240, 16 — 640×480)

Для управления движением камерой (функция pan/tilt) используется скрипт decoder_control.cgi, а параметром command задаются команды:
0 — движение камеры вверх
1 — остановка движения вверх
2 — движение вниз
3 — остановка движения вниз
4 — поворот влево
5 — остановка поворота влево
6 — поворот вправо
7 — остановка поворота вправо
25 — установка по центру
26 — вертикальное «патрулирование»
27 — остановка вертикального «патрулирования»
28 — горизонтальное «патрулирование»
29 — остановка горизонтального «патрулирования»

Читайте также:  Как сделать авторизацию android studio

В Android приложении я использовал обращение только к этим двум скриптам, но как уже сказано выше через соответствующие CGI скрипты можно делать очень многое (подробнее смотрите прикрепленный внизу PDF файлик IPCAM CGI SDK V1_7.pdf), например:
get_camera_params.cgi — получить текущие параметры камеры. Скрипт возвращает разрешение, яркость, контрастность, режим 50/60 Гц, режим Flip.
camera_control.cgi — установка параметров камеры.
reboot.cgi — перезагрузка камеры.
restore_factory.cgi — восстановление заводских настроек.
get_params.cgi — информация о камере и многих параметров.
set_datetime.cgi — установка времени и даты.
set_network.cgi — установка сетевых настроек.
set_wifi.cgi — установка настроек Wi-Fi сети.
set_ddns.cgi — установка настроек Dynamic DNS.
set_ftp.cgi — установка настроек FTP соединения.
set_mail.cgi — установка настроек для работы MAIL.
И др.

Камера настроена на работу со статическим IP-адресом. Чтобы к ней можно было обратиться из приложения. Хотя Foscam поддерживает и DDNS сервисы, поэтому можно использовать и динамический IP при условии использования Dynamic DNS.

Шасси

Т.к. IP-камера представляет из себя довольно таки массивную конструкцию, то и платформа должна быть соответствующих размеров. В качестве шасси, я использовал широко распространенную гусеничную платформу Rover 5. Стоимость на это шасси варьируется в зависимости от количества двигателей (2 или 4), а также наличия энкодеров.

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

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

Вид с установленной крышкой:

В платформе Rover 5 было вырезано отверстие для установки сдвоенного трехпозиционного переключателя питания/зарядки.

Аккумуляторы и плата преобразователя были расположены внутри корпуса шасси. В крышке были вырезаны отверстия для вывода проводов к плате управления, камере и драйверу двигателей. Для зарядки аккумуляторов были выведены 2 разъема.

IP-камера, контроллер Arduino, Bluetooth-модуль и драйвер двигателей были установлены на крышку шасси.

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

Аппаратная часть

Эта часть проекта практически полностью идентична CxemCAR 1.0 на Arduino. Единственное, что добавилась камера и т.к. она требует 5В источника постоянного тока, то был добавлен step-down преобразователь напряжения на микросхеме LM2596.

Схема же управления шасси осталась неизменной:

В качестве контроллера используется Arduino Nano V3. В качестве Bluetooth модуля используется HC-06. А для управления двигателем применена плата с микросхемой L298N.

Читайте также:  Как удалить андроид регистрация

Если будете питать плату Arduino от 4В и выше, то между выводами RX (модуля HC-06) и TX (платы Arduino) необходимо поставить делитель напряжения, т.к. логические уровни у модуля 3.3В. А еще лучше использовать специализированную микросхему, например MAX232.

Скетч для Arduino остался таким же, и выложен на GitHub’е (ссылка внизу страницы).

Программная часть

Весь софт написан в свободно-распространяемой среде Eclipse. Структура проекта:

Проект содержит 4 активити: главное, о программе, работа с Flash и основное активити для управления шасси и просмотра видео.

За работу с MJPEG потоком отвечает 2 класса: MjpegInputStream и MjpegView.

Проект на 2-языках: английский и русский. В папке ресурсов для русского языка задействуются 2 вложенные папки: values-ru и xml-ru. В папках values и xml по умолчанию содержаться английские версии этих файлов.

Приложение содержит меню с настройками:

Настройки подробно расписывать не буду, тут думаю все понятно.

Окно управления выглядит следующим образом:

Слева расположены кнопки управления платформой, по центру отображается видеопоток с камеры, а справа расположены кнопки управления камерой.

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

Источник

Превращаем смартфон в пульт управления роботом с приложением RoboCam

Автор: Alex. Опубликовано в Копилка 07 Ноябрь 2017 . просмотров: 14448

Во всех предыдущих статьях про приложение RoboCam я описывал, как с его помощью управлять роботом от первого лица. Но иногда управление от первого лица нам не нужно, а нужно лишь превратить смартфон в пульт управления. В последней версии приложения RoboCam появилась такая возможность.

Статья описывает новые возможности, появившиеся в приложении RoboCam в версии 1.4.2. Все статьи о приложении RoboCam вы можете найти здесь. Установить приложение RoboCam можно из магазина Google Play.

Всё, что было сделано в предыдущих версиях приложения осталось без изменений. В версии 1.4.2 только добавлены локальные элементы управления. По умолчанию они выключены и всё работает как раньше. Чтобы включить локальные элементы управления зайдите в настройки сервера и поставьте галочку «Использовать локальные элементы управления». После этого все остальные настройки сервера исчезнут. Нажмите на кнопку «Сохранить». Если не знаете где найти настройки сервера, почитайте сначала первую статью о приложении RoboCam.

После этого вернитесь на главный экран программы, и вы увидите, что левая зелёная кнопка поменялась. Теперь на ней изображён джойстик. Также вы увидите, что камера теперь выключена.

Нажмите на среднюю пурпурную кнопку, чтобы подключиться к роботу. Подробно, как подключаться к роботу и настраивать его, описано в первой статье, посвящённой приложению RoboCam. Затем нажмите на левую зелёную кнопку, чтобы открыть экран с локальными элементами управления, т.е. джойстиками.

Как видите, джойстики выглядят так же, как и в браузере, когда вы управляете роботом от первого лица с помощью приложения RoboCam.

Но на смартфоне с маленьким экраном маленькими джойстиками пользоваться неудобно, поэтому вернитесь в настройки сервера, включите галочку «Максимально увеличить джойстики» и нажмите кнопку «Сохранить».

Читайте также:  Asus rog phone 3 андроид 11 когда

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

Кстати, если вы подключите клавиатуру к смартфону, то сможете управлять с неё. Однако, для того, чтобы клавиатура работала, приложение RoboCam должно быть активно, и телефон должен быть незаблокирован. Подробнее об управлении с клавиатуры читайте в третьей статье о RoboCam.

Комментарии

Can I help you make an English app version.
I need an English version to make vektor control system in it as I did with www.cellbots.com in 2014.
But I am sure your app is better.

Can I help you make an English app version.
I need an English version to make vektor control system in it as I did with www.cellbots.com in 2014.
But I am sure your app is better.

No.
My Samsung Galaxy S8 or my Samsung Pad,
do not accept RoboCam app from Google Play.
play.google.com/. /.
I have downloaded your RoboCam APK 1.4.4 file from other site.
What phones do I need,
to be able to import RoboCam from Google Play?

Please let me use your Robocam source code, for my project.

It would be nice if you made a English version of your website with RoboCam.
Google translate can not translate your screendumps pictures.

Totally love RoboCam.

Hello.
This website is missing pictures.

I hope you do a english version of this.
The pictures is not possible to get translated to English.

Hello.
This website is missing pictures.

I hope you do a english version of this.
The pictures is not possible to get translated to English.

I can use your RoboCam app for a telerobotic game if you can implement/code, a queue system, in it, as I have here.
robot1.gamereality.se/
github.com/jlivingstonsg/waiting-room-to-telerobot
I want to put my robots in a room and let people have games with them.
www.youtube.com/watch?v=TZ4ujKcy87o

It would be nice to have possibility to set two ways in to RoboCam. One with login, that you have now, and the other with a queue system where I can set a timer for every gamer. How much would it cost me for you to implement/code this PHP queue system in to your RoboCam?

PS: You can also implement/code, a pay system in your RoboCam and you can handle the money, when people pay, to use my robots.

Is your RoboCam app built in a native language?
Like React Native or Flutter ?
Or what program language is it in?

I have now almost a working version of your RoboCam app but I have some problem.
It compile in Android Studio but some code I can not get to work.
Can you check my code and maybe help me?

Источник

Оцените статью