как с телефона управлять роботом
Робот-тележка на ROS. Часть 8. Управляем с телефона-ROS Control, GPS-нода
Продолжение цикла статей.
При построении карт на роботе в рамках ограниченного пространства проблем не возникает. Управляя роботом с клавиатуры со станции-управления или на самом роботе, можно визуально наблюдать его перемещения и вовремя избегать нежелательные препятствия. Ситуация осложняется, если помещений несколько. И здесь есть несколько вариантов как наблюдать за роботом, строящим карту, если он покинул помещение оператора:
— подключить к непосредственно к роботу камеру;
— воспользоваться существующей системой видеонаблюдения вне робота;
— управлять с wi-fi, bluetooth клавиатуры, находясь рядом с роботом
— «поносить робота на руках», чтобы лидар собрал данные;
— поуправлять роботом с телефона.
Последний вариант может показаться удобным. Управлять роботом с телефона, просто наклоняя его (телефон) в нужную сторону, пока робото строит карту. Такая миссия возможна.
Рассмотрим как порулить роботом с телефона, отправляя соответствующие сообщения в топики ROS на роботе.
Писать отдельное приложение на телефоне для заявленных целей нет необходимости. Чтобы воспользоваться уже существующими наработками достаточно скачать на телефон и установить android приложение с маркета — «ROS Control».
Настроим приложение ROS Control на телефоне.
В эти топики будут улетать сообщения с телефона, а также приниматься в формате, который понимает ROS.
В приложении нам доступны топики:
— joystick topic — управление с телефона;
— laser scan topic — данные с лидара;
— nav sat topic — данные gps робота;
— odom — одометрия (все, что туда попадает с энкодеров и/или imu и/или лидара);
— pose — «позиция», расположение робота.
Освоим joystick topic.
Сам по себе робот не поедет, поэтому запустим на роботе топик с драйвером движения, который неоднократно уже фигурировал в предыдущих постах:
1-й терминал:
rosrun rosbots_driver part2_cmr.py
На телефоне в приложении ROS Control нажмем на строку с названием робота и провалимся в меню управления роботом:
Теперь, если потянуть пальцем джойстик (в любом направлении) тележка поедет.Здесь все просто.
Если посмотреть, что происходит с топиком драйвера двигателя, запущенном на raspberry, то увидим, что телефон публикует, а драйвер принимает сообщения в соответствующем формате:
По такому же принципу работают все остальные топики.
*Если все же, что-то пошло не так, то необходимо, находясь в режиме управления роботом, нажать на три параллельные полоски слева вверху экрана приложения. Провалиться в «Preferences» и далее выбрать «Topics»:
Посмотрим, что представляет из себя лидар в приложении.
*Можно также поездить просто наклоняя телефон в разные стороны и выбрав режим управления (Control Mode) Tilt:
Существуют и другие режимы «езды», даже с возможностью указать точку на карте, прямо на телефоне, но так как карта весьма условна, так же условна будет и поездка, то есть в никуда.
C топиками движения, как и камеры (ее рассматривать не будем) все более-менее понятно, разберемся с gps.
Чтобы все заработало, надо для начала установить ноду gps на raspberry.
Но для начала проверим, работает ли gps-свисток, иначе все остальные разговоры будут в пользу бедных.
Поставим пакеты на raspberry:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients
Проверим, что gps-свисток определился среди устройств usb:
lsusb
*координаты не мои, что странно. Пока не ясно, с чем это связано.
Установим ноду gps на raspberry:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make
Теперь, когда собрали gps-ноду, запустим ее (на роботе):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600
Если взглянуть на топики (в другом терминале робота), то можно увидеть, что телефон подписан на один топик, а публикация gps-ноды идет в другой:
Превращаем смартфон в пульт управления роботом с приложением RoboCam
Во всех предыдущих статьях про приложение RoboCam я описывал, как с его помощью управлять роботом от первого лица. Но иногда управление от первого лица нам не нужно, а нужно лишь превратить смартфон в пульт управления. В последней версии приложения RoboCam появилась такая возможность.
Статья описывает новые возможности, появившиеся в приложении RoboCam в версии 1.4.2. Все статьи о приложении RoboCam вы можете найти здесь. Установить приложение RoboCam можно из магазина Google Play.
Всё, что было сделано в предыдущих версиях приложения осталось без изменений. В версии 1.4.2 только добавлены локальные элементы управления. По умолчанию они выключены и всё работает как раньше. Чтобы включить локальные элементы управления зайдите в настройки сервера и поставьте галочку «Использовать локальные элементы управления». После этого все остальные настройки сервера исчезнут. Нажмите на кнопку «Сохранить». Если не знаете где найти настройки сервера, почитайте сначала первую статью о приложении RoboCam.
После этого вернитесь на главный экран программы, и вы увидите, что левая зелёная кнопка поменялась. Теперь на ней изображён джойстик. Также вы увидите, что камера теперь выключена.
Нажмите на среднюю пурпурную кнопку, чтобы подключиться к роботу. Подробно, как подключаться к роботу и настраивать его, описано в первой статье, посвящённой приложению RoboCam. Затем нажмите на левую зелёную кнопку, чтобы открыть экран с локальными элементами управления, т.е. джойстиками.
Как видите, джойстики выглядят так же, как и в браузере, когда вы управляете роботом от первого лица с помощью приложения RoboCam.
Но на смартфоне с маленьким экраном маленькими джойстиками пользоваться неудобно, поэтому вернитесь в настройки сервера, включите галочку «Максимально увеличить джойстики» и нажмите кнопку «Сохранить».
Теперь, когда вы откроете экран с локальными элементами управления, вы увидите, что джойстики стали крупнее.
Кстати, если вы подключите клавиатуру к смартфону, то сможете управлять с неё. Однако, для того, чтобы клавиатура работала, приложение 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.
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?
Какие роботы-пылесосы могут управляться через Wi-Fi?
Управление роботом-пылесосом со смартфона является одной из важнейших функций моделей премиум-класса. Возможность управлять роботом через мобильное приложение является очень полезной, ведь аппарат можно включать дистанционно, например, с работы. Кроме этого в приложении гораздо больше функций, чем при управлении с пульта и к тому же можно просматривать карту уборки и другие функции. Рейтинг будет построен следующим образом. Сначала будут рассмотрены 5 моделей премиум-класса, после чего я расскажу Вам про 2 интересные модели бюджетного класса, которые также могут управляться через телефон по Wi-Fi. Итак, поехали!
Xiaomi Roborock S6 MaxV
Открывает наш рейтинг один из лучших роботов-пылесосов 2020 года – модель Xiaomi Roborock S6 MaxV. Если вкратце, этот робот оснащен лидаром и камерой для навигации (определяет предметы на полу), функцией сухой и влажной уборки (совмещенной), разборной центральной щеткой и управлением через фирменное мобильное приложение.
В приложении робот строит карту помещения, может сохранять несколько карт уборок, доступно ручное управление, а также регулировка мощности всасывания и степени смачивания салфетки. Кроме этого можно выбирать зоны уборки, т.к. роботы зонирует помещения на комнаты. Для каждой из зон можно выбирать мощность всасывания и степень смачивания салфетки. Это очень полезная и к тому же уникальная функция в конце 2020 года. Важной особенностью является возможность настраивать график уборки не только по времени и дням недели, но и по нужным комнатам. Также в приложении можно устанавливать виртуальные стены и запретные зоны, что очень полезно. Еще одна полезная функция – это голосовое управление. Робот поддерживает даже голосовой ассистент Яндекс.Алису.
В целом, функционал робота-пылесоса достаточно интересный, есть все необходимые функции. Робот качественно убирает на больших площадях и при этом стоит около 55 тыс. рублей. Из характеристик важно выделить мощность всасывания 2500 Па, площадь уборки до 250 кв.м. и время работы до 3 часов.
iRobot Roomba s9+
Продолжает рейтинг роботов-пылесосов с управлением через фирменное мобильное приложение модель iRobot Roomba s9+.
Серебряный призер нашего ТОП-7 способен самоочищаться на базе и это его главная фишка. Предусмотрена только сухая уборка помещений, навигация на базе камеры, чистящий блок представлен двумя валиками скребками. В фирменном приложении робот строит карту помещения, способен запоминать несколько планов уборок, может зонировать помещение на комнаты и присутствует возможность установки запретных зоны на построенной карте. Ручное управление отсутствует, режима работы всего 2: автоматический и локальный. Кроме этого можно настраивать график уборки по комнатам, времени и дням недели.
Функционал приложения не особо разнообразный, но все необходимые возможности для автоматического поддержания чистоты в доме либо квартире. Из характеристик важно выделить время работы до 120 мин и площадь уборки свыше 100 кв.м. на одном заряде. Стоимость робота составляет около 117 тыс. рублей и это достаточно дорого. Но тем не менее качество сухой уборки высокое.
Okami U100 Laser
На третьем месте расположился еще один интересный робот-пылесос, который появился на рынке в конце 2019 года. Это Okami U100 Laser.
В конце 2020 года компания Оками выпустила фирменное мобильное приложение для управления роботами, об этом мы уже писали ранее: https://robotobzor.ru/obzory/okami/novoe-mobilnoe-prilozheni-okami.html. Робот-пылесос подходит для сухой и влажной уборки. Пылесборник меняется на бак для воды при необходимости. Модель оснащена лазерной навигацией на базе лидара, картографией, а также управлением с пульта и через приложение. Мобильное приложение русифицировано, основной функционал следующий:
Из характеристик важно выделить площадь уборки свыше 100 кв.м., время работы до 2 часов и мощность всасывания до 2500 Па. Благодаря центральной щетке, а также функции влажной уборки робот может убирать как на гладких напольных покрытиях, так и на коврах. Цена при этом составляет около 40 тыс. рублей.
Hobot Legee-688
На четвёртом месте уникальный робот-мойщик пола Hobot Legee-688. Название компания получила от слияния английских слов Home и Robot.
По сравнению с предыдущими моделями этот робот лучше моет пол благодаря установленным форсункам для смачивания поверхности и движущимся платформам с установленными салфетками, которые имитируют движение рук человека. Робот подходит для сухой и влажной уборки, оснащен лазерной навигацией, а управляться может не только через фирменное мобильное приложение, но и с пульта, что очень удобно. Поговорим о функциях приложения.
В приложении доступно 8 режимов уборки под различные условия применения. Кроме этого в приложении Hobot Legee-688 строит карту помещения, на которой видно где робот убрал, а где еще нет. Дополнительный функционал приложения, это настройка графика уборки и регулировка мощности всасывания, а также степени смачивания поверхности. Приложение удобное, на русском языке, все понятно с первого запуска робота-пылесоса.
Что касается характеристик, важно выделить мощность всасывания до 2100 Па, время работы до 90 мин и площадь уборки до 150 кв.м. Также следует обратить внимание на то, что Hobot Legee-688 подходит для уборки на гладких напольных покрытиях. Из-за своей конструкции убирать на коврах он не может. Цена не превышает 35 тыс. рублей.
Genio Laser L800
Закрывает ТОП-5 премиальных моделей Genio Laser L800. Это еще один мощный робот-пылесос, который подходит для сухой и влажной уборки, при этом поддерживает управление через мобильное приложение. Важная изюминка именно этой модели — робот поддерживает Wi-Fi соединение частотой 5 ГГц. Остальные роботы могут подключаться только к сетям 2,4 ГГц, что иногда вызывает определённые проблемы.
Функционал модели во многом не уступает конкурентам, а именно:
При этом всем цена адекватная — 35 тыс. рублей. Так что вариант вполне интересный для рассмотрения.
Xiaomi Mijia Sweeping Vacuum Cleaner 1C
Еще ниже стоимость у Xiaomi Mijia Sweeping Vacuum Cleaner 1C. Эта модель стоит около 13-17 тыс. рублей. При этом есть камера для навигации, картография и управление через приложение.
В мартовском обновлении производитель добавил весьма полезный функционал в приложении: это сохранение карты уборки и возможность установки виртуальных стен, а также запретных зон. Нововведения позволили сделать робот одним из лучших в бюджетном сегменте. При этом всем модель подходит для сухой и влажной уборки.
В приложении можно настраивать график уборки по времени и дням недели. Кроме этого предусмотрена регулировка степени смачивания салфетки и мощности всасывания. Есть также зональная уборка.
Характеристики не сильно уступают флагманским моделям. Время работы до 90 мин, площадь уборки до 100 кв.м., при этом мощность всасывания достигает 2500 Па. За свои деньги — это просто отличный вариант в бюджетном сегменте.
ELARI SmartBot
Ну и закрывает наш рейтинг один из самых дешевых роботов-пылесосов с управлением через смартфон. Это новый ELARI SmartBot. Основная фишка модели – это поддержка голосового ассистента Яндекс.Алиса. При всем это стоимость робота не превышает 11 тыс. рублей в 2020 году.
В приложении можно запускать робот-пылесос, выбирать режим уборки, настраивать график работы и отправлять обратно на базу. Также предусмотрено ручное управление. Функционал достаточно небольшой, но и цена робота крайне низкая. Если вкратце говорить о модели, ELARI SmartBot подходит для сухой уборки, центральная щетка отсутствует, мощность всасывания около 800 Па, время работы до 2 часов, при этом площадь уборки около 50-80 кв.м. За свои деньги функционал неплохой.
Напоследок рекомендуем посмотреть видео версию рейтинга за первое полугодие 2020:
Вот мы и рассмотрели лучшие роботы-пылесосы с управлением через мобильное приложение со смартфона. На самом деле очень много роботов управляются через телефон, я лишь выделил наиболее интересные в 2020 году на свой субъективный взгляд. Всем удачных покупок!
РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2
Оглавление
Статья 1. РОБОТ на базе: android, arduino, bluetooth. Начало
Статья 2. РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2.
Предполагается, что человек читающий статью уже имеет представление о:
-Базовых понятиях электроники
-Предыдущей статье
Постановка задачи
Создать робота который выполняет следующий функционал:
-Имеет удаленное управление при помощи смартфона (передвижение вперед, назад, налево, направо)
-Передает на смартфон данные о расстоянии до объекта находящегося перед ним(на базе ультра звукового датчика)
-Имеет режим автономного управления: непрерывно перемещается по помещению, при встрече препятствий меняет направление своего движения, тем самым объезжая препятствие.
Немного теории
Наш мир является сложнейшей системой, в которой взаимодействуют между собой огромное количество объектов, подчиненных определенным законам физики, поэтому создание робота функционирующего в рамках этой системы, является очень трудоемкой задачей. Для упрощения процесса создания первого робота воспользуемся понятием абстрагирования среды(в которую помещен робот) и действий робота. В дальнейших статьях будем усложнять среду и соответственно действия робота.
Абстрагирование среды
Среда где будет обитать наш первый робот будет представлять собой двухмерный мир и обладать следующими характеристиками:
1) Полностью наблюдаемая, т.е. датчики робота предоставляют доступ к полной информации о состоянии среды в каждый момент времени. Полностью наблюдаемые варианты среды являются удобными, поскольку роботу не требуется поддерживать какое-либо внутреннее состояние для того, чтобы быть в курсе всего происходящего в этом мире.
2) Детерминированная. Если следующее состояние среды полностью определяется текущим состоянием и действием, выполненным роботом, то такая среда называется детерминированной; в противном случае она является стохастической.
3) Эпизодическая. В эпизодической проблемной среде опыт робота состоит из неразрывных эпизодов. Каждый эпизод включает в себя восприятие среды роботом, а затем выполнение одного действия. При этом крайне важно то, что следующий эпизод не зависит от действий, предпринятых в предыдущих эпизодах. В эпизодических вариантах среды выбор действия в каждом эпизоде зависит только от самого эпизода.
4) Статическая. Если среда может измениться в ходе того, как робот выбирает очередное действие, то такая среда называется динамической для данного робота; в противном случае она является статической.
5) Непрерывная — Различие между дискретными и непрерывными вариантами среды может относиться к состоянию среды, способу учета времени, а также восприятием и действиям агента. В нашем случае считается что состояние среды меняется непрерывно. К примеру игра в шахматы является дискретной, так как имеет конечное количество различных состояний.
6) Одноагентная это среда в которой находится один объект(робот), и другие объекты на него не влияют и не конкурируют с ним.
Абстрагирование действий робота
1) Движение – робот может передвигаться в двух направлениях(взад, вперед) и разворачиваться на месте(налево, направо)
2) Датчики робота (ультразвуковой сенсор), позволяет определить расстояние до объекта. Расстояние может быть определено от 0,02 метра до 4 метров.
Таким образом, определим, что создаваемый в этой статье робот является простым рефлексным роботом. Подобные роботы выбирают действия на основе текущего акта восприятия, игнорируя всю остальную историю актов восприятия.
Краткая информация по используемым деталям и модулям
Драйвер двигателей HG7881. Для управления двигателями робота необходимо устройство, которое бы преобразовывало управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей. 
HG7881 – это двухканальный драйвер двигателей, питание возможно от источника 2,5 – 12 В. Описание выходов драйвера:
Таблица 1
| Вывод | Описание |
| B-IA | Двигатель B Вход A (IA) |
| B-IB | Двигатель B Вход B (IB) |
| GND | Земля (Минус) |
| VCC | Рабочее напряжение 2.5-12V (Плюс) |
| A-IA | Двигатель A Вход A (IA) |
| A-IB | Двигатель A Вход B (IB) |
Для того чтобы заставить двигатели работать нужным нам образом на выводы (B-IA, B-IB, A-IA, A-IB) необходимо подавать логические сигналы (HIGH,LOW). Таблица истинности двигателей:
Таблица 2
| IA | IB | Состояние двигателя |
| L | L | Off |
| H | L | Forward |
| L | H | Reverse |
| H | H | Off |
Ультразвуковой сенсор измерения расстояния HC-SR04. Определяет расстояние до объекта, измеряя время отражения звуковой волны от объекта. 
Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе.
На вывод (Trig) подаётся импульс длительностью 10 мкс, ультразвуковой модуль излучает 8 пачек ультразвукового сигнала с частотой 40кГц и обнаруживает их эхо. Измеренное расстояние до объекта пропорционально ширине эха (Echo) и может быть рассчитано по формуле:
Ширина импульса/58 = расстояние в см.
Сборка робота и подключение всех модулей
Собираем платформу (рис.2). 
Рисунок 2
Подключаем двигатели к драйверу (рис. 3). По два двигателя на один разъем драйвера, т.е. двигатели левой стороны платформы к разъему “Motor B”, двигатели правой стороны — “Motor A”. Управление платформой будет произведено аналогично гусеничной. При движении вперед и назад все двигатели работают синхронно в одном направлении, при повороте направо двигатели правой стороны платформы останавливаются, а левой двигаются синхронно, при повороте налево двигатели левой стороны останавливаются, а правой двигаются синхронно. 
Рисунок 3
Прикручиваем верхнюю часть платформы. Соединяем драйвер двигателей, ардуино, аккумуляторы, БТ модуль и ультразвуковой сенсор к макетной плате (рис.4) 
Рисунок 4
Схема подключения представлена на (рис.5). Питание ардуино, ультразвукового сенсора и драйвера двигателей (следовательно и самих двигателей) обеспечивают 4 подключенных последовательно аккумулятора (1,2 В., 2700 мА/ч), на БТ модуль питание подается от выхода ардуино 3,3 В. 
Рисунок 5
Робот собран, необходимо его заставить выполнять команды, отправленные с андроида.
Скетч для Arduino ШАГ 1 – Удаленное управление роботом
Объявляем переменные: R_A_IA, R_A_IB – определяют номера выводов управляющих двигателем А (двигатели правой стороны), L_B_IA, L_B_IB — выводы управляющие двигателем B(двигатели левой стороны. Инициируем последовательное соединение и задаем скорость передачи данных в бит/c (бод) – 38400. Устанавливаем режим работы выводов управляющих двигателями – OUTPUT (выходы). Подаем на все выходы значение HIGH, что означает — двигатели отключены(таблица 2).
Определяем функции: go_forward(), go_back(), go_right(), go_left(), stop_robot(), которые запускают двигатели в прямом или обратном направлении вращения, тем самым приводя робота в движение – вперед, назад, направо, налево, стоп, соответственно.
В основном цикле программы происходит считывание и обработка данных полученных в последовательный порт от БТ модуля. В зависимости от полученной команды выполняется та или иная функция и по последовательному порту передается текст об ее выполнении.
Android приложение ШАГ 1 – Удаленное управление роботом
Вот так будет выглядеть основное activity: 
Текстовое поле «txtrobot», будет отображать всю необходимую нам информацию. Кнопки b0, b1, b2, b3, b4 будут отправлять команды в arduino (0, 1, 2, 3, 4)
Переходим в src/../MainActivity.java здесь и будет располагаться наш основной код.
В предыдущей статье на шаге 4, был представлен код позволяющий передавать и принимать данные по БТ. За основу возьмем этот код.
В состояния активити onPause() и onResume() добавим условие проверки существования БТ у андроида и определения включен ли он. В предыдущей статье это условие отсутствовало в связи, с чем при запуске приложения, если был отключен БТ, оно завершалось с ошибкой и только после этого предлагало включить БТ.
Объявим переменные для хранения кнопок:
Напишем обработчики нажатия этих кнопок, для отправки команд:
Полный код приложения:
Данное приложение, позволяет управлять роботом при помощи андроида, отправляя команды по БТ на ардуино, и принимая текстовые ответы от него. Первая часть поставленной задачи выполнена.
Скетч для Arduino ШАГ 2 – Режим автономного управления роботом
Для работы с ультразвуковым сенсором, воспользуемся готовой библиотекой
ultrasonic-HC-SR04.zip
Распаковываем файлы и помещаем в каталог где расположен скетч
Подключаем библиотеку
Конструктор Ultrasonic принимает два параметра — номера выводов к которым подключены Trig и Echo, соответственно:
Получаем данные о расстоянии до объекта в сантиметрах:
Передаем данные на последовательный порт, для последующей передачи их через БТ модуль.
Символы «*» и «#» означают начало и конец передаваемого блока информации о расстоянии до объекта. Это необходимо для того чтобы четко отделять необходимые данные друг от друга, так как при их передачи часть теряется либо приходит с запозданием.
Полный скетч для загрузки в ардуино:
Android приложение ШАГ 2 – Режим автономного управления роботом
Таким образом, основное activity примет вид: 
Объявим переменную b5:
И флаг позволяющий определить включен режим автоуправления или нет:
Создадим обработчик ее нажатия:
А также внесем изменения в обработчик кнопки «b0»(Стоп)
Осталось создать алгоритм позволяющий роботу самостоятельно перемещаться по помещению и объезжать препятствия.
Обработаем полученные данные о расстоянии до объекта отправленные ардуино. Если расстояние до объекта менее 50 см. то поворачиваем направо в противном случае едим прямо:
Ниже приведен полный код Activity:
Созданное приложение для андроида в связке с представленным скетчем ардуино, позволяет, как удаленно самостоятельно управлять роботом, так и включать режим автономного управление, при котором робот передвигается в прямом направлении и если требуется, объезжает препятствия.
Результатом проделанной работы является простейший рефлексный робот. Дальнейшее применение более сложных алгоритмов на базе приведенных шаблонных приложений и скетчей позволит создавать роботов основанных на модели, на цели, на полезности, обучающихся роботов и др.
К следующей статье я сделал заказ всего одного модуля:
| Наименование | Ссылка | Цена y.e | Цена руб | Кол-во | Сумма |
| Wifi модуль | dx.com/p/hi-link-hlk-rm04-serial-port-ethernet-wi-fi-adapter-module-blue-black-214540#.UutHKD1_sd0 | 14,99 | 524,65 | 1 | 524,65 |
ИТОГ: 524,65
В комментариях к предыдущей статье, хабра пользователь commanderxo порекомендовал не изобретать велосипед, а воспользоваться стандартным протоколом Firmata (протокол для обмена данными между ардуино и сервером). К сожалению работоспособной библиотеки, для андроида в связке с БТ, я не нашел. Написать свою библиотеку у меня не хватает времени и сил, поэтому в данной статье я продолжаю изобретать велосипед. Если кто из Хабра пользователей обладает информацией о такой библиотеке просьба поделиться.




































