Взаимодействие из ROS с двигателями и энкодерами

Взаимодействие из ROS с двигателями и энкодерами

Сообщение kast89 » 30 янв 2014, 09:54

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

Планирую собрать своего робота на базе ROS.
В принципе с установкой ROS и работе в ней вопросов пока не возникает. Существует информация, где описывает подключение к ROS сенсора Kinect, построение карт, определение траектории движения робота. Вроде бы пока с этим все понятно. Но возникает вопрос по поводу взаимодействия из ROS с энкодерами и двигателями.

Во многих проектах для чтения импульсов энкодееров и управления двигателями используется плата Arduino, которая передает и принимает данные на PC по USART-у. У меня как-то не лежит душа к Arduino. Хочу эту кухню сделать на STM32. Следовательно возникают вопросы по взаимодействию платы и PC:
1) Каков формат протокола взаимодействия платы и PC (в каком виде пересылаются данные)?
2) Какова периодичность приема/отправки данных (тайминги там всякие, или что там; например, данные с энкодера надо отсылать при каждом импульсе, или накапливать втечение некоторого периода)? По этому вопросу очень хотелось бы увидеть какую-либо спецификацию от производителя, если она конечно же есть.
3) Какой пакет отвечает за это взаимодействие в ROS?

Ну и несколько общих вопросов:
1) Возможно ли в ROS использовать Asus Xtion PRO вместо Kinect (выдает набор точек без RGB)? По идее, если там OpenNI, то наверное возможно, но хотелось бы услышать, был ли у кого опыт?
2) Какую версию ROS Вы бы посоветовали, которая включала бы в себя:
- взаимодействие с двигателями/энкодерами (как бы смешно не звучало);
- пакет для KInect (или Asus Xtion);
- конвертор в fake laser (из облака точек от Kinect);
- ну, и, естественно, SLAM
kast89
 
Сообщения: 1
Зарегистрирован: 30 янв 2014, 09:16
programming: C++

Re: Взаимодействие из ROS с двигателями и энкодерами

Сообщение admin » 31 янв 2014, 07:02

kast89 писал(а):1) Каков формат протокола взаимодействия платы и PC (в каком виде пересылаются данные)?

на физическом уровне можете выбирать любой подходящий - RS232/422, USB, Ethernet ...
Самый простой вариант, разумеется - последовательное соединение.
т.е. UART контроллера <==> ПК
Поверх физического соединения нужно реализовать протокол по которому в сторону ПК будет передаваться телеметрия (тики энкодеров, состояние датчиков), а в обратную сторону поступать команды (управление движками и т.п.)
Протокол можно реализовать свой или использовать (взять за основу) другой, например мы использовали свой ORCP (бинарный формат), либо можно использовать текстовый протокол (пример - ros_arduino_bridge).
kast89 писал(а):2) Какова периодичность приема/отправки данных (тайминги там всякие, или что там; например, данные с энкодера надо отсылать при каждом импульсе, или накапливать втечение некоторого периода)? По этому вопросу очень хотелось бы увидеть какую-либо спецификацию от производителя, если она конечно же есть.

это уже как реализуете :) Однако не думаю, что разумно отсылать "наружу" каждый тик энкодера - это и канал будет забивать, да и смысла в этом никакого нет - лучше определиться со скоростью движения/реакции робота и от этого выбирать частоту отправки телеметрии.
kast89 писал(а):3) Какой пакет отвечает за это взаимодействие в ROS?

Для взаимодействия со своим контроллером да ещё по своему протоколу придётся реализовать свой узел, который будет получать данные от контроллера и преобразовывать их в сообщения ROS, выступающий драйвером.
Примеры:
наш пример для 4WD-робота — https://github.com/RoboCraft/robot_4wd
здесь наброски шагов и в конце ссылки на другие проекты (iClebo Kobuki, ros_arduino_bridge, iRobot Roomba - turtlebot)

kast89 писал(а):1) Возможно ли в ROS использовать Asus Xtion PRO вместо Kinect (выдает набор точек без RGB)? По идее, если там OpenNI, то наверное возможно, но хотелось бы услышать, был ли у кого опыт?

не пробовал, но думаю - да.
kast89 писал(а):2) Какую версию ROS Вы бы посоветовали

последнюю, разумеется :)
Аватара пользователя
admin
Администратор
 
Сообщения: 317
Зарегистрирован: 05 май 2011, 14:57
Откуда: Калининград


Вернуться в Роботы

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

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

cron
© 2009-2021 |  Top.Mail.Ru О проекте  |  Политика Конфиденциальности  |