РОЖДЕНИЕ РОБОТА

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

При массовом производстве такой робот:

Затмит по популярности тамагочи
7
17%
Вероятно будет пользоваться стабильным спросом какое-то время
7
17%
Может понравится детям и долбанутым гикам, типа автора темы
18
44%
Вряд ли кого-нибудь заинтересует
5
12%
Фигня это все, т.к. реализовать идею все равно не получится
4
10%
 
Всего голосов : 41

Re: РОЖДЕНИЕ РОБОТА

Сообщение Vlad-I » 13 сен 2015, 21:35

Ну вообще-то Java тут ни при чем, это концепция ООП. По идее, именно с изучения ООП и нужно начинать. Лучше описать задачу конкретнее, и тогда возможны и другие варианты :) При грамотной архитектуре вполне возможно, что классу B совсем необязательно понадобится вызывать методы класса А
Vlad-I
 
Сообщения: 307
Зарегистрирован: 06 апр 2013, 01:14
Откуда: Мытищи-Королев

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 13 сен 2015, 23:04

Scorpio писал(а):Датчики симпатичные, но дороговатые.

Ну что за детский сад? Датчики расстояния по 5 евро дороговатые...
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 13 сен 2015, 23:05

Наверное ООП. Но у явы есть только ООП без всяких альтернатив. ООП поддерживается практически во всех современных языках, включая C++ и VB, с которыми я хорошо знаком. Но нигде таких трудностей не возникало.
Конкретнее. Допустим, есть класс TTS, который предназначен для воспроизведения речи, в нем есть метод для запуска синтезатора и событие по окончанию воспроизведения. Из другого класса мы должны запустить воспроизведение и получить подтверждение об его окончании, чтобы двигаться дальше. Как это лучше организовать?

Добавлено спустя 49 секунд:
elmot писал(а):Датчики расстояния по 5 евро дороговатые...

А где там 5? 19 вроде.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 13 сен 2015, 23:14

Scorpio писал(а):Конкретнее. Допустим, есть класс TTS, который предназначен для воспроизведения речи, в нем есть метод для запуска синтезатора и событие по окончанию воспроизведения.

Listener'ы на события. Послать событие запуска плейера, получить событие окончания звука. Кстати, оч быстро так приедешь в архитектуру ROS.

Scorpio писал(а):А где там 5? 19 вроде.

На маусере _пара_ датчиков, уже распаянных на платки - 15 евро.
там же, сам чип, в партии 10 шт - 5 евро/шт.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 13 сен 2015, 23:28

elmot писал(а):Listener'ы на события.

Слушатель и так есть, в классе TTS, теперь он хочет поделиться этим событием с другими классами. В т.ч. и с тем, который его запускал. Что-то я туплю с этой явой. Вот есть 2 объекта, которые хотят общаться друг с другом. Что тут сложного? Но, как это просто и прозрачно сделать без всяких хелперов и меседжей. Хоть в одном классе всю прогу пиши. Видимо я до ООП еще не дорос :o
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 13 сен 2015, 23:45

Scorpio писал(а):
elmot писал(а):Listener'ы на события.

Слушатель и так есть, в классе TTS, теперь он хочет поделиться этим событием с другими классами. В т.ч. и с тем, который его запускал. Что-то я туплю с этой явой. Вот есть 2 объекта, которые хотят общаться друг с другом. Что тут сложного?

Да ничего. Либо как тебе раньше сказали, создал оба класса, потом друг другу их проставил через сеттеры. Нормальный ООПшный подход, но оч быстро таких классов и сеттеров станет с перебором, так что лучше сразу мессаджами(эвентами). Если впадлу самому писать поддержку сообщений, возьми гуаву, там уже оно есть.
Но, как это просто и прозрачно сделать без всяких хелперов и меседжей. Хоть в одном классе всю прогу пиши.

Ну пиши, через полдня получишь спагетти, который сам уже не разберешь:)
Видимо я до ООП еще не дорос :o

Может и так.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 13 сен 2015, 23:50

и на том спасибо...
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 13 сен 2015, 23:57

кстати, если четко уверен, что твоих классов тебе надо по одной штуке ровно, сделай через статические методы. Будет тебе не ООП.
Но это плохой совет, потом поймешь почему:)
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 14 сен 2015, 00:18

Дык статические методы только со статическими данными работают.
Короче сделал так:
Сначала в активити создал экземпляры всех вспомогательных классов через их конструкторы,
Последним создал экземпляр диспетчера (с выдачей ему ссылок на все вспомогательные классы), который работает в основном потоке и будет со всеми общаться,
Раздал на него ссылку всем вспомогательным классам, чтобы они могли ему отвечать,
Диспетчер на прямую выполняет методы из вспомогательных классов (типа "сказать фразу"),
Возникающие во вспомогательных классах события, посылают сообщения диспетчеру в его хендлер.

Возможно грубо и тупо, но работает. Хотелось бы все-таки узнать, как это делают нормальные люди.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 14 сен 2015, 07:39

Ну я тебе уже рассказал:) Лучше "туда" тоже через диспетчер и события. Хотя бы из соображений, что вдруг "говорилок" будет больше одной.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 14 сен 2015, 21:33

Вот, скажите мне лучше такую вещь, если кто-то из читающих разбирался с распознавалкой речи под андроид, т.к. мне кажется, что я столкнулся с неразрешимой проблемой…
После долгого гугленья и экспериментов, я сделал для себя следующие вывод:
Гугловский движок не рассчитан на возможность непрерывного распознавания. Обычный сеанс проходит так: вызвали распознавалку, появилось окошко с микрофоном одновременно со звуковым оповещением и через пару секунд пошла запись. Если в течении 5 секунд ничего не услышано, либо не удалось ничего распознать, то появится соответствующая объява с предложением повторить сеанс распознования.
Нам такой вариант не подходит, т.к. робот должен слушать эфир непрерывно, когда сам не говорит. И тыкать ему пальцами в экран не предполагается. Т.е. сервис надо все время автоматически перезапускать.
От гугловских окошек с микрофонов удалось избавиться с помощью RecognitionListener. От писка, оповещающего о начале процесса распознавания избавиться не удается, можно только его приглушить, отключив звук на время писка. Факт в том, что движок распознавалки делает секундную паузу после запуска, перед тем, как начать слушать. Получается цикл 5 секунд слушает, 1 секунду глухой. Время в 5 секунд теоретически можно увеличить. Однако на практике ничего не меняется, по крайней мере в моем телефоне.
Отношение 5:1 конечно не маленькое, но на практике куски фраз часто пропадают, если начал говорить в ту злосчастную секунду.
Как решение этой проблемы записывать речь во FLAC и отправлять на онлайн распознавалку. Но, это значит сделать робота полностью интернетозависимым, чего не хотелось бы.
У кого-нибудь есть мысли по этому поводу?
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 14 сен 2015, 21:37

Распознавалка и так инет-зависмая ЕМНИП.
Все время слушать и распознавать тоже не вариант - а)будет жрать батарею по-дикому, б) он тебе там нараспознает и навыполнят - рад не будешь. Не зря же они свой "окей, гугл" придумали
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 14 сен 2015, 21:50

elmot писал(а):Распознавалка и так инет-зависмая

Уже давно независимая. А распознает он с метрового расстояния не больше, так что разговоры соседей по дому врядли его собьют с пути истинного. Впрочем, вставлять ключевое слово перед фразой тоже можно.
Насчет батареи надо будет замерить в режиме непрерывного слушания. В любом случае робот еще и док станция и большее время своей жизни находится на привязи.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение Scorpio » 16 сен 2015, 00:35

Похоже я тут один остался. :cry:
Для затравки хочу попросить протестировать «умника» на разных смартфонах на предмет синтеза/распознавания голоса. Желательно разными голосами, на разных расстояниях. Чтобы сделать выводы, стоит ли игра свеч.
Последний раз редактировалось Scorpio 20 сен 2015, 18:07, всего редактировалось 1 раз.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: РОЖДЕНИЕ РОБОТА

Сообщение elmot » 16 сен 2015, 10:23

Издеваисси? Ты выложи куда-нибудь .apk, а здесь штрих-код и короткую ссылку положи. А то ведь это аццкий геморрой с форума через zip в телефон загонять.
Ты, кста, не один. Я тут подумал - наверное постараюсь забабахать аппаратную платформу. И датчики те на пробу закажу. Но вот твои архитектурные подходы меня совсем не радуют. Поэтому молчу.

ЗЫ. нужна идея по моторам. простые, дешевые, с энкодерами, под 3В питания, со внятной надежностью.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Пред.След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1