roboforum.ru

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

Концепция ORFA и немного шире

Правила форума
Правила раздела OpenRobotics

Re: Концепция ORFA и немного шире

=DeaD= » 18 май 2010, 08:30

Это на прошивках которые я только что выложил или на тех, которые с автодетектом скорости?

Добавлено спустя 32 секунды:
Вообще после старта контроллера некоторое время бутлоадер ждёт прошивку - в это время у меня сервы спокойно стоят.

Re: Концепция ORFA и немного шире

pashteet » 18 май 2010, 08:33

на той, которая с автодетектом. А у тебя при включении сервы вообще не дергаются?

Re: Концепция ORFA и немного шире

=DeaD= » 18 май 2010, 08:39

При включении дергаются вроде, но недолго.

Re: Концепция ORFA и немного шире

Vooon » 18 май 2010, 08:48

Так с автодетектом нужно сначала восемь раз перевод строки отправить.
Зря я что ли руководство писал?

Re: Концепция ORFA и немного шире

pashteet » 18 май 2010, 09:39

=DeaD= писал(а):Я снова взялся за ORFA. Для начала добавил возможность плавных движений в серводрайвер OR-AVR-M128-*, теперь команда <номер_сервы_1байт> <позиция_2байта> дополнилась командами:

<номер_сервы_1байт+128> <максимальная_скорость_2байта>

и

<255> <общее_время_выполнения_команды_2байта>

Так что функционал ORFA и ORC-32 почти сравнялся. осталось добавить команды запроса положения сервы и окончания всех операций.

Приведи какой-нибудь пример

Добавлено спустя 22 минуты 19 секунд:
все, разобрался

Добавлено спустя 50 секунд:
Блин, теперь когда отдаешь команду двум сервам одновременно, то одна начинает двигаться сильно позже чем вторая =(

Re: Концепция ORFA и немного шире

=DeaD= » 18 май 2010, 10:17

Очень странно про "сильно позже" - давай пример, вечером проверю. Видимо какой-то мой глюк.

Re: Концепция ORFA и немного шире

pashteet » 18 май 2010, 12:48

Пример простой:
Код: Выделить всёРазвернуть
S40 11 00 04C9 08 01F4 80 0096 88 0096 P

Ставит две боковые сервы в крайнее положение со скоростью 150. Серва 00 начинает движение, после паузы около 1 сек серва 08 начинает движение. Ну и соответственно серва 00 приходит в крайнее положение раньше, чем серва 08 где-то на 1 сек

Добавлено спустя 2 минуты 19 секунд:
А если гнать сервы на полную скорость, т.е.:
Код: Выделить всёРазвернуть
S40 11 00 04C9 08 01F4 P

то стартуют почти одновременно, "на глаз" разницы во времени незаметно

Добавлено спустя 2 минуты 1 секунду:
Кстати, с новой прошивкой большие сервы не дергаются после запуска контроллера, а маленькие все-равно дергаются :(

Re: Концепция ORFA и немного шире

=DeaD= » 18 май 2010, 20:21

Нашел ошибку в драйвере серв M128-DS, вчера для M128-S исправил, а тут забыл :(

Вот пофиксенные версии:
orfa-new-ds-115200.zip
(8.51 КиБ) Скачиваний: 0

orfa-new-ds-9600.zip
(8.51 КиБ) Скачиваний: 0


Добавлено спустя 1 час 33 минуты 38 секунд:
Приступим к дальнейшему развитию проекта.

В общем и целом направление - что-то типа командной оболочки, может быть даже help встроим в прошивку, чтобы на инструкции не переключаться из терминала :)

Итак основные идеи:
1. Оболочка будет поддерживать множество контроллеров на общей шине RoboBus[i2c], т.е. подав команду на головной можно будет обеспечить её выполнение на любом из подчиненных;
2. Для этого все парсеры "человеческих не-i2c" команд будут переводить полученную команду в i2c-формат и отправлять на вполнение на этот или подчиненный контроллер;

Переключение между контроллерами будет выполняться отдельной командой "!<controller_number>" при этом за каждым номером кроме 0 будет закреплён свой i2c-адрес подчиненного контроллера. Под номером 0 всегда будет локальный контроллер. Для назначения и сканирования на предмет драйверов любого контроллера с номером >0 нужно будет дать команду "@<controller_number>=<i2c_address>"

Внутри каждый парсер будет отвечать за какую-то букву, с которой будут начинаться команды для него. Кроме того каждый "человеческий" парсер будет выбирать из предложенных ему UIDов драйверов выбранного контроллера тот, который наиболее ему удобен. Так же каждый парсер будет иметь свою справку по синтаксису - в короткой версии выдаваемой со списком команд по запросу "?" и в полной версии выдаваемой по запросу "?<первый символ команды>".

Так что мы разделим парсинг всех команд типа "L", "C", "V" и "S" по отдельным файлам, что упростит отладку и ликвидирует возможность внести баги в одну команду при правке другой.

Добавлено спустя 4 минуты 12 секунд:
Например на запрос "?" будет выдаваться что-то типа:

ORFA version 0.8.3, list of currently supported commands:

L - Set local i2c-address, example: "L40<cr>"
V - Get firmware version, example: "V<cr>"
B - Goto bootloader for firmware update, example: "B<cr>"
S - Execute i2c-request, example: "S40 00 00 S41 01 P<cr>"
# - Servo control, example: "#0 P1500 T1000<cr>"

For detail syntax type "?{cmd}<cr>", example: "?S<cr>"

Re: Концепция ORFA и немного шире

pashteet » 18 май 2010, 20:54

Теперь все отлично! Старт одновременный, финиш тоже :good:

Re: Концепция ORFA и немного шире

=DeaD= » 19 май 2010, 11:35

Кстати, надо поддержку датчиков цвета поверхности добавить в ORFA, а то я так никогда их не протестирую иначе :)

Re: Концепция ORFA и немного шире

=DeaD= » 21 май 2010, 14:42

Движемся дальше потихоньку с парсерами.

Каждый парсер имеет следующие обязательные поля\методы:
1. Символ, на который должны начинаться команды для этого парсера;
2. Ссылка на таблицу поддерживаемых UID'ов;
3. Ссылка на строку короткой подсказки по синтаксису парсера;
4. Ссылка на строку полного описания синтаксиса парсера;
5. Ссылка на функцию парсинга очередного символа (изначально в неё передаётся символ 0х00, при начале команды, а в конце передается символ "\n" - окончание команды);


Обычному парсеру команд для работы предоставляются функции:
1. Получения UID'а драйвера который на текущем контроллере ему доступен, либо возвращается 0 если никакой не подошел;
2. Выполнения i2c запроса без указания i2c-адреса получателя (он известен на более высоком уровне и тут не нужен) и в относительной нумерации регистров (т.е. начальный регистр обычному парсеру не нужен);

Служебным парсерам дополнительно предоставляются функции:
1. Определения текущего i2c-адреса;
2. Назначения UID'ов драйверов другим парсерам по каждому контроллеру;
3. Определение начальных регистров другим парсерам по каждому контроллеру;
4. Управление настройками i2c - выбор скорости, выбор своего i2c-адреса;

Re: Концепция ORFA и немного шире

Алексей » 04 июн 2010, 09:58

blindman писал(а):Писал его его я. Тоже жду OR-AVR-M128-DS, как приедет - буду тестить

Приехал :?:

Re: Концепция ORFA и немного шире

blindman » 04 июн 2010, 12:33

Приехал.

Сегодня тестил в конфигурации : мастер - OR-AVR-M128-DS, слэйв - OR-AVR-M32-D. С первого раза не запустилось, нашел баг - не устанавливался адрес слэйва при старте. Пофиксил. Попытался управлять выходами серв - реакции ноль. Пересобрал слэйв без поддержки серв, погами подергал - все нормально.

Итоги:
1. либо драйвер серв для OR-AVR-M32-D поломан, либо я не умею его готовить. Судя по http://hg.vehq.ru/orfa/rev/87bb193bd004 , скорее первое
2. I2C-slave будет работать, когда запушу багфикс

Re: Концепция ORFA и немного шире

=DeaD= » 04 июн 2010, 12:35

А если слэйвом сделать OR-AVR-M128-DS?

Добавлено спустя 31 секунду:
драйвер серв для OR-AVR-M32-D поломан :( надо починить.

Re: Концепция ORFA и немного шире

blindman » 04 июн 2010, 12:49

=DeaD= писал(а):А если слэйвом сделать OR-AVR-M128-DS?

Работает конечно, чего б ему не работать :)


cron
Rambler\'s Top100 Mail.ru counter