roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 ноя 2024, 07:25

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




Начать новую тему Ответить на тему  [ Сообщений: 96 ]  На страницу 1, 2, 3, 4, 5 ... 7  След.
Автор Сообщение
 Заголовок сообщения: Самодельный робот на базе ROS - Custom mobile robot with ROS
СообщениеДобавлено: 07 мар 2014, 12:28 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
Предлагаю собирать рецепты как скрестить ROS с самодельным роботом.
Я новичок в этой области, так что буду обобщать по ходу изучения этого вопроса.

Итак, дано:
1) компьютер под управлением linux (может стоять на мобильной платформе или отдельно)
2) мобильная тележка, с драйверами двигателей, датчиками и т.п.

задача организовать программное управление тележкой.

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

Итак, с чего же начать!?
Если у вас один из заводских роботов который поддерживается ROS то вам повезло, следуйте инструкциям на http://wiki.ros.org/ROS/Installation
Эта тема про то как подружить своё железо и ROS.

Начинать нужно с установки линукса и базовых модулей ROS.
ROS так же как и дистрибутивы линукса выпускается релизами, список доступен тут http://wiki.ros.org/Distributions
Это означает что модули из одного релиза согласованы между собой, от релиза к релизу изменяются некоторые API и команды управления поэтому важно чтобы пакеты пакеты были из одного релиза.
Второе на что стоит обратить внимание, не все дистрибутивы линукса поддерживаются. Например, последний на текущий момент стабильный релиз ROS Hydro Medusa не поддерживает Ubuntu 13.10 (предыдущие начиная с 12.04 поддерживаются)
В общем сначала определяемся какой релиз рос планируется использовать потом ставим подходящий линуск дистрибутив.

Я предпочитаю дистрибутив ubuntu поэтому буду в основном ориентировать на него.
ubuntu и пакеты ROS есть как для x86 так и для ARM процессоров, так что архитектура большого значения не имеет.

В общем ставим пакет ros-hydro-ros-base согласно инструкции http://wiki.ros.org/hydro/Installation/Ubuntu или arm http://wiki.ros.org/hydro/Installation/UbuntuARM

Я не буду разжёвывать как работать с рос, эта информация есть на вики, буду приводить только готовые команды.

А вот дальше начинается самое весёлое.
Модули есть но у нас нет источников сообщений.
Нам нужно написать модули которые будут публиковать необходимые сообщения.
Т.е. нужно взять данные с робота (по rs232, USB, i2c, SPI или как ещё) и опубликовать их, используя специальные сообщения ROS.
Тут всё зависит от конкретной конструкции робота.

Если у вас на тележке есть контроллер arduino который управляет железом то самый простой способ использовать модуль rosserial_arduino http://wiki.ros.org/rosserial_arduino/Tutorials
Он представляет из себя прослойку которая на стороне компьютера публикует данные на мастере ROS, а на стороне контроллера предоставляет удобный API для передачи данных. Выглядит это так как будто это контроллер публикует данные напрямую на мастера ROS.

Для него уже есть готовые скетчи, в общем в лучшем духе ардуино, загрузил и "заработало".

Если у вас что то иное то придётся придумать самому как передавать данные на компьютер, или портировать rosserial.

запустить rossetial на другом контроллере несложно, есть пример для AVR http://wiki.ros.org/rosserial_client/Tu ... and%20UART
всё что нужно - это таймер который отсчитывает микросекунды с момента старта контроллера и функции чтения/записи в uart.

В моём случае я использую связку
STM32F407 (chibios) - контроллер который управляет железом (клиент ROS)
MARSBOARD A20 - мобильный компьютер с ROS (ROS master)
ноутбук для визуализации данных (клиент ROS)

Допустим вы запустили ROS serial на своём контроллере, далее нужно определиться что нужно публиковать.
1) для того чтобы можно было управлять тележкой с ноутбука нужно чтобы контроллер принимал Twist Message, обычно топик который принимает такие сообщения называется /cmd_vel
2) для того чтобы увидеть в rviz передвижения робота нужно чтобы контроллер публиковал сообщения трансформации и одометрии это сообщения
geometry_msgs::TransformStamped
nav_msgs::Odometry
"почти" рабочий пример для arduino http://answers.ros.org/question/73807/r ... ion-error/
в rosserial была мелкая ошибка, исправление тут https://github.com/ros-drivers/rosserial/pull/106

аналогичная ошибка и у меня, сообщение одометрии не десерриализуется на стороне рос сервера.
тут два выхода, отказаться от использования rosserial и организовать совой протокол обмена данными между рос и контроллером,
либо разобраться что не так, я пока разбираюсь :crazy:
либо использовать свои сообщения, а на стороне сервера их преобразовывать в подходящие.


***********************************************************************************
Полезные ссылки.
1) http://www.clearpathrobotics.com/blog/h ... e-ros-101/ тут есть листок с подсказками на котором собрано большинство повседневных команд.
советую распечатать и положить на стол.
незабываем пользоваться авто дополнением команд.

внешний вид
Вложение:
h_1391703092_7670336_e64c83b022.jpg
h_1391703092_7670336_e64c83b022.jpg [ 5.07 МиБ | Просмотров: 5925 ]

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Последний раз редактировалось linvinus 11 апр 2016, 23:26, всего редактировалось 6 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 13:27 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
мой пример для 4WD-робота — https://github.com/RoboCraft/robot_4wd
А здесь наброски шагов и в конце ссылки на другие проекты (iClebo Kobuki, ros_arduino_bridge, iRobot Roomba - turtlebot)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 13:45 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
noonv писал(а):
мой пример для 4WD-робота — https://github.com/RoboCraft/robot_4wd
А здесь наброски шагов и в конце ссылки на другие проекты (iClebo Kobuki, ros_arduino_bridge, iRobot Roomba - turtlebot)

Отлично! Спасибо за ссылки.
Насколько я понял ваш пример - нода которая публикует одометрию крутится на компьютере, а данные она получает от контроллера по протоколу ORCP2 - OR Communication Protocol ver. 2

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Последний раз редактировалось linvinus 07 мар 2014, 14:13, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 14:12 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
linvinus писал(а):
Насколько я понял ваш пример - нода которая публикует одометрию крутится на компьютере, а данные она получает от контроллера по протоколу ORCP2 - OR Communication Protocol ver. 2

именно :)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 14:14 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
Мне кажется, в инструкции https://github.com/RoboCraft/robot_4wd/ ... rmware.txt
следует добавить команды которые нужно выполнить
например не сразу понятно откуда взять файлы на шаге 4. into robot_4wd_firmware folder copy source files:
(ссылка есть ниже но я например сначала её не увидел)
лучше что то типа
Код:
mkdir ~/sketchbook/robot_4wd
cd ~/sketchbook/robot_4wd
git clone https://github.com/RoboCraft/robot_4wd.git
cp robot_4wd/orcp2/robot_4wd_firmware.ino ./
cp robot_4wd/orcp2/orcp2.cpp ./
...

Респект за проделанную работу!

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 14:20 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
Спасибо! :)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 14:46 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
Кстати, а как вы управляете всем этим хозяйством?
rviz или что то своё написали?
а slam не запускали случайно?

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 15:00 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
управляли через терминал, а до SLAM-а дело не успело дойти, т.к. робота отослали заказчику :)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 15:40 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
noonv писал(а):
управляли через терминал, а до SLAM-а дело не успело дойти, т.к. робота отослали заказчику :)

понятно, я нашёл https://github.com/RoboCraft/robot_4wd/ ... wd_key.cpp

жаль, ваш пример конечно очень полезен, но осязаемой практической пользы не видно.
с тем же успехом можно просто посылать команды с терминала и рос не нужен :)

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 15:43 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
linvinus писал(а):
понятно, я нашёл https://github.com/RoboCraft/robot_4wd/ ... wd_key.cpp

жаль, ваш пример конечно очень полезен, но осязаемой практической пользы не видно.
с тем же успехом можно просто посылать команды с терминала и рос не нужен

да - этот узел :)
согласен, так это и приводится, как простой пример подключения своего робота к ROS-у и не более :)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
noonv писал(а):
linvinus писал(а):
понятно, я нашёл https://github.com/RoboCraft/robot_4wd/ ... wd_key.cpp

жаль, ваш пример конечно очень полезен, но осязаемой практической пользы не видно.
с тем же успехом можно просто посылать команды с терминала и рос не нужен

да - этот узел :)
согласен, так это и приводится, как простой пример подключения своего робота к ROS-у и не более :)

Ок, спасибо!
не могу понять тут есть такие строчки https://github.com/RoboCraft/robot_4wd/ ... d_node.cpp

Код:
    geometry_msgs::Quaternion quaternion;
    quaternion.x = 0.0;
    quaternion.y = 0.0;
    quaternion.z = sin(odom_th / 2.0);
    quaternion.w = cos(odom_th / 2.0);


это тоже самое что quaternion = createQuaternionFromYaw(odom_th); ?

у меня практически такой же код, но без публикации сообщения nav_msgs::Odometry,
в rviz я вижу движение робота, но как только робот начинает вращаться, вместо вращения вокруг своей оси, робот крутится вокруг начала базовой системы координат.

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 16:06 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
относительно одометрии нужно ещё поковырять - там могут быть косяки ;)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 16:18 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
noonv писал(а):
относительно одометрии нужно ещё поковырять - там могут быть косяки ;)

ок, только в понедельник смогу проверить :cry:

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 16:50 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
Про модель URDF читаю. На примерах: http://wiki.ros.org/urdf/Tutorials/Buil ... %20Scratch
http://wiki.ros.org/urdf/Tutorials/Crea ... rdf%20file
А кто-нибудь пытался использовать http://gazebosim.org/ чтобы обойтись без робота?

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Самодельный робот на базе ROS - Custom mobile robot with
СообщениеДобавлено: 07 мар 2014, 16:57 
Не в сети
Аватара пользователя

Зарегистрирован: 12 окт 2008, 12:40
Сообщения: 369
Откуда: Красногорск, Подмосковье
На всякий случай оставлю здесь ссылку - настройка ROS для сетевой работы (roscore и часть узлов работают на одном компьютере, другая часть - на другом): http://wiki.ros.org/ROS/Tutorials/MultipleMachines

_________________
OpenSimpleLidar - проект простого самодельного лидара.


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

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


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

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


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

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