roboforum.ru

Технический форум по робототехнике.

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

Ответить

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

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

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

Scorpio » 11 сен 2015, 19:14

В любом случае, разговоры про модульность будущего приложения, это рассуждения на тему КАК нам это сделать, когда мы еще не решили вопрос ЧТО мы будем делать.

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

=DeaD= » 11 сен 2015, 19:25

Scorpio писал(а):В любом случае, разговоры про модульность будущего приложения, это рассуждения на тему КАК нам это сделать, когда мы еще не решили вопрос ЧТО мы будем делать.

Моё предложение - на первом этапе ядро будем делать + некоторый простенький набор модулей.

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

Scorpio » 11 сен 2015, 21:49

Для наачала надо сам механизм обмена данными отработать и сваять простенький пример типа hellow word. Чтобы понять общие принципы и что из себя будут представлять ядро и модули (активити, сервисы, фоновые процессы). Надеюсь, что тот кто глубоко разбирается в яве и андроиде, посоветует, как это лучше организовать.

Добавлено спустя 17 минут 41 секунду:
Несколько ссылок по теме:
http://www.compulog.ru/public_po/moduln ... a_programm
http://habrahabr.ru/post/123306/
http://gurumagento.varshevsky.com/andro ... rplate.htm

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

=DeaD= » 11 сен 2015, 21:52

Да там в принципе не так много вариантов. Тем более, если следовать идеологии ROS, у которой всё общение идет через TCP/IP, насколько я помню.

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

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

Scorpio » 11 сен 2015, 21:56

"виртуальный конструктор, с помощью которого пользователь подбирает необходимый набор функций" тоже мысль. Как-то визуализировать этот процесс.
Тяжелых потоков данных лучше избегать. Модуль распоснавалки д.б. самодостаточным и сам захватывать изображение. Но, как-то надо синхронизировать доступ к камере из разных модулей. Там есть еще сложности, что типа приложение, не владеющее экраном в данный момент не может сделать снимок. Надо во всем этом разбираться.

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

=DeaD= » 11 сен 2015, 22:46

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

PS: Так-то конечно в андроиде есть IPC, но это менее кросс-платформенная технология.

Добавлено спустя 21 минуту 41 секунду:
Вот, кстати, свежее на хабре в том же духе, о чем я говорю: http://habrahabr.ru/company/1cloud/blog/266699/

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

Scorpio » 11 сен 2015, 22:47

Из разных модулей невозможен одновременно. Ты так говоришь, будто модули будут расположены на разных смартфонах. Мы же картинки не по UARTу будем передавать. А по интенту, это все равно, что обмен данными между классами одного приложения. Как я понимаю.

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

=DeaD= » 11 сен 2015, 23:20

Scorpio писал(а):А по интенту, это все равно, что обмен данными между классами одного приложения. Как я понимаю.

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

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

Виктор Казаринов » 12 сен 2015, 20:17

В ROS2 декларирована поддержка протокола RTPS (Real-Time Publish-Subscribe Protocol), который может действовать поверх TCP, USB, RS-485 или еще более простых интерфейсов. Это позволит осуществлять публикацию данных и подписку на сервисы в реальном времени, что особенно важно для роботов.

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

elmot » 12 сен 2015, 22:15

Ну, прямо скажем, ROS долго жил и без реального времени:) На самом деле не так-то оно важно.
Вот лучше взгляните на новые датчики - оптический измеритель расстояния. Я его в деле видел - весьма убедительно.
Сам датчик.
http://www.st.com/web/catalog/mmc/FM132/SC1934/PF260441

Плата попробовать с ардуиной или nucleo.
http://www.st.com/web/en/catalog/tools/PF261465

набор из 2 плат, чтобы маленькое и с пайкой корпуса не мудохаться.
http://www.st.com/web/en/catalog/tools/PF261466#

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

Scorpio » 12 сен 2015, 23:31

Датчики симпатичные, но дороговатые.
=DeaD= писал(а):Между классами можно по указателю кидать данные, а у процессов нет общей памяти.

"Самая большая и шокирующая новость для тех, кто раньше программировал на С, а теперь занялся изучением Java, это то, что в языке Java нет указателей"
Но я имелл ввиду конечно между потоками одного приложения, а не между классами.

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

=DeaD= » 13 сен 2015, 07:51

Scorpio писал(а):Датчики симпатичные, но дороговатые.
=DeaD= писал(а):Между классами можно по указателю кидать данные, а у процессов нет общей памяти.

"Самая большая и шокирующая новость для тех, кто раньше программировал на С, а теперь занялся изучением Java, это то, что в языке Java нет указателей"

В синтаксисе нет, а в движке есть. Все объекты при передаче в качестве параметров в какие либо методы передаются указателями, что невозможно при IPC, поскольку некуда указывать, нет "обычной" общей памяти.

Кстати, нашел, что в принципе "shared memory" можно устроить для процессов, например, библиотекой "ashmem" под Си или "MemoryFile" - её оберткой под Java.

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

Scorpio » 13 сен 2015, 20:20

Боюсь показаться совсем тупым, но действительно не могу никак врубиться в эту яву. Вроде элементарная вещь. У меня есть 2 класса А и В. Класс А должен запускать метод класса В. Значит в классе А делаем экземпляр В и инициализируем его через конструктор В. Но, классу В тоже нужно запускать методы класса А. Значит он у себя должен создать экземпляр класса А, запустив его конструктор. Но в конструкторе А запускается конструктор В. Получается замкнутый круг. Короче, как установить двухстороннюю связь между 2-мя классами? До сих пор обходился односторонней, но тут стал делать класс - диспетчер, который имеет 2-х стороннюю связь со всеми классами.
Код: Выделить всёРазвернуть
public class A(){
B b;
//конструктор
A(){b=new B();}
private void a1(){
      b.b1();
   }
public void a2(){

      }
}
public class B(){
A a;
//конструктор
B(){a=new A();}
public void b1(){

   }
private void b2(){
      a.a2();
      }
}

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

Vlad-I » 13 сен 2015, 20:51

Зачем вызывать конструктор класса A в B? Просто нужно создать метод в B для передачи ссылки на существующий экземпляр класса A

Код: Выделить всёРазвернуть
public void setA(A aExisting) {
   a = aExisting;
}

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

Scorpio » 13 сен 2015, 21:21

А кто его будет запускать? Т.е. класс А должен запустить b.setA, и передать ему собственный экземпляр? Как то тупо все...


Rambler\'s Top100 Mail.ru counter