Спасибо, ребята, за похвалы! Поддержка нам всем важна.
Elmot – добро пожаловать в проект!
Madf писал(а):больше похоже на спектакль
Это и есть спектакль, в чем я честно признаюсь. Все спинномозговые функции работают. Но дальше надо браться, собственно, за ИИ. А это большой объем работы. В одиночку вряд ли потяну. Да и хотелось узнать сначала у форумчан, вызовет ли такой проект хоть какой-нибудь интерес.
Раз интерес есть, будем говорить более детально.
СОФТ.
Madf писал(а):Исходники где (хотя бы прошивка, схемы и прилажухи)?
Спокойствие, только спокойствие! Все будет.
Исходников мне конечно не жалко. Тем более, что никакого «ноу-хау» в них пока нет. Все решения стандартные, подсмотренные в интернете. Только мой код никак не может являться эталоном.
Дело в том, что этот проектик я задумал, как раз, чтобы заставить себя разобраться с не очень симпатичной мне Джавой для Андроида. До этого я легко обходился скриптом на Питоне + АппИнвентор для разнообразия. Смартфон на андроиде весьма интересен в качестве робомозга, но SDK заточен под джаву (мерзкое слово, лучше буду называть «ява»). Раньше я уже пытался тупо смотреть сначала в эклипс, потом в андроид студио. Но довольно быстро начинало тошнить от этих бесконечных унаследованных классов, я быстренько писал несколько нужных мне строк на питоне и забывал о яве, как о кошмарном сне. Так что нужно было именно себя заставить, придумав проект, в котором средств Sl4a скрипта было бы недостаточно.
Думаю, что, если бы профессиональный ява-программер увидел мой код, то у него возникло бы непреодолимое желание набить мне морду.
По крайней мере, вывешивать огромные листинги кода прямо в топике не будем. Разве что отдельные нетривиальные фрагменты. Ну, а в личку всегда пожалуйста, только причешу код сначала.
Исходя из вышесказанного, прежде всего нам нужен настоящий ява – программист, а не это чмо
Попозже набросаю схемку функциональных блоков программы, для дальнейшего обсуждения.
Софт – это то, что надо реализовать в первую очередь, хотя бы в каком-то, готовом к использованию виде. Боюсь, что для этого понадобятся не только программисты, но и специалисты по ИИ, и возможно по онтологиям, семантическому анализу и т.д.
АППАРАТНАЯ ЧАСТЬ
Объектом для экспериментов выбран Samsung Galaxy S3 почтенного возраста с Android 4.3 на борту. Думаю, что софт должен работать со старыми смартфонами, чтобы робот давал им вторую жизнь, после их морального устаревания.
Подвижная платформа достаточно аскетична: 2 ведущих колеса, серва для наклона, датчик температуры, 2 ИК-дальномера, для обнаружения препятствий + ИК датчик поверхности, чтобы не навернуться со стола. Как опция – серва для виляния «хвостом». Все д.б. достаточно компактным, чтобы подставка для смартфона не выглядела монстроподобно. Так же подставка д.б. хорошо сбалансирована для устойчивости при движении.
Будучи подключенным и источнику питания смарт должен заряжаться, а при отключении внешнего питания, должен сам питать мобильную платформу своей батареей. Раз уж смарт будет подключен к USB для зарядки, то логично использовать этот интерфейс и для общения с контроллером платформы. Как известно этого можно добиться, в режиме, когда смартфон является хостом, для подключенных USB- устройств. При этом устройства должны подключаться кабелем OTG, который
отличается от обычного USB кабеля, тем что не используемый в обычном кабеле контакт ID (4), у него замкнут на GND (5). По входу ID андроид определяет, что смарт должен стать мастером в USB подключении и питать подключенное устройство. Однако в нашем случае этого не достаточно, т.к. при подключении внешнего питания, смартфон должен переходить в режим зарядки, при этом продолжая обмен данными с USB устройством. Для такого случая предусмотрены различные режимы Accessory Charger Adapter (ACA), в зависимости от напряжения на входе ID-OTG. Понятно, что умный телефон должен разбираться, подключена ли к нему флэшка или внешний жесткий диск, и стоит ли это устройство питать.
Проще говоря ногу ID надо подключать к «земле» через резистор 67кОм. В этом случае, смартфон останется USB хостом, но питать устройство уже не будет, а наоборот, будет сам заряжаться. Утверждать это могу только для моего самсунга, т.к. ACA работает не на всех телефонах и не со всеми прошивками. Функция может быть
заблокирована программно в драйвере ядра системы. А у других моделей нет и аппаратной поддержки. Значение резистора также может меняться. Документация по ACA рекомендует резистор 124кОм, однако у меня он не работал. Я уже думал менять прошивку, как случайно нашел на одном форуме 67к. Попробовал – получилось. Перед этим пришлось расковырять пару micro USB кабелей, т.к. в первом «5-й элемент» ID ножка заканчивался где-то в пластике разъемчика и на свет не выходил.
Для подключения/отключения резистора, я использую разъем питания с размыкающимся контактом. Но, понятно, что это не очень элегантное решение. На входе платформы д.б. тот-же микро – USB, что и у телефона. Чтобы пользоваться стандартным кабелем. Логичнее всего впаять разъем на платку контроллера. А, размыкать резистор будет уже сам контроллер. Кажется просто. Но я, например, не могу сообразить, как контроллеру определить, что он запитан от внешнего источника, без диодной развязки. А через диод зарядка смарта может не пойти.
Это первая аппаратная проблема: Не все модели телефонов поддерживают АСА, в нашем наборе появляется нестандартный элемент (разъем микро – USB с выводом в кабель 5-й точки). К тому-же я не уверен, что все популярные модели смартфонов используют именно микро – USB и, что он расположен в нужном месте.
Как решение – отказаться от USB разъема, а с платформой связываться по ВТ. Но это удорожание платформы: ВТ-модуль + батарея + чип для зарядки + габариты. Да и смарт без зарядки долго не продержится.
elmot писал(а):Предлагаю НЕ ардуину
Я не говорю, что надо использовать ардуино. А, что наш контроллер д.б. ардуино- совместимым, чтобы представлять интерес и как отдельный продукт. Я, например, не видел в продаже ардуино в формате микро с интегрированным драйвером моторчиков.
ОБЩИЕ ВОПРОСЫ
Madf писал(а):Человек должен иметь возможно сам всё собрать (легко, зашить железо...
Не думаю,что люди, которые хотят что-то собирать и программировать, составляют значительный сегмент предполагаемого рынка сбыта. Да и для них выпускается огромное количество всевозможных конструкторов.
Скорее позиционировать товар на рынке надо как «Робот – питомец» или «Робот – компаньон» стоимостью до 50 долларов, например.
В прочем, это будет решать маркетолог, который на определенном этапе обязательно понадобиться, как и рекламщик.
Madf писал(а):Не у всех есть 3Д принтеры
Корпуса для платформы можно предлагать опционально. Под конкретную модель и нужного заказчику цвета.
А стандартный набор – это универсальная электроника. Сборка – только воткнуть элементы в корпус с защелками и подключить разъемчики. Такой набор будет легко упаковывать и рассылать. А стоимость его не будет отпугивающей.
Сам корпус тоже лучше сделать безвинтовой. Чтобы все элементы просто вставлялись друг в друга.