roboforum.ru

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

ROS - Robot Operating System

Re: ROS - Robot Operating System

Scorpio » 03 июн 2016, 16:30

Именно это я и имел ввиду. У многих тележки на контроллерах уже есть, а организовать SLAM, например, самим сложно. А тут некоторый функциональный ROS- полуфабрикат, который легко адаптируется под твои нужды. А заодно приучает пользоваться мировыми достяжениями, а не изобретать велосипед. Я в свое время плюнул на ROS, при попытке его запустить под андроид. Чистый гемор и никакого удовольствия. А была бы готовая железяка с налаженным ROS, было бы значительно проще.

Re: ROS - Robot Operating System

linvinus » 03 июн 2016, 17:34

Если платформа уже есть то скрестить ROS с ардуиной не проблема
http://wiki.ros.org/rosserial

пример прошивки
http://wiki.ros.org/rosserial_arduino/Tutorials
https://www.intorobotics.com/ros-tutori ... pberry-pi/

но всё равно придётся пописать ручками код как на стороне ROS так и на стороне arduino
Как минимум нужна поддержка cmd_vel и odom
обязательно нужно добиться того чтобы все данные были в правильной системе координат и правильными размерностями.

А была бы готовая железяка с налаженным ROS, было бы значительно проще.

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

В общем случае можно брать пакеты/инструкции от turtlebot , заменить только ноду которая общается с МК на свою (легко реализовать через rosserial), и всё .
В остальном с точки зрения ROS роботы друг от друга не сильно отличаются, в большинстве случаев достаточно будет просто поменять параметры в ланчфайлах, например максимальная и минимальная скорость , где находятся датчики относительно корпуса и т.п.

Т.е. всю проблему мы свели к тому как поставить ros на mini pc?
Это тоже не проблема если использовать дистрибутив ubuntu.

Вот ещё туториал https://geektimes.ru/post/271658/

Добавлено спустя 22 минуты 20 секунд:
Вот можете посмотреть как в конечном итоге выглядит самодельный робот на базе ROS

https://linorobot.org/
исходный код https://github.com/grassjelly/linorobot

код ардуино https://github.com/grassjelly/linorobot ... rduino.cpp

Т.е. достаточно
1) поставить Ubuntu , поставитьROS , скачать исходники https://linorobot.org/getting-started/
2) поправить файл ардуино чтобы работал с вашими драйверами двигателей/энкодерами
3) залить прошивку в ваш контроллер
и у вас робот поедет так же как у автора.

Но навигация у него на базе lidar, если у вас сенсор kinect то нужно делать как у lorry

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

Re: ROS - Robot Operating System

lorry » 05 июн 2016, 04:30

Продолжим.
Теперь еще попрактикуемся.

Хочу напомнить, что все команды выполняются в терминале.
Установка turtlesim
В наших уроках мы будем работать с простым симулятором под названием turtlesim, чтобы на его примере проиллюстрировать как функционирует ROS. Вам необходимо устанавливать пакет turtlesim на ваш компьютер. Используйте команду:

Код: Выделить всёРазвернуть
$ sudo apt-get install ros-indigo-turtlesim


Настройка rosdep
После установки пакетов ROS, вам нужно выполнить следующую команду:

Код: Выделить всёРазвернуть
$ sudo rosdep init

Цель выполнения этой команды инициализировать rosdep, который является инструментом для проверки и установки пакетов зависимостей независимым от операционной системы способом.

Настройка rosdep в учетной записи пользователя
Выполните команду:

Код: Выделить всёРазвернуть
$ rosdep update

Эта команда сохранит некоторые файлы в вашем домашнем каталоге, в подкаталоге .ros.

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

Код: Выделить всёРазвернуть
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc

Кроме того, внесение данных в оболочку командой:

Код: Выделить всёРазвернуть
$ source /opt/ros/indigo/setup.bash

Установка rosinstall. Утилита позволяет устанавливать новые пакеты. Команда для установки:

Код: Выделить всёРазвернуть
$ sudo apt-get install python-rosinstall


Создание собственного рабочего пространства
Перед тем как что-либо делать, необходимо создать собственное рабочее пространство. В этом рабочем пространстве у вас будет весь код, который вы создадите.
Чтобы посмотреть, какое рабочее пространство использует ROS, необходимо выполнить следующую команду:

Код: Выделить всёРазвернуть
$ echo $ROS_PACKAGE_PATH

Вы увидите что-то типа:
/opt/ros/indigo/share:/opt/ros/indigo/stacks

Нам необходимо добавить свое рабочее пространство. Выполните последовательно следующие команды:

Код: Выделить всёРазвернуть
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

Это создаст в домашней папке каталог /catkin_ws, а в нем каталог /src. Путь /catkin_ws/src и будет вашим рабочим каталогом, где вы будете создавать ваши проекты.

Как только папка будет создана, нам необходимо добавить этот новый путь в ROS_PACKAGE_PATH. Чтобы это сделать, нам нужно только добавить новую строку в конец файла /baschrc:

Код: Выделить всёРазвернуть
$ echo "export ROS_PACKAGE_PATH="~/catkin_ws/src:${ROS_PACKAGE_PATH}"" >>
~/.bashrc
$ . ~/.bashrc

Проверяем новое значение переменной окружения:

Код: Выделить всёРазвернуть
$ echo $ROS\_PACKAGE\_PATH

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

Теперь, даже не смотря на то что в рабочем каталоге еще нет проектов, необходимо запустить сборку пакетов. Это создаст файл CMakeLists.txt. Выполните команды:

Код: Выделить всёРазвернуть
$ cd ~/catkin_ws/
$ catkin_make


Продолжение следует.

Re: ROS - Robot Operating System

lorry » 20 июн 2016, 23:50

Минимальный пример использования turtlesim
Прежде чем мы рассмотрим детали, как работает ROS, давайте начнем с примера. Мы рассмотрим симулятор turtlesim, который используется во многих онлайн учебниках, этот пример будет служить двум целям: поможет вам подтвердить, что ROS установлен правильно, и это обеспечит работу (хотя довольно простую) системы.
В трех отдельных терминалах, выполните следующие три команды:
Код: Выделить всёРазвернуть
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

Вы увидите примерно следующее окно
12.jpg

Я поясню значения этих команд:
roscore - эта команда запускает ядро ROS, без ее запуска вы вообще не сможете использовать ROS на вашей машине;
rosrun turtlesim turtlesim_node - запускает симулятор черепахи;
rosrun turtlesim turtle_teleop_key - запускает узел управления черепашкой с клавиатуры.
Отдельные терминалы предназначены для того, чтобы все три команды выполнялись одновременно. Если все работает правильно, вы должны увидеть графическое окно, похожее рисунок выше. Это окно показывает имитацию робота в форме черепахи, которая живет в квадратном мире окна (вид вашей черепахи может отличаться). Вид черепахи выбирается из коллекции "талисманов" черепах для каждого из исторических релизов ROS. Если вы щелкните мышкой в третьем терминале (где выполняется команда turtle_teleop_key) и нажмите клавиши со стрелками вверх, вниз, влево или вправо, то черепаха будет двигаться в ответ на ваши команды, оставляя за собой след. Расположите окно с черепашкой чтобы вам его было видно, но активным должно быть окно с работающим узлом turtle_teleop_key.
12.jpg

Если черепаха не двигается в ответ на ваши нажатия клавиш, щелкните в окне терминала где вы запустили turtle_teleop_key.
Создание виртуальных черепахи и рисование линии само по себе не особенно интересно. Тем не менее, этот пример уже достаточно показывает то, что происходит за кулисами, чтобы проиллюстрировать многие из основных идей, на которых основаны более интересные системы ROS. Упрощенно говоря про этот пример, нужно отметить следующее - в окне первого терминала мы запустили основной модуль ROS, это roscore или как писалось - ядро ROS. Единственная задача roscore это поиск и соединение работающих узлы ROS. При запуске узла он регистрируется в системе и после успешной регистрации roscore соединяет этот узел с другими узлами путем передачи сообщений от подписчика к публикатору. Так как каждый узел ROS может выступать как подписчиком на сообщения так и публиковать сообщения, а все сообщения являются именованными, то задача roscore сводится к только к тому чтобы наладить связь между узлами с одинаковыми сообщениями, далее узлы в системе общаются самостоятельно. Во втором терминале, где запущен экземпляр turtlesim, а именно узел turtlesim_node, загружается симулятор черепашки, который открывает окно с полем, а в нем наша черепашка. Упрощенно говоря узел turtlesim_node является только подписчиком и ждет команд управления приходящих от других узлов. Узел turtle_teleop_key, запущенный в третьем терминале как раз является публикатором этих команд для черепашки, и когда вы нажимаете на клавиши со стрелками он начинает публиковать сообщения о движении, при этом подписанный на эти сообщения turtlesim_node получает их и отображает перемещение черепашки в своем окне.
В следующем выпуске мы немного углубимся и посмотрим немного на то, что происходит внутри ROS при работе этих узлов.

Re: ROS - Robot Operating System

Holmes » 21 июн 2016, 01:40

Извините, вопрос наверняка простой, я правильно понимаю что использовать лидар без одометрии (энкодеры, например) не имеет смысла, ROS так не умеет?

Re: ROS - Robot Operating System

linvinus » 21 июн 2016, 11:18

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

http://wiki.ros.org/hector_mapping
hector_mapping is a SLAM approach that can be used without odometry

Re: ROS - Robot Operating System

Holmes » 21 июн 2016, 16:13

Я это к чему, прежде чем потратить деньги хочу быть уверенным в правильности выбора.
Выбираю между: Kinect, Asus Xtion и Neato XV-11 lidar.
Бюджетнее всего неатовский лидар (на ebay что-то порядка 7000 с доставкой), особенно учитывая что тогда SLAM вроде как должен работать даже на малинке.
Но по ссылке выше говорят что нужен быстрый лидар, в пример приведена частота вращения 40 Гц. Неато умеет вроде 3-5 Гц. Т.е. в среднем в 10 раз хуже.
Человек на видео шел ~5 км/ч, значит надо чтобы робот ехал не быстрее 0,5 км/ч = 14 см/сек (что приемлемо). И я так понимаю это ограничение только при построении карты. Или при ориентировании тоже?

Xtion Pro Live советуют потому что удобно только 1 коннектор (usb), и меньше по размеру и массе чем кинект. Но его я нашел только за 25000 ... ужс.
Kinect нужен для Xbox360 (не для Windows).
Вот нашел кинект, неужели он стоит всего 2000? :shock:


Прошу совета в какую сторону пойти (и почему).
Пока склоняюсь к лидару, ибо не нужен мощный комп для обсчёта.

Re: ROS - Robot Operating System

linvinus » 21 июн 2016, 17:09

неато нормально работает.

за 2к рублей это старый кинект. у него большая ближняя слепая зона

и меньше угол обзора чем у новых сенсоров.

иначе будете вот так изгаляться post355647.html#p355647

вот сравнение углов обзора http://smeenk.com/kinect-field-of-view-comparison/

Чугунный Дятел советует ASUS Xtion post355350.html#p355350
там же рядом обсуждение производительности разных карт.
кроме того, можно прикинуть сколько стоит датчик и сколько стоит более быстрый проц и и выбрать то что дешевле.

Лидар проще и по функционалу и по подключению и по потреблению ресурсов, но он не увидит препятствия вне плоскости сканирования, т.е. к нему ещё придётся в комплекте ставить бампер УЗ или ИК, тоже денег стоит.

Я бы сказал так, для начала сойдёт и лидар, чтобы потренироваться, но потом (может через пару лет? ) всё равно придётся переползать на что то типа кинекта, это технически более универсальное решение.



А что за проблемы с одометрией?

Re: ROS - Robot Operating System

Holmes » 21 июн 2016, 18:13

linvinus писал(а):А что за проблемы с одометрией?

Да просто лень её городить. У меня на нее изначально не было рассчитано. Это нужно закупать новые моторы с энкодерами.

Так, значит надо подкопить и брать Xtion. А если будет невмоготу столько ждать придется купить лидар неатовский.
Кстати, раз уж рос распределенный, может можно его нормально запустить на двух малинах 3 версии... меня всегда отпугивают не сильно популярные решения (это я камень в сторону одроида).

Re: ROS - Robot Operating System

Xtrem » 23 июн 2016, 10:08

Сейчас есть доступ к более продвинутым камерам например
Intel® RealSense™ Camera (R200) Developer Kit 99$ - она позволяет вычислять карту глубины от 0,3 до 3 метров
http://click.intel.com/intel-realsense- ... -r200.html
Или еще более новая но подороже
Intel®RealSense™ Developer Kit featuring SR300 129$ она позволяет вычислять карту глубины от 0,3 до 3 метров но более стабильна
http://click.intel.com/intelrrealsenset ... sr300.html
Есть и набор камера плюс одноплатник правда пока только предзаказ 249,99 $
Intel® RealSense™ Robotic Development Kit
http://click.intel.com/intelr-realsense ... t-kit.html
и совсем крутая дорогая но самая продвинутая на мой взгляд (для использования вне помещений без ограничений) вычислять карту глубины от 0,2 до 20 метров
ZED 3d
https://www.stereolabs.com/
если эту камеру использовать совместно с jetson TK1 с полноценным UBUNTU 14.04 ROS c GPU 192 ядра NVIDEA (opencv, cuda 6.5 b и т.д. и т.п.)- ограничение на запуск только в двух режимах - 640 на 480 100 fps и 2560x720 60 fps
для обычной машинки вполне достаточно

для коптеров или скоростных машинок (скорость выше 20 км/ч) понадобится jetson TX1 с ней получите очень продвинутую правда и дорогую систему c полноценным UBUNTU 14.04 ROS c GPU 256 ядер NVIDEA способную в режиме on-line строить карту и прокладывать маршрут (SLAM) или только по визуальным данным с с камеры или при установке дополнительных датчиков GPS, IMU, лазерного дальномера.

У меня jetson TK1 на нем ROS ZED камера, lidar lite в качестве платформы PC 1:10 машинка с ESC, ARDUINO - ездит, строит карту - планирую подключить IMU -для работы вне помещений и повышения точности навигации.

Re: ROS - Robot Operating System

Holmes » 23 июн 2016, 17:03

Xtrem писал(а):Сейчас есть доступ к более продвинутым камерам например
Intel® RealSense™ Camera (R200) Developer Kit 99$ - она позволяет вычислять карту глубины от 0,3 до 3 метров
http://click.intel.com/intel-realsense- ... -r200.html
Или еще более новая но подороже
Intel®RealSense™ Developer Kit featuring SR300 129$ она позволяет вычислять карту глубины от 0,3 до 3 метров но более стабильна
http://click.intel.com/intelrrealsenset ... sr300.html
Есть и набор камера плюс одноплатник правда пока только предзаказ 249,99 $
Intel® RealSense™ Robotic Development Kit
http://click.intel.com/intelr-realsense ... t-kit.html
и совсем крутая дорогая но самая продвинутая на мой взгляд (для использования вне помещений без ограничений) вычислять карту глубины от 0,2 до 20 метров
ZED 3d
https://www.stereolabs.com/
если эту камеру использовать совместно с jetson TK1 с полноценным UBUNTU 14.04 ROS c GPU 192 ядра NVIDEA (opencv, cuda 6.5 b и т.д. и т.п.)- ограничение на запуск только в двух режимах - 640 на 480 100 fps и 2560x720 60 fps
для обычной машинки вполне достаточно

для коптеров или скоростных машинок (скорость выше 20 км/ч) понадобится jetson TX1 с ней получите очень продвинутую правда и дорогую систему c полноценным UBUNTU 14.04 ROS c GPU 256 ядер NVIDEA способную в режиме on-line строить карту и прокладывать маршрут (SLAM) или только по визуальным данным с с камеры или при установке дополнительных датчиков GPS, IMU, лазерного дальномера.

У меня jetson TK1 на нем ROS ZED камера, lidar lite в качестве платформы PC 1:10 машинка с ESC, ARDUINO - ездит, строит карту - планирую подключить IMU -для работы вне помещений и повышения точности навигации.


Спасибо за информацию.
Мда, хотелось бы ZED ... но 450 зеленых это для меня не подъемно.
Интересен набор, там одноплатник с убунтой и в том числе с CSI. Значит должна быть возможность поставить ROS, но чувствую это будет БОЛЬ (компилить ROS из исходников).

Re: ROS - Robot Operating System

linvinus » 23 июн 2016, 21:04

Xtrem, спасибо за интелл не знал, но не порадовало что заявлена поддержка только винды и андроида.
Может создадите в разделе про ROS тему про своего робота, какая конструкция какие комплектующие, что удалось достичь?

Re: ROS - Robot Operating System

linvinus » 25 июн 2016, 21:56

lorry когда до slam Доберётесь вот тут есть неплохая информация которую можно вставить для расширения кругозора http://robotics.osll.ru/2015/02/slam-ros.html

Re: ROS - Robot Operating System

lorry » 26 июн 2016, 01:03

Благодарю, полезная информация.

Re: ROS - Robot Operating System

Xtrem » 27 июн 2016, 09:40

linvinus писал(а):Xtrem, спасибо за интелл не знал, но не порадовало что заявлена поддержка только винды и андроида.

Может создадите в разделе про ROS тему про своего робота, какая конструкция какие комплектующие, что удалось достичь?


И тем ни менее Intel® RealSense™ Camera (R200) прекрасно работает на jetson tk1
Intel сделала доступной библиотеку с открытым исходным кодом, librealsense на Github (https://github.com/IntelRealSense/librealsense). librealsense является кросс платформенной библиотекой, которая позволяет разработчикам взаимодействовать с семейством RealSense камер, включая R200. Поддержка предоставляется для Windows, Macintosh и Linux. Работает конечно не из коробки, потребуется подключить драйвер к ядру linux, но работает. Мало того ее можно подключить и использовать в ROS. Скоро камера будет у меня - я постараюсь записать как я ее буду подключать.

Для меня это хобби и по большому счету я не писатель - меня увлекает все это собирать, настраивать, экспериментировать поэтому конструкция не обретает какой то законченный вид, постоянно что то добавляется, что то уходит, соответственно любое описание получается фрагментарным и не всегда точным, и публиковать такие рабочие наброски рука не поднимается, а красиво и доходчиво оформить не хватает времени :(
начинал с простого - ARDUino, пульт управления от телевизора, потом поставил Pixy (CMUcam5) (http://charmedlabs.com/default/pixy-cmucam5/) брал (http://www.robotshop.com/en/pixy-cmucam ... ensor.html (69$) но сейчас у них ее нет - кому надо - пишите в Личку могу поделится, у меня лежит пылится может кому то принесет пользу.) - она умеет запоминать форму и цвет предмета и отслеживать его перемещения, может отслеживать сразу несколько объектов, у нее есть интерфейс для ARDUino по которому она выдает уже готовые управляющие команды для двигателя - собрал, написал код, все классно работает, но код на Pixy закрытый -там вобщем то нет возможности даже посмотреть как это сделано не то что-либо менять я покатался и решил попробовать сделать что то подобное из того что было.
Нашел OpenCV, на том шасси (старая RC машинка из конструктора 30 см в длинна и 12 ширина) стало не хватать места - купил в отделе игрушек RC машинку 1:10, купил в мегафоне MR3020 (500 руб) поставил на него OPenWRT, подключил к ARDUino (через com порт) и веб камеру Logitech c920 (уже была), настроил передачу видеопотока (800 на 600) и пробросил на windows виртуальный com порт по WI-Fi а на ноутбуке в Windows написал программу на С++ с использованием OpenCV по обработке этого потока, выделения в нем объекта (шарик), определения центра этого объекта и координат этого центра, дальше координаты обрабатывались и на машинку уходили управляющие команды - получился такой аналог pixy своими руками :). покатался на этой машинке - и захотелось пойти дальше
- установил на ноутбуке Ubuntu, поставил ROS, адаптировал свою программку под Ubuntu и ROS пакет, адаптировал программку на ARDUino(встроил узел ROS), получился в принципе очень неплохой вариант и некоторое время я с ним повозился -выявились проблемы - при нагрузке на WI-FI при увлечении расстояния скорость WI-FI быстро падает и видеопоток срывается, команды управления приходят с задержкой ..уменьшение разрешения сразу сокращает расстояние уверенного распознавания препятствий и машинке не хватает времени среагировать на препятствие (задержки на передачу видео на нотик, обработка и вычисление координат, передача команд обратно на машинку) дома все это в принципе не мешало и прекрасно работало- WI-FI покрытие хорошее для ускорения расчетов можно использовать стационарный I7 а вот на улице...на улице было не очень. Стало понятно что нужна возможность распознавания непосредственно на машинке. После анализа того что есть на рынке с хорошей перспективой и что в разумных приделах по стоимости - остановился на jetson tk1, тем более как раз была скидка 50%.. Плата jetson пришла в феврале 2016, пока осваивал, подошла и камера ZED. Вот тут то пришлось повозиться - нагрузку на плату она дает очень большую, пришлось оптимизировать ПО, все подстраивать менять ...скажем заморочек хватало и до сих пор кое где вылазят. Потом начал знакомится с SLAM - запустил rtabmap (http://wiki.ros.org/rtabmap_ros), статья позволили немного разобраться в Slam (https://habrahabr.ru/company/singularis/blog/279035/).


cron
Rambler\'s Top100 Mail.ru counter