PS: Пересоздал тему, а то неудачно её почистил от оффтопа

![]() |
roboforum.ruТехнический форум по робототехнике. |
|
|
Реклама | ||||
|
|
|||
![]() |
Предлагается для начала быть на порядок проще
как быть тем, у кого нет шлюза? или несколько девайсов цепочкой?Шаг 2. Считаем что по адресу 255 располагается устройство интегрированное в шлюз.
1. Автоматически спокойно юзать всю i2c периферию (наиболее яркий пример - сонары);
Единственное чего там нет - контроллер двигателей, но и то потому что мои интересы простираются намного дальше, чем выдать "ШИМ 95%", мне видите ли сразу обратную связь подавай от энкодеров и ПИД-регулятор, а так же очередь команд на перемещение..
lebaon писал(а):простота не должна мешать расширяемости!
Шаг 1. Считаем что у нас есть шлюз uart<=>i2c.
в принципе, до физического уровня нам и не надо опускаться![]()
вот например робот грома - там вообще поток данных пойдет по тсп-айпи, через вайфайку![]()
и так далее, имеется в виду логический протокол, который можно завернуть во что угодно
lebaon писал(а):как быть тем, у кого нет шлюза? или несколько девайсов цепочкой?Шаг 2. Считаем что по адресу 255 располагается устройство интегрированное в шлюз.
кроме того, у вас ф-ии разных типов в одну кучу будут![]()
lebaon писал(а):1. Автоматически спокойно юзать всю i2c периферию (наиболее яркий пример - сонары);
раз у нас есть шлюз, пусть он и транслирует протокол![]()
lebaon писал(а):Единственное чего там нет - контроллер двигателей, но и то потому что мои интересы простираются намного дальше, чем выдать "ШИМ 95%", мне видите ли сразу обратную связь подавай от энкодеров и ПИД-регулятор, а так же очередь команд на перемещение..
вот именно! в моем варианте, если к шлюзу подключить контроллер движков и сенсоры,
то шлюз станет реализовывать эту ф-ию, причем прозрачно! при этом модуль уровнем выше
( навигации например) сохраняет доступ к сенсорам![]()
при этом нам глубоко пофиг, как именно реализован модуль, или что одна плата содержит несколько
их, или что какие-то части вообще на компе програмно реализованны
Реклама | ||||
|
|
|||
![]() |
1. Что значит до физического уровня не надо опускаться? У вас уже всё готово?
2. А что вы хотите от логического протокола? Какую задачу вы хотите решить так, чтобы каждый её не перерешивал?
3. Введя логический протокол отличающийся от физического вы обречёте себя на прописывание драйвера к каждому устройству на уровне шлюза, а у меня это решено одним махом
Что такое "функции разных типов" в кучу? Что где в этом плохого то? А у вас будет бесконечное прописывание функций, которые никогда ни у кого друг с другом не совпадут чем лучше?
Что имеется в виду? Куда кого транслирует? Вы что собрались писать обертку для каждого i2c устройства? Да сонаров одних только несколько типов..
Во-первых на компе их не реализуешь (скорости обмена не те), да и трафик это сожрет махом;
Во-вторых у меня тоже пофиг что их несколько на плате или на шине;
Не хотелось бы уйти в разработку USB с профилями устройств для робота
lebaon писал(а):2. единый сетевой протокол для всех модулей
3. вам тоже писать придется , но у меня писать приется небольшую обертку, а у вас все связанное
lebaon писал(а):Что такое "функции разных типов" в кучу? Что где в этом плохого то? А у вас будет бесконечное прописывание функций, которые никогда ни у кого друг с другом не совпадут чем лучше?
не бесконечное, и совпадут!
вон, у всех (почти) есть код шима, или обратной связи по положению( сервы), и тд.
и их есть смысл стандартизировать![]()
lebaon писал(а):Что имеется в виду? Куда кого транслирует? Вы что собрались писать обертку для каждого i2c устройства? Да сонаров одних только несколько типов..
да, обертку, зато если надо сменить тип сонаров надо менять только ее, а не полкода
а вам фактически тоже придется писать обертку![]()
lebaon писал(а):Во-вторых у меня тоже пофиг что их несколько на плате или на шине;
то есть три ваших шлюза можно соединить цепочкой, и все будет работать?
lebaon писал(а):Не хотелось бы уйти в разработку USB с профилями устройств для робота
с усб тут лишь идеология немного похожа, а вообще я от qnet пляшу
Во-первых при чем тут код ШИМа? Я говорю об обертках разных устройств типа контроллер двигателей? Вы с чего взяли что они все на вход могут ШИМ только брать?
3. Мне не придется - придётся тому, кто пользуется i2c устройством. А если человек по образцу не способен накидать 10 строк кода на ПК, где он собирается писать основную управляющую программу - это клиника, а не робототехника
о я то обертку пишу для каждого из имеющихся устройств за 5 минут. Итого за полчаса - 6 устройств, а вы что предлагаете? Сэкономить эти 5 минут на устройство заморочившись на заранее готовые обертки?
Да, по i2c, просто два дочерних шлюза надо пока перепрошить (хотя позже можно сделать автодетект) и простно надо будет в запросе указать адрес шлюза к которому обращаемся.
Главное тут - если вы собираетесь писать на ПК обертку под каждый девайс и придумывать хитровыдуманный универсальный логический протокол для уровней от интернета до i2c, - тогда мне с вами 100% не по пути.
lebaon писал(а):Во-первых при чем тут код ШИМа? Я говорю об обертках разных устройств типа контроллер двигателей? Вы с чего взяли что они все на вход могут ШИМ только брать?
1. потому что один из самых распространенных
2. может быть реализован как аппаратно так и программно
3. как раз контроллеры двигателей берут на вход достаточно однотипный набор запросов,
которые они и транслируют в запросы к шиму, энкодерам, драйверам шаговиков, етс
при этом контроллеру двигателей глубоко пофиг, как там шим реализован - программно, аппаратно,
на той же меге, или на другом конце системы
lebaon писал(а):3. Мне не придется - придётся тому, кто пользуется i2c устройством. А если человек по образцу не способен накидать 10 строк кода на ПК, где он собирается писать основную управляющую программу - это клиника, а не робототехника
а когда сотни людей изобретаю велосипед это не клиника?
lebaon писал(а):о я то обертку пишу для каждого из имеющихся устройств за 5 минут. Итого за полчаса - 6 устройств, а вы что предлагаете? Сэкономить эти 5 минут на устройство заморочившись на заранее готовые обертки?
угу, это конкретно ты за 5 минут, а менее опытный и час будет трахаться,
и еще сюда вопросы писать
lebaon писал(а):Да, по i2c, просто два дочерних шлюза надо пока перепрошить (хотя позже можно сделать автодетект) и простно надо будет в запросе указать адрес шлюза к которому обращаемся.
хорошо, а указание номера шлюза - это тоже надо заложить в стандарт тогда
lebaon писал(а):Главное тут - если вы собираетесь писать на ПК обертку под каждый девайс и придумывать хитровыдуманный универсальный логический протокол для уровней от интернета до i2c, - тогда мне с вами 100% не по пути.
вспомним дос, где каждая прога имела свои драйвера - ведь что бы добавить еще один,
главному программеру нужно было всего 5 минут
Сергей писал(а):Интересная беседа. Разбавлю вот своим проектом.
Сергей писал(а):Идея, впринципе, заключается в том, что есть некий сервис, автоматически подключающий разного рода модули(к примеру, модуль шасси, модуль датчиков, причем датчики могут быть разных типов,то есть разделены на подклассы), а управление всем идет либо через сокет либо ручное управление. Можно подключать любое количество следящих портов usart, twi, spi, при этом просто написав файлы конфигурации(xml).
Сергей писал(а):Подключил некое устройство, оно определилось, подключилось, и теперь можно посмотреть что за устройство и посылать команды(управление шасси и датчиками пока точно не определено).
Сергей писал(а):Также предполагается собрать модуль wireless, для конфигурации некоторого беспроводного модуля и управление роботом на расстоянии. Делаю для того, чтобы при написании какихлибо алгоритмов не было проблем, связанных с "механикой". Ну вот впринципе и все, свое дело сделал)
=DeaD= писал(а):Если честно почти ничего не поняла хотелось бы, посему вопросы:
=DeaD= писал(а):Как можно универсальным образом работать скажем с i2c и с uart'ом? Они же приниципиально разные - адресации во втором нету.
///////////
// USART //
///////////
GUsart usart;
std::string buffer;
usart.Open("/dev/ttyS0", "configure.xml");
usart << "Hello, world! Say something: ";
usart >> buffer;
usart.Close();
/////////
// TWI //
/////////
GTwi twi;
std::string buffer;
twi.SetSlaveAddress(0x1F);
twi.Open("/dev/i2c-0", "configure.xml");
twi << "Hello, world! Say something: ";
twi >> buffer;
twi.SetSlaveAddress(...);
twi << "Hello, world again! Say something: ";
...
twi.Close();
/////////////////////
// CHASSIS & USART //
/////////////////////
...
GChassis<GUsart> chassis(usart);
chassis.Configure();
chassis.Launch();
chassis.Move(...);
=DeaD= писал(а):Грабли в том, что у вас должен быть весь спектр устройств и универсальные команды подходящие ко всему спектру устройств, а у вас этого принципиально быть не может, как вы это решаете?
=DeaD= писал(а):Какие успехи имеются на этом пути и сколько это заняло времени, если не секрет?
Сергей писал(а):=DeaD= писал(а):Как можно универсальным образом работать скажем с i2c и с uart'ом? Они же приниципиально разные - адресации во втором нету.
Ну тут я допускаю, что у usart есть только один адрес 0. Использование i2c предполагает, что перед использованием порта будет назначен адрес.
Также хочу отметить, что twi еще не прошел окончательных тестов. Как только будет отлажен и будет стабильно работать - я уже точно определюсь с "универсальностью".
Сергей писал(а):Вот приведу пару грубых примеров работы с портом:
Сергей писал(а):=DeaD= писал(а):Грабли в том, что у вас должен быть весь спектр устройств и универсальные команды подходящие ко всему спектру устройств, а у вас этого принципиально быть не может, как вы это решаете?
А я это не решаю. Библиотеку я делаю только ради удовольствия, и только в своих целях. Мне необходимо, чтобы можно было динамически подключать разные шасси, подключать имеющиеся типы датчиков, использовать в алгоритмах. Устройства я буду делать сам, но скорее всего буду делать один многофункциональный модуль на имеющемся ARM7.
Сергей писал(а):=DeaD= писал(а):Какие успехи имеются на этом пути и сколько это заняло времени, если не секрет?
В разработке. Пока ничего не могу сказать.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9