ROS - Robot Operating System

ROS - Robot Operating System

Сообщение lorry » 18 май 2016, 00:32

Вот, наконец нашел время и начну понемногу публиковать основы ROS Indigo. Надо сказать, я и сам не так давно (чуть больше года) занялся изучением этого фреймворка, и конечно много чего еще и сам не знаю, но надеюсь, что мы вместе сможем разобраться в хитростях и сплетениях ROS, тем более, что на самом деле ничего сложного в нем нет.
Сразу скажу о том, что в написании я буду пользоваться следующими ресурсами и литературой (книги в оригинале прикреплены здесь ниже):
1. http://www.ros.org/
2. http://wiki.ros.org/
3. http://robocraft.ru/
4. http://robotosha.ru/
5. книга "A Gentle Introduction to ROS" by Jason M. O’Kane
6. книга "Learning Robotics Using Python" by Lentin Joseph
Я постараюсь взять главное с этих источников, как то это обобщить, добавить своего опыта работы с ROS и выложить здесь. Надеюсь сообщество меня поддержит, а так же надеюсь на помощь и рекомендации тех, кто уже знаком с ROS.

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

Что нужно для начала работы:
У вас должен быть компьютер с установленной Ubuntu 14.04 LTS и с доступом в Internet. Кто то пытается поставить эмулятор linux на Windows и в нем изучать ROS. Так можно сделать, но я бы не рекомендовал. Для начала изучения этого, может и будет достаточно, но когда вы начнете делать свои проекты, сразу полезут всякие "тараканы" типа несовместимости, малого быстродействия и прочих багов. Ну, что бы вы не выбрали, постарайтесь к следующей публикации подготовить ваш компьютер, а это произойдет через 3-4 дня.
Предупреждаю сразу - сначала НЕ будет понятно вообще ничего, особенно если вы никогда не сталкивались с Ubuntu. Я так, вообще, только с третьего подхода начал что то осознавать и появились проблески сознания. Но не пугайтесь этого, спрашивайте, вместе разберемся. Критика и поправки приветствуются. Только, пожалуйста, не надо тупого флуда.
Ну, в общем, если готовы, тогда с Богом!
Вложения
Learning ROS for Ubuntu .pdf
(3.19 МиБ) Скачиваний: 0
agitr-letter.pdf
(1.42 МиБ) Скачиваний: 0
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ROS - Robot Operating System

Сообщение linvinus » 18 май 2016, 16:53

配置 Ubuntu 软件仓库

Полагаю сначала нужно было дать ссылку на китайский букварь
http://wan-shi-ru-yi.com/kitayskiy-yazy ... kiy-bukvar
http://drakopanda.com/online-shop/detai ... lovie.html
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: ROS - Robot Operating System

Сообщение Vladimat » 23 май 2016, 10:59

Поставил Ubuntu 14.4.4 И ROS, жду продолжения :-) Я тут один такой? :-)
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57

Re: ROS - Robot Operating System

Сообщение linvinus » 23 май 2016, 11:54

а кроме убунты из железа что нибудь есть? что сделать хотите?
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: ROS - Robot Operating System

Сообщение lorry » 23 май 2016, 14:35

Vladimat писал(а):Поставил Ubuntu 14.4.4 И ROS, жду продолжения :-) Я тут один такой? :-)

Да, да! Скоро выйду в эфир.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ROS - Robot Operating System

Сообщение Vladimat » 23 май 2016, 21:20

linvinus писал(а):а кроме убунты из железа что нибудь есть? что сделать хотите?

Ничего конкретного пока. Разобраться хочу. Начинал как-то да забросил, а так, в колхозе, веселее. :-)
То, что я хочу, у меня сил не хватает, а то на что хватает - не интересно. :-)
"Так выпьем же за то, чтобы наши желания совпадали с нашими возможностями!" :-)
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57

Re: ROS - Robot Operating System

Сообщение lorry » 24 май 2016, 04:31

Как и обещал - выхожу в эфир с первой публикацией о работе с ROS.
Не стану писать о всех прелестях и положительных сторонах самого ROS, отмечу лишь то, что когда наша команда переключилась на разработку наших роботов под этот фреймворк, мы задали себе вопрос: "Почему мы этого не сделали раньше?" Мы поняли, что все предыдущее время просто-напросто изобретали велосипед, то, над чем мы работали месяцами, оказалось давно реализовано в ROS, от SLAM до управления манипулятором и технического зрения, а еще, огромное сообщество готовое прийти на помощь, и еще сам продукт open source, т.е. можно как писать свои узлы (программы на C++, phyton), так и изменять реализацию любых пакетов входящих в состав ROS.
Ну а теперь к делу. Не буду оригинальным если начнем с установки ROS на компьютер. Мы будем работать с ROS Indigo Igloo, хотя это уже далеко не новая версия, после Indigo вышла Jade Turtle, и вот 20 мая 2016 года появился релиз ROS Kinetic Kame. В общем мы отстаем. Но не суть, в целом реализация, а тем более работа с основными пакетами кочует из версии в версию, если конечно нет глобальных изменений (как был, к примеру переход на catkin). А еще, одна из хороших/плохих новостей, это то, что релизы ROS выходят раз в год (это даже чаще чем финальные дистрибутивы ubuntu!), и как сообществу за этим всем успевать? :D Хочу отметить, не спешите ставить самую последнюю версию. Дело в том, что перенос разработчиком пакетов занимает достаточно большое время, и установив новую версию ROS вы можете столкнуться с ситуацией, когда в ней не окажется нужных вам пакетов. Например на середину февраля 2016 года, в Jade Turtle, релиз которой был в марте 2015-го, многие пакеты еще отсутствовали, а Willow Garage (компания поддерживающая и развивающая ROS), как уже писалось выше, 20 мая выпустила следующий релиз ROS Kinetic Kame, так что мне кажется будто они бегут быстрее своих собственных ног :crazy: . Всего 524 пакета ROS находятся в первоначальном выпуске Kinetic, по сравнению с 2149 в настоящее время в Indigo и 1016 в Jade. На сегодня самой полной версией является Indigo, ну, конечно завтра ситуация поменяется и будут перенесены пакеты и в более свежие продукты, так что нужно просто держать "руку на пульсе".
Установка ROS.
Открываем Терминал и пишем в нем последовательно команды:

1. Указываем источник загрузки

Код: Выделить всё
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'


тем самым мы добавили адрес источника в sources.list

2. Устанавливаем ключи

Код: Выделить всё
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -


3. Установка
Убедимся, что сервер источника пакета проиндексирован.

Код: Выделить всё
sudo apt-get update


В ROS существует множество различных библиотек и инструментов. Имеется возможность загрузить предустановленные конфигурации, либо установить пакеты ROS по своему вкусу. Полная установка ROS (рекомендована, именно этот вариант я и использовал). Включает ROS, rqt, rviz, библиотеки robot-generic, 2D/3D симуляторы, навигацию и 2D/3D восприятие.

Код: Выделить всё
sudo apt-get install ros-indigo-desktop-full


ROS-Desktop. Включает ROS, rqt, rviz и библиотеки robot-generic.
Полная установка занимает много времени, около полутора часов, так что можете вздремнуть :)
Последний раз редактировалось lorry 25 май 2016, 05:14, всего редактировалось 4 раз(а).
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ROS - Robot Operating System

Сообщение Scorpio » 24 май 2016, 21:04

Было бы не плохо, пока идет установка, немного общей теории. Философия ROS в картинках от человека в ней разобравшегося.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: ROS - Robot Operating System

Сообщение lorry » 25 май 2016, 00:29

Scorpio писал(а):Философия ROS в картинках от человека в ней разобравшегося.

Я бы не сказал, что уж очень хорошо разобрался, кое что мне до сих пор не ясно, и это скорее связано с моими пробелами в понимании Linux систем чем со сложностью самого ROS, но это все поправимо и является делом времени. Тем не менее в ответ на вашу просьбу публикую, с некоторыми своими поправками, выдержку из книги "A Gentle Introduction to ROS". Итак, пока устанавливается ROS предлагаю познакомиться с основной его философией.

Robot Operating System (ROS) — это широко используемый в робототехнике фреймворк. Философией ROS является создание программного обеспечения, которое бы работало с различными роботами, лишь с небольшими изменениями в коде. Эта идея позволяет создавать функциональность, которая может быть перенесена без особых усилий для использования различными роботами, чтобы раз за разом не изобретать велосипед.
ROS была разработана в 2007 году в лаборатории искусственного интеллекта Стэнфорда (Stanford Artificial Intellegence Laboratory, SAIL) для поддержки стэнфордского проекта AI Robot. C 2008 года, разработка продолжилась в основном в исследовательском институте Willow Garage, сотрудничающим с более чем двадцатью различными институтами в рамках модели совместного развития.
Множество исследовательских институтов начали разрабатывать собственные проекты в ROS, добавляя поддержку своего аппаратного обеспечения и делясь примерами собственного программного кода. Некоторые компании, производящие роботов, стали адаптировать свои продукты для их использования с ROS.
ros_robots.jpg


Список роботов, поддерживаемых ROS (http://wiki.ros.org/Robots).
Как правило, для всех поддерживаемых платформ публикуется большое количество примеров и симуляторы, облегчающие разработку собственных проектов.
В ROS также поддерживается множество различных датчиков и исполнительных устройств (актуаторов), используемых в робототехнике. Постоянно появляются новые устройства, совместимые с этим фреймворком.
actuators.jpg


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

Дальнейшее сказанное является ключевым моментом в понимании ROS - архитектура ROS основана не графе с централизованной топологией. Обработка происходит в узлах, которые могут принимать или отправлять данные другим узлам, работать с датчиками, системами контроля состояния и планирования, приводами, и так далее.
Пример графа ROS приведен ниже. Это граф нашего БЕЗbot-а. Это достаточно сложный граф, в нем реализован SLAM, и управление двигателями платформы. Сейчас, возможно, для вас этот граф не понятен, но надеюсь постепенно мы изучим все это и разберемся в тонкостях.
rosgraph.png
rosgraph.png (80.91 КиБ) Просмотров: 8992


Библиотека ориентирована на Unix-подобные системы.
Пакет *-ros-pkg является является общим репозиторием для разработки высокоуровневых библиотек. Многие из возможностей часто ассоциируемые с ROS, такие как библиотеки навигации и визуализатор rviz, хранятся в этом репозитории. Эти библиотеки предоставляют мощный набор инструментов (различные визуализаторы, симуляторы, средства отладки) для упрощения работы.
screen_ROS.jpg


ROS распространяется на условиях лицензии BSD и является ПО с открытым исходным кодом. ROS бесплатна для исследовательских и коммерческих целей. ROS способствует повторному использованию кода, так что разработчики робототехники и ученые могут не изобретать велосипед постоянно. Можно получить код из репозитория, изменить его и вновь поделиться улучшенным ПО. Вы также можете написать драйвер вашего собственного датчика для ROS.
ROS поддерживает параллельные вычисления, имеет хорошую интеграцию с популярными C++ библиотеками, такими как как OpenCV, Qt, Point Cloud Library и пр., и он может работать на одноплатных компьютерах, таких как Raspberry Pi или BeagleBone Black, а также с микроконтроллерными платформами, например, Arduino. Вы можете создать своего собственного робота на основе Arduino или Raspberry Pi и использовать для его управления Robot Operating System.
ros_integrated.jpg


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

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

Теперь хочу обратить внимание чем НЕ является ROS:
ROS не язык программирования. Программный код самого ROS написан на C++, и далее мы будем писать свои узлы на C++. Используется также Python, Java, Lisp, и несколько других языков программирования.
ROS не является (только) библиотекой. Несмотря на то, ROS действительно включает клиентские библиотеки, он также включает в себя (среди прочего), центральный сервер, набор инструментов командной строки, набор графических инструментов и систему сборки.
ROS не интегрированная среда разработки. Хотя ROS не предписывает какой-либо конкретной среды разработки, он может быть использован с наиболее популярными средами. Кроме того, вполне возможно, использовать ROS из текстового редактора и командной строки, без каких-либо IDE.

Выводы: основной философией ROS является универсальность и переносимость программного кода.

Далее будем рассматривать основные концепции ROS.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ROS - Robot Operating System

Сообщение Scorpio » 25 май 2016, 01:49

Спасибо за обширный ответ. Хотелось бы также привести какие-нибудь простые примеры аналогий, не вдаваясь в детали. Скажем есть у нас датчик температуры на дуньке, который передает данные по ВТ на ноутбук, а тот отрисовывает график изменения температуры. Для этого, нам понадобиться написать скетч для ардуино в его IDE, написать на ноуте ответную часть в каком-нибудь Visual C, сделать дизайн окна, продумать протокол обмена и т.д. Т.е. имеем аппаратную часть с придуманным нами API и графическое окно,понятно как и в чем сделанное по своему вкусу. Как данное устройство будет выглядить с применением ROS? Какие шаги я должен предпринять для создания его программной части?
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: ROS - Robot Operating System

Сообщение Vladimat » 25 май 2016, 12:19

Совет не хватать самую свежую версию - это мудрость. :-)
Вопрос - нейросетевой движок в ROS имеется (по аналогии со SLAM и прочими полезностями)? Я что-то не нашёл. Это предполагает, что каждый прикручивает что сумеет, или есть сложившаяся практика?
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57

Re: ROS - Robot Operating System

Сообщение linvinus » 25 май 2016, 14:57

R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: ROS - Robot Operating System

Сообщение elmot » 25 май 2016, 18:13

Выложу еше раз сюда свои ROS-потуги
ROS узлы на яве для LEGO NXT и EV3.
https://sourceforge.net/projects/ev3javabrick/
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: ROS - Robot Operating System

Сообщение lorry » 27 май 2016, 01:31

Scorpio писал(а):Спасибо за обширный ответ. Хотелось бы также привести какие-нибудь простые примеры аналогий, не вдаваясь в детали. Скажем есть у нас датчик температуры на дуньке, который передает данные по ВТ на ноутбук, а тот отрисовывает график изменения температуры. Для этого, нам понадобиться написать скетч для ардуино в его IDE, написать на ноуте ответную часть в каком-нибудь Visual C, сделать дизайн окна, продумать протокол обмена и т.д. Т.е. имеем аппаратную часть с придуманным нами API и графическое окно,понятно как и в чем сделанное по своему вкусу. Как данное устройство будет выглядить с применением ROS? Какие шаги я должен предпринять для создания его программной части?

Scorpio, давайте будем идти последовательно, если мы сейчас попытаемся перепрыгнуть через основные понятия и концепции ROS, то просто внесем путаницу. Ну, а чтобы все же удовлетворить ваш интерес, сообщу следующее - для создания подобного проекта под ROS придется:
1. написать скетч для ардуино, и создать экземпляр публикатора в топик;
2. создать топик с нужным сообщением (температура);
3. на ПК написать узел для подписчика, создать экземпляр подписчика;
4. визуализировать получаемые данные средствами ROS, или написать свой визуализатор, опять же используя такие средства ROS как топики и узлы.

То есть всё, на самом деле усложнится! тем, что придется в ваш программный код (как для arduino так и для ПК) вводить обращение к библиотекам ROS, а так же использовать его узлы и топики (темы). Вот здесь и кроется одна из сложностей в понимании ROS. И действительно, зачем усложнять такую простую задачу, как чтение датчика, наворачивая еще и какой то там ROS? Дело в том, что ROS не предназначен для простого считывания данных с датчика и визуализации этих данных на мониторе (хотя, безусловно, и эту задачу можно решить с помощью ROS), ROS это некая абстракция, прослойка которая позволит вам масштабировать ваш проект в рамках существующих пакетов ROS, а этих пакетов 2500 штук, т.е это 2500 всевозможных программных решений для робототехники. А кроме того если вам придется поделиться своим кодом с кем то еще другим, а у него вместо arduino окажется какой то другой контроллер, то ему не придется переделывать изнова половину проекта, достаточно будет изменить код скетча адаптировав его под другой МК. Понятно, что адаптация скетча под другой МК будет нужна, и без использования ROS, а откомпелированная программа на C++ заработает на любом ПК, но как уже говорилось ROS предназначен для решения более широких, универсальных и сложных задач, чем просто чтение датчика.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ROS - Robot Operating System

Сообщение Scorpio » 27 май 2016, 02:19

Ага, спасибо. Стало понятнее
И еще один вопрос. Удобно ли писать программы под ROS? Что там со средой разработки? Меня, как пользователя всяческих Visual Studio, которая половину работы программиста делает сама, как то напрягает постоянная необходимость пользоваться командной строкой. На набивание команд уходит куча времени по крайней мере у меня.
Все, больше не буду приставать. Хотелось просто общего описания простым человеческим языком еще, до того, как вдаваться в детали. Типа "программы пишутся на питоне в текстовом редакторе, без всякой автоматической проверки синтаксиса с кучей дополнительных ограничений, зато легко и надежно можно обмениваться данными между параллельными потоками". Жду, что кто-нибудь скажет во вступительном слове, что в ROS работать легко, быстро и приятно. Стоит только в него въехать.
lorry писал(а):А еще, одна из хороших/плохих новостей, это то, что релизы ROS выходят раз в год

Я так понимаю, что ROS2 притерпела существенные изменения. В том числе и филосовские (отказались от мастера и т.п.) А также появился релиз под винду.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

След.

Вернуться в ROS - Robot Operating System

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

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