roboforum.ru

Технический форум по робототехнике.
Текущее время: 21 май 2025, 13:06

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 14:21 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Здравствуйте!

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

Название предлагаемого подхода - 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 КиБ | Просмотров: 6094 ]

_________________
Все новости о моих проектах http://savethebest.ru


Последний раз редактировалось Виталий 25 авг 2010, 16:02, всего редактировалось 2 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 14:37 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 14:47 
Не в сети
Аватара пользователя

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

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 15:44 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 15:44 
Не в сети
Аватара пользователя

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

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 16:15 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
По той же логике ничто не мешает и частный случай протокола RPC самому написать под такие функции.

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

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

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

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

Это не совсем так. Urbi не может самостоятельно создать этот промежуточный слой, вам его придется реализовать самостоятельно, расширять, дополнять. Вот здесь вам может помочь наша разработка. Вы напишете необходимые функции, автоматически сгенерируете для них привязку к C# и с легкостью реализуете UObject, т.к. уже будете иметь готовый класс для "общения" с роботом посредством вызова его функций.

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 16:18 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
В том-то и дело, что мы избавляемся от необходимости написания (расширения) каждый раз протокола обмена. Написал функцию, объявил что ее можно вызвать через RPC, получил возможность вызова данной функции с компьютера. А такой набор функций есть в Ардуино.

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 16:50 
Не в сети
Аватара пользователя

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

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

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

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

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 17:00 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ну в общем круто, сам буду смотреть может где применю, но специфично!

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 24 авг 2010, 17:19 
Не в сети
Аватара пользователя

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

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 25 авг 2010, 13:33 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 25 авг 2010, 13:43 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 25 авг 2010, 14:00 
Не в сети
Мастер Самоделкин
Аватара пользователя

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

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 25 авг 2010, 14:08 
Не в сети

Зарегистрирован: 16 мар 2010, 17:42
Сообщения: 96
Откуда: Калуга
В первом посте есть ссылка на описание, там это описано. Вся прелесть в том, что не надо понимать как МК поймет чего от него хотят :).

Классная вещь.
А к Processing ее прикрутить можно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление роботом с компьютера. Новый подход.
СообщениеДобавлено: 25 авг 2010, 16:01 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
Зачет.
Но эт все здорово, пока не начались треды, реентерабельность, сборщики мусора, и всякие прочие "области видимости", "времена жизни", "создания объектов"... (не говоря уже о дебаге например)
Боюсь, что полноценный RPC - очень непростая в реализации штука.

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

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

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


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

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

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

Да, можно.

P.S. Добавил короткое видео в заглавное сообщение.

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO