roboforum.ru

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

Управление роботом с компьютера. Новый подход.

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Управление роботом с компьютера. Новый подход.

Сообщение Виталий » 24 авг 2010, 14:21

Здравствуйте!

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

Название предлагаемого подхода - Remote Procedure Call (http://ru.wikipedia.org/wiki/Remote_Procedure_Call).
Его смысл заключается в том, что мы можем вызывать функции одного адресного пространства (микроконтроллера) из другого адресного пространства (компьютера).

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

Мы реализовали такую функциональность для Ардуино.
Более подробная инструкция по использованию http://bitbucket.org/sources/tiny-rpc/wiki/Home
Готовый пакет: http://bitbucket.org/sources/tiny-rpc/d ... -21.08.zip

Пример. У вас есть робот который должен управляться с компьютера, и пользоваться датчиком температуры.
Вы написали в Ардуино примерно такой код:
Код: Выделить всёРазвернуть
void Move(int vl, int vr)
{
    // Set left (vl) and right (vr) wheel velocity
}

double Temperature()
{
    // Read temperature sensor
}


Для того, чтобы сделать функции вызываемыми с компьютера вам надо добавить в скетч вот такой код:
Код: Выделить всёРазвернуть
void Move(int vl, int vr);
double Temperature();


После этого нажать волшебную кнопку RPC и для вас будет создан файл для C# в котором будет создан специальный класс, предназначенный для удаленного вызова помеченных процедур.
Вложения
Arduino.png
Arduino.png (11.53 КиБ) Просмотров: 5532
Последний раз редактировалось Виталий 25 авг 2010, 16:02, всего редактировалось 2 раз(а).
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Управление роботом с компьютера. Новый подход.

Сообщение =DeaD= » 24 авг 2010, 14:37

Я думаю тема крайне полезная в ряде случаев, а не получила должного развития, потому что ИМХО чаще всего людям хочется вообще избавиться от программирования такого низкого уровня, и работать уже с готовым протоколом или его оберткой в виде DLL-ки.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом с компьютера. Новый подход.

Сообщение Виталий » 24 авг 2010, 14:47

Я не думаю что причина именно в этом.
Ничто не мешает прокидывать "наверх" не такие функции как я показал, а функции работы с периферией.
А DLL-ка по-сути у нас и формируется, даже лучше чем DLL-ка. =)
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Управление роботом с компьютера. Новый подход.

Сообщение =DeaD= » 24 авг 2010, 15:44

По той же логике ничто не мешает и частный случай протокола RPC самому написать под такие функции. Я говорю - большинству надо не RPC, а готовый набор функций, лишь бы не разбираться, как это на низком уровне делается. Поэтому скорее всего и не прижилось. Всё это конечно моё скромное ИМХО :oops:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом с компьютера. Новый подход.

Сообщение noonv » 24 авг 2010, 15:44

похожий подход используется в Urbi.
Cоздаётся urbi-объект UObject, который выполняет роль драйвера(промежуточного слоя) между Urbi и роботом(Arduino). Получается, что промежуточный слой берёт на себя протокол общения с роботом, предоставляя внешнему слою прозрачные интерфейсы(значения величин, вызов методов/функций).
Аватара пользователя
noonv
 
Сообщения: 601
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Управление роботом с компьютера. Новый подход.

Сообщение Виталий » 24 авг 2010, 16:15

По той же логике ничто не мешает и частный случай протокола RPC самому написать под такие функции.

В том-то и дело, что мы избавляемся от необходимости написания (расширения) каждый раз протокола обмена.
Написал функцию, объявил что ее можно вызвать через RPC, получил возможность вызова данной функции с компьютера.

Я говорю - большинству надо не RPC, а готовый набор функций, лишь бы не разбираться, как это на низком уровне делается.

А такой набор функций есть в Ардуино.

похожий подход используется в Urbi.
Cоздаётся urbi-объект UObject, который выполняет роль драйвера(промежуточного слоя) между Urbi и роботом(Arduino). Получается, что промежуточный слой берёт на себя протокол общения с роботом, предоставляя внешнему слою прозрачные интерфейсы(значения величин, вызов методов/функций).

Это не совсем так. Urbi не может самостоятельно создать этот промежуточный слой, вам его придется реализовать самостоятельно, расширять, дополнять. Вот здесь вам может помочь наша разработка. Вы напишете необходимые функции, автоматически сгенерируете для них привязку к C# и с легкостью реализуете UObject, т.к. уже будете иметь готовый класс для "общения" с роботом посредством вызова его функций.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Управление роботом с компьютера. Новый подход.

Сообщение =DeaD= » 24 авг 2010, 16:18

Виталий писал(а):В том-то и дело, что мы избавляемся от необходимости написания (расширения) каждый раз протокола обмена. Написал функцию, объявил что ее можно вызвать через RPC, получил возможность вызова данной функции с компьютера. А такой набор функций есть в Ардуино.

Да я понял, я говорю что раз вы даёте более универсальный механизм - значит пользователю всё равно надо заморочиться и выбрать нужные функции, собрать прошивку и т.п. И в целом - теряется смысл Ардуино тогда - зач ем совместимость с этим загадочным форм-фактором, если не надо гибкости в программировании и миллиона примеров? А если вы за юзера выбрали нужные ему функции - тогда зачем ему после этого универсальный RPC? В общем с точки зрения технологии - крутая фича ваш RPC, с точки зрения маркетинга - мне сомнительно, что аудитория будет широка.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом с компьютера. Новый подход.

Сообщение Виталий » 24 авг 2010, 16:50

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

Да, на данный момент это так. Но можно делать и стандартные сборки, если будет необходимость.

теряется смысл Ардуино тогда - зач ем совместимость с этим загадочным форм-фактором, если не надо гибкости в программировании и миллиона примеров?

Смысл Ардуино остается, т.к. не все функции можно вынести на ПК в связи с временем их выполнения или критичностью. В этом смысле Ардуино остается автономным узлом на котором могут быть реализованы простейшие, но необходимые функции (например защита от перегрузок, реакция на сработавшие концевики).
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Управление роботом с компьютера. Новый подход.

Сообщение =DeaD= » 24 авг 2010, 17:00

Ну в общем круто, сам буду смотреть может где применю, но специфично!

Вы кстати на английском языке к своей штуке будете писать документацию, чтобы продвигать за границей?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Управление роботом с компьютера. Новый подход.

Сообщение Виталий » 24 авг 2010, 17:19

Специально продвигать за границу мы не думаем, но препятствий быть не должно.
Документация на английском. Но вопросы можно задать здесь на русском.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Управление роботом с компьютера. Новый подход.

Сообщение Victorovych » 25 авг 2010, 13:33

Забавная финьга, только здается мне что она эффективна в случае тормозных либо перегруженных процессоров (привет языки высокого уровня)и быстрых линий передачи между ними.
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

Re: Управление роботом с компьютера. Новый подход.

Сообщение Michael_K » 25 авг 2010, 13:43

Зачет.
Но эт все здорово, пока не начались треды, реентерабельность, сборщики мусора, и всякие прочие "области видимости", "времена жизни", "создания объектов"... (не говоря уже о дебаге например)
Боюсь, что полноценный RPC - очень непростая в реализации штука.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Управление роботом с компьютера. Новый подход.

Сообщение -= Александр =- » 25 авг 2010, 14:00

Че-то я не очень понимаю как ПК поймет где находится контроллер и как к нему подключится. И как МК поймет что от него хотят? Тогда на нем надо поднимать ОС, способную к RPC. А это все уже не так просто... По мне так куда проще протокол обмена сделать, который так-же будет вызывать функции и возвращать их значения.
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Re: Управление роботом с компьютера. Новый подход.

Сообщение AnyWay » 25 авг 2010, 14:08

В первом посте есть ссылка на описание, там это описано. Вся прелесть в том, что не надо понимать как МК поймет чего от него хотят :).

Классная вещь.
А к Processing ее прикрутить можно?
AnyWay
 
Сообщения: 96
Зарегистрирован: 16 мар 2010, 17:42
Откуда: Калуга

Re: Управление роботом с компьютера. Новый подход.

Сообщение Виталий » 25 авг 2010, 16:01

Зачет.
Но эт все здорово, пока не начались треды, реентерабельность, сборщики мусора, и всякие прочие "области видимости", "времена жизни", "создания объектов"... (не говоря уже о дебаге например)
Боюсь, что полноценный RPC - очень непростая в реализации штука.

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

Че-то я не очень понимаю как ПК поймет где находится контроллер и как к нему подключится.

Ну для доступа к контроллеру автоматически создается класс RemoteObject, в конструкторе которого и указывается тот последовательный порт к которому подключен контроллер.
Код: Выделить всёРазвернуть
RemoteObject arduino = new RemoteObject("COM20", 57600);


И как МК поймет что от него хотят? Тогда на нем надо поднимать ОС, способную к RPC. А это все уже не так просто... По мне так куда проще протокол обмена сделать, который так-же будет вызывать функции и возвращать их значения.

В том то и дело, что ничего не надо поднимать. Ты просто пишешь функцию для МК, помечаешь ее как remotable и она автоматом добавляется в класс RemoteObject(), а протокол обмена и его реализация генерируются автоматически.

А к Processing ее прикрутить можно?

Да, можно.

P.S. Добавил короткое видео в заглавное сообщение.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

След.

Вернуться в Микроконтроллеры

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

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

cron