Robot Operating System / Робософт / RoboCraft. Роботы? Это просто!
ROS — (Robot Operating System) Операционная система для роботов — это фреймворк для программирования роботов, предоставляющий функционал для распределённой работы. Первоначально, ROS был разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета для проекта (STAIR).
В 2008 году развитие продолжается в Willow Garage, Калифорнийском научно-исследовательском стартапе/институте/инкубаторе робототехники, совместно с более чем двадцатью сотрудничающими институтами.
Что же такое ROS?
ROS — это мета-операционная система (с открытым исходным кодом) для роботов.
мета- — часть сложных слов, обозначающая обобщённость, обстрагированность, промежуточность.
ROS обеспечивает стандартные службы операционной системы:
аппаратную абстракцию,
низкоуровневый контроль устройств,
реализацию часто используемых функций,
передачу сообщений между процессами,
ROS, также предоставляет инструменты и библиотеки для получения, построения, написания и выполнения кода на нескольких компьютерах.
ROS имеет две основные «стороны»:
* сторона операционной системы ros,
* ros-pkg — набор поддерживаемых пользователями пакетов (организованных в наборы (Стеки)), которые реализуют различные функции робототехники: SLAM, планирование, восприятие, моделирование и др.
ROS основан на архитектуре графов, где обработка данных происходит в узлах, которые могут получать и передавать сообщения между собой.
В некотором смысле, ROS похож на «фреймворк для роботов», вроде:
Player,
YARP,
Orocos,
CARMEN,
Orca,
MOOS,
Microsoft Robotics Studio.
При работе ROS, строится «граф» — сеть точка-точка (peer-to-peer network) из процессов, которые связываются друг с другом через инфраструктуру ROS.
ROS реализует несколько различных стилей общения:
синхронное (в стиле RPC) общение сервисов,
асинхронные потоки данных через Темы (Topic),
хранение данных на Сервере Параметров (Parameter Server).
ROS не является системой реального времени, хотя ROS возможно интегрировать с кодом реального времени.
Робот PR2 от Willow Garage, использует систему, называемую pr2_etherCAT,
которая транслирует сообщения ROS в и из realtime-процесса. Также, ROS имеет полную интеграцию с Orocos Real-time Toolkit.
Цели ROS
Зачастую, может возникнуть вопрос: «Чем ROS отличается от X?», где X — какая-нибудь другая программная платформа для роботов.
Это сложный вопрос, так как перед ROS не ставилась цель быть платформой с большим количеством функций.
Основной задачей ROS является поддержка повторного использования кода в робототехнических исследованиях и разработке.
ROS представляет собой распределенную сеть процессов (Узлов — Nodes), что позволяет разрабатывать их индивидуально.
Также, ROS поддерживает федеративные системы репозиториев кода.
Такой дизайн, от уровня файловой системы на уровень сообществ, позволяет возможность независимо принимать решения о разработке и реализации, но все они могут быть объединены вместе, средствами инфраструктуры ROS.
Существует ещё несколько других целей в рамках ROS:
* Тонкий: ROS должен быть как можно тоньше — чтобы код, написанный для ROS мог быть использован и в других программных системах.
Следствием этого является то, что ROS легко интегрируется с другими системами программного обеспечения роботов: ROS уже интегрирован с OpenRAVE, Orocos и Player.
* Библиотеки: предпочтительной моделью развития является написание библиотек с чистым функциональным интерфейсом.
* Простое тестирование: ROS имеет встроенный фреймворк для тестирования — rostest, что позволяет легко тестировать приложения.
* Масштабирование: ROS подходит для больших систем выполнения и для большого процесса разработки.
Таким образом, на вопрос: «Чем ROS отличается от X?» — трудно ответить на каждый Х. Но, если вы решите использовать X, вы всё же сможете использовать многие из библиотек, распространяемых вместе с ROS.
Если же учитывать специфику, то ниже приводится письмо Brian Gerkey (участник проектов Player и ROS) в рассылке ros-users относительно различий между ROS и Player (включая интеграцию OpenCV):
Ответ, как обычно, зависит от многого. В частности, это зависит от того, что вы пытаетесь сделать. Player отлично подходит для простых мобильных платформ. Он был разработан, чтобы обеспечить легкий доступ к датчикам и двигателям роботов Pioneer, оборудованных лазерным дальномером.С другой стороны, ROS, разрабатывается для комплекса мобильных платформ; с манипуляторами и самыми различными датчиками. По сравнению с Player, ROS легче использовать в распределенной вычислительной среде, и я бы сказал, что высокоуровневая сторона более развита в ROS, чем в Player. В то время, как Player предлагает больше драйверов оборудования, ROS предлагает больше реализаций алгоритмов. Я думаю, что было бы справедливо сказать, что ROS является более мощной и гибкой системой, чем Player, но, как обычно, большая мощность и гибкость достигается за счет большей сложности. Хотя мы работаем над тем, чтобы ROS был прост в использовании, есть еще значительная кривая обучения. Конечно, знакомство с Player должны помочь в изучении использования ROS, так как многие основные концепции схожи.
Что касается вашего конкретного вопроса относительно интеграции OpenCV, я думаю, что вы найдете больше ROS-кода, чем Player-кода, который использует OpenCV интересными способами. В будущем, вы должны ожидать увидеть даже больше, так как существует значительное перекрытие между командами-разработчиками ROS и OpenCV.Должен отметить, что ROS использует много кода из проекта Player. Есть узлы ROS, в которых используется код из драйверов Player, и оба Stage и Gazebo хорошо поддерживается и широко используется в ROS-сообществе.
Операционные системы
В настоящее время, ROS работает только на Unix-платформах. Программное обеспечение для ROS, прежде всего проверено на Ubuntu и Mac OS X, хотя ROS-сообщество вносит свой вклад в поддержку Fedora, Gentoo, Arch Linux и других платформ Linux (считаются «экспериментальными»).
Портирование ROS на Microsoft Windows возможно, но ещё не полностью реализовано.
Лицензия
ROS выпускается в соответствии с условиями BSD-лицензии и c открытым исходным кодом. ROS бесплатен для использования, как в исследовательских, так и в коммерческих целях. Пакеты из ros-pkg распространяются на условиях различных открытых лицензий.
Поддерживаемые роботы
* PR2
* TurtleBot
* PR1
* HERB
* STAIR I и II
* Nao
* Husky A200
* iRobot Create
* Robotino
* и многие другие
Далее: Что же такое ROS?
Ссылки
www.ros.org
www.willowgarage.com
ROS Introduction
Концепции ROS
Начальные руководства (на русском)
Morgan Quigley, Eric Berger, Andrew Y. Ng «STAIR: Hardware and Software Architecture»
Morgan Quigley, Brian Gerkey, Ken Conley, Josh Faust, Tully Foote, Jeremy Leibs, Eric Berger, Rob Wheeler, Andrew Ng «ROS: an open-source Robot Operating System»
По теме
Робософт — обзор существующих решений
Дистрибутивы ROS
Установка ROS (Electric)
robocraft.ru
Что такое ROS | РОБОТОША
Robot Operating System (ROS) — это широко используемый в робототехнике фреймворк. Философией ROS является создание программного обеспечения, которое бы работало с различными роботами, лишь с небольшими изменениями в коде. Эта идея позволяет создавать функциональность, которая может быть перенесена без особых усилий для использования различными роботами, чтобы раз за разом не изобретать колесо.
ROS была разработана в 2007 году в лаборатории искусственного интеллекта Стэнфорда (Stanford Artificial Intellegence Laboratory, SAIL) для поддержки стэнфордского проекта AI Robot. C 2008 года, разработка продолжилась в основном в исследовательском институте Willow Garage, сотрудничающим с более чем двадцатью различными институтами в рамках модели совместного развития.
Множество исследовательских институтов начали разрабатывать собственные проекты в ROS, добавляя поддержку своего аппаратного обеспечения и делясь примерами собственного программного кода. Некоторые компании, производящие роботов, стали адаптировать свои продукты для их использования с ROS.
Популярные роботы, поддерживаемые ROS
Список роботов, поддерживаемых ROS.
Как правило, для всех поддерживаемых платформ публикуется большое количество примеров и симуляторы, облегчающие разработку собственных проектов.
В ROS также поддерживается множество различных датчиков и исполнительных устройств (актуаторов), используемых в робототехнике. Каждый день появляются новые устройства, совместимые с этим фреймворком.
ROS поддерживает различные исполнительные устройства
В ROS имеются стандартные возможности операционной системы, такие как, аппаратная абстракция, управление устройствами на низком уровне, реализована часто используемая функциональность, передача сообщений между процессами, и управление библиотеками. Архитектура ROS основана не графе с централизованной топологией. Обработка происходит в узлах, которые могут принимать или отправлять данные с датчиков, систем контроля состояния и планирования, приводов, и так далее. Библиотека ориентирована на Unix-подобные системы (под Ubuntu Linux работает отлично, а Fedora и Mac OS X имеют статус экспериментальных).
Пакет *-ros-pkg является является общим репозиторием для разработки высокоуровневых библиотек. Многие из возможностей часто ассоциируемые с ROS, такие как библиотеки навигации и визуализатор rviz, хранятся в этом репозитории. Эти библиотеки предоставляют мощный набор инструментов (различные визуализаторы, симуляторы, средства отладки) для упрощения работы.
ROS позволяет наблюдать за тем, что происходит на каждом шаге
ROS распространяется на условиях лицензии BSD и является ПО с открытым исходным кодом. ROS бесплатна для исследовательских и коммерческих целей. ROS способствует повторному использованию кода, так что разработчики робототехники и ученые могут не изобретать колесо постоянно. Можно получить код из репозитория, изменить его и вновь поделиться улучшенным ПО. Вы также можете написать драйвер вашего собственного датчика для ROS.
ROS поддерживает параллельные вычисления, имеет хорошую интеграцию с популярными C++ библиотеками, такими как как OpenCV, Qt, Point Cloud Library и пр., и она может работать на одноплатных компьютерах, таких как Raspberry Pi или BeagleBone Black, а также с микроконтроллерными платформами, например, Arduino. Вы можете создать своего собственного робота на основе Arduino или Raspberry Pi и использовать для его управления Robot Operating System.
Время является очень важным ресурсом и ROS является одним из инструментов, которые могут помочь разработать комплексное решение в кратчайшие сроки и с минимальными усилиями. Библиотека ROS поможет реализовать алгоритмы и сократить время, необходимое для интеграции целой кучи компонентов.
Еще по этой теме
Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.
robotosha.ru
Что же такое ROS? / Робософт / RoboCraft. Роботы? Это просто!
Перед самым новым годом, я выложил перевод последнего урока из серии руководств ROS начального уровня.
Честно говоря, при начальном знакомстве с ROS (и даже после прохождения всех этих начальных уроков) было вообще ничего не понятно, и только по прошествии времени, стала вырисовываться картинка это замечательной системы.
Похоже, здесь играет роль та кривая обучения, про которую писал Brian Gerkey в своём письме, в котором сравнивал ROS и Player.вариант кривой обучения для игры Dwarf Fortress:
Разработчики ROS позиционируют свою систему, как операционную систему для роботов (Robot Operating System) и не зря.
Дело в том, что ситуации в робототехнике напоминает историю развития ПК: для разных роботов — разные несовместимые системы.
Обычно, при разработке робота вам приходится реализовывать:
— свою архитектуру
– свой протокол обмена сообщениями
– свою систему логирования
– свою систему перехода в разные системы координат
– свой драйвер джойстика/пульта управления
– свою логику навигации
– свою систему технического зрения
И даже, если вы сможете использовать различные готовые библиотеки для этих задач, то всё равно перед вами встанет серьёзная проблема — объединить их в единую систему робота.
Вспомним экосистему ПК, состоящую из стандартных слоёв:
* железо (материнская плата, процессор, жёсткий диск и т.д.)
* операционная система (скрывает от пользователя работу с железом ПК, предоставляет API для программ)
* библиотеки и приложения пользователя
и спроецируем её на робота:
* железо робота (компьютер, контроллеры, датчики, актуаторы)
* операционная система (ROS) — скрывает непосредственную работу с «железом» робота, предоставляя единый интерфейс (API) для взаимодействия с ним.
* приложения для управления роботом.
Однако, было бы странно — не использовать возможности существующих операционных систем, поэтому ROS работает под уже готовой OC (Ubuntu Linux), в которой реализует свой дополнительный слой абстрации — для управления роботами.
Таким образом, для программ взаимодействия и управления роботом, ROS играет роль «операционной системы», предоставляя программам управления свои интерфейсы, библиотеки и готовые приложения.
Для ROS, уже реализованы драйвера, позволяющие единым образом работать со многими устройствами:
— джойстиками
— GPS
— камерами
— контроллерами
— лазерными дальномерами
и т.п.
Так же, ROS уже содержит вспомогательные библиотеки и приложения для роботов:
— преобразование систем координат
— утилиты для визуализации данных
— систему для отладки (логирования)
— SLAM
— стек навигации
— распознавание объектов
— планирование движения манипулятора
и многое другое.
Т.о., для типовых задач робототехники, уже можно использовать готовые модули (пакеты и стеки), дописывая только необходимый функционал.
Главный принцип ROS: «не изобретать велосипед» («don’t reinvent the wheel»)!
Сами разработчики ROS так же следуют этому принципу, стараясь использовать готовые открытые библиотеки и инструменты:
boost, OGRE, Player, OpenCV…
СMake, Python, gcc, wxWidgets…
игровой движок OGRE используется в визуализаторе rviz (в настоящее время на wxWidgets, но планируется перенос под Qt)
Исследователи со всего мира уже многие годы программируют роботов. Целью ROS является объединение готовых решений и наработок в единую среду, где любой желающий может использовать эти решения и делиться своими.
Именно поэтому, многие роботы уже работают под управлением ROS:
Возможно, проще всего, воспринимать ROS, как клей для самых разных модулей.
Можно провести параллель с миром UNIX:
не писать одну большую программу, а реализовать несколько маленьких, которые могут сообща решить поставленную задачу.
Именно так работают Узлы в ROS.
Но если в UNIX программы взаимодействуют друг с другом через каналы (pipe),
то в ROS, программы (Узлы) взаимодействуют друг с другом через Темы.
В UNIX они пересылают друг-другу данные вывода,
а в ROS — Сообщения.
Таким образом, можно брать разные программы и получать быстрый результат — просто объединяя их между собой, как кубики LEGO.
То же самое и в ROS. Только, вместо обычных компьютерных утилит, выступают программы для роботов.
Например, вместо программы поиска файлов — программа (Узел) для поиска местоположения. Вместо программы поиска нужной строки — программа (Узел) для поиска объекта на изображении с камер.
Вместо команды перемещения файла — программа для управления манипулятором.
Комбинируя готовые Узлы ROS и, по необходимости, дописывая собственные, можно существенно сократить время разработки и позволить себе сконцентрироваться только на тех задачах, которые действительно нужно решить.
Например, захотим мы запрограммировать робота принесть нам с кухни яблоко.
Если делать всё самому, то можно потратить много времени, чтобы реализовать необходимый функционал. Изучить требуемую теорию (SLAM и т.п.) и реализовать:
определение роботом своего текущего положения, навигацию, объезд препятствий, обнаружение объектов, работа с манипулятором и т.д.
Если же использовать ROS, то можно, например, взять готовый стек навигации, настроить его для работы на своём роботе и сконцентрироваться только на тех задачах, которые пока в ROS не реализованы.
Таким образом, можно сэкономить многие сотни часов, которые будут потрачены на изобретение велосипеда и сконцентрироваться на чём-то действительно новом и интересном.
Разумеется, придётся потратить время на изучение ROS и нюансов его использования, но это время намного меньше чем то, которое потребуется на решение любой из вышеприведённых задач (особенно — с нуля).
А ещё можно сравнить ROS с… Arduino!
ROS делает для роботов тоже самое, что делает обычная ОС для компьютера — скрывает от пользователя/программиста «железо», предоставляя для этого свои функции.
Но ведь, точно так же Arduino, скрывает от пользователя/программиста железо микроконтроллера, предоставляя готовый и удобный фреймворк для программирования.
Плюс расширение возможностей с помощью готовых библиотек или написания собственных. Причём, при желании, можно не использовать Arduino-вскую обёртку, а залезть на более низкий уровень.
То же самое позволяет сделать и ROS.
Как ардуино позволяет любому почти сразу же начать программировать микроконтроллеры, так и ROS позволяет прикоснуться к робототехнике не только высоколобым учёным, но и простым любителям.
Вывод: Arduino дало возможность совершить качественный и количественный скачёк в развитии различных систем автоматизации (например, в роли контроллера 3D-принтеров RepRap), а ROS даёт аналогичную возможность развития систем робототехнических!
А уж о взаимном дополнении Arduino и ROS и говорить нечего — действительно гремучая смесь 🙂
Прелесть и гибкость единого интерфейса ROS, для оборудования робота можно оценить на следующем замечательном примере.
«Poor Man’s Lidar» — PML — «лазерный дальномер бедных»
Навигационный стек ROS, требует для своей работы выполнения определённых условий: робот должен предоставлять одометрию и иметь датчик, возвращающий дистанцию (лазерный дальномер) или облако точек (Kinect или стерео-камера).
Кажется, что выполнение последнего условия потребует больших финансов, но нюанс в том, что в ROS, программе навигации для работы, фактически, требуются данные (Сообщения), формата лазерного дальномера (sensor_msgs/LaserScan) или облака точек(sensor_msgs/PointCloud).
Получается, что мы можем использовать какой-нибудь другой сенсор, для которого можем реализовать драйвер, возвращающий данные в нужном формате.
Например, заменим лазерный дальномер на «лазерный дальномер бедных» (PML) — возьмём относительно недорогой Sharp-овский ИК-дальномер и закрепим его на качалке сервомашинки. Теперь, вращая сервомашинкой из стороны в сторону мы можем получать грубую оценку дальностей в секторе.
Остаётся написать драйвер, который будет считывать значения с нашего дальномера и Публиковать Сообщения типа sensor_msgs/LaserScan — тем самым реализуется «поддельный лазерный дальномер».
ROS будет успешно считывать данные через наш драйвер, а мы сможем использовать готовый навигационный стек ROS!
Красота!
Разумеется, подобной сенсор не идёт ни в какое сравнение с обычными лазерными дальномерами, но он более доступен, а если появятся средства на приобретение обычного дальномера, то нам не придётся ничего существенно менять в программе! Только заменить сенсор (и драйвер) и всё!
Кстати, на этом же принципе, в Turtlebot-е используется Kinect. В стеке Turtlebot-а есть пакет pointcloud_to_laserscan, который преобразует облако точек, получаемое от сенсора Kinect в данные лазерного сканера (Fake Laser), что позволяет использовать готовые алгоритмы SLAM (gmapping).
Сообщество
Но ROS — это не только платформа, но и обширное сообщество. Исследователи из различных университетов по всему миру успешно используют ROS для решения задач робототехники и ИИ.
Постоянно появляются новые стеки и пакеты, а если возникает вопрос — к сообществу всегда можно обратиться за помощью.
продолжение следует…
Ссылки:
www.ros.org
ROS Introduction
Концепции ROS
Начальные руководства (на русском)
http://answers.ros.org
Pi Robot Meets ROS
Pi Robot + ROS
По теме:
Робософт — обзор существующих решений
Дистрибутивы ROS
Установка ROS (Electric)
Автор: Vladimir (noonv), 2011-2012Эксклюзивно для www.robocraft.ru
копирование на другие ресурсы и публикация
без разрешения автора запрещены.
robocraft.ru
Часть 1.1 Документация по ROS. Что такое ROS? — TechCave
Оглавление
Что такое ROS?
ROS (Robot Operating System) включает в себя библиотеки и инструменты, чтобы помочь разработчикам программного обеспечения создавать приложения для роботов. Обеспечивает аппаратную абстракцию, драйверы устройств, библиотеки визуализации, передачи сообщений, управление пакетами, и многое другое. ROS является проектом с полностью открытым исходным кодом под лицензией BSD и бесплатен для использования, изменения и коммерциализации. Главная цель которого состоит в предоставлении разработчикам программного обеспечения для роботов общей платформы.
1. Так же, ROS уже содержит вспомогательные библиотеки и приложения для роботов:
- преобразование систем координат
- утилиты для визуализации данных
- систему для отладки (логирования)
- SLAM
- стек навигации
- распознавание объектов
- планирование движения манипулятора
- и многое другое.
2. Поддерживаемые роботы:
- PR2
- TurtleBot
- PR1
- HERB
- STAIR I и II
- Nao
- Husky A200
- iRobot Create
- Lego Mindstorms NXT
- Robotino
- и многие другие
3. Дистрибутивы ROS:
- ROS Indigo Igloo, 22 июля 2014
- ROS Hydro Medusa, 4 сентября 2013
- ROS Groovy Galapagos, 31 декабря 2012
- ROS Fuerte Turtle, 23 апреля 2012
- ROS Electric Emys, 30 августа 2011
- ROS Diamondback, 2 марта 2011
- ROS C Turtle, 2 августа 2010
- ROS Box Turtle, 2 марта 2010
4. Видео:
ROS: 3 года
ROS: 5 лет
Оглавление
techcave.ru
ROS — Урок 2 — Навигация по файловой системе ROS / Технологии / RoboCraft. Роботы? Это просто!
Содержание
Список вводных упражнений для знакомства с ROS содержится здесь.
пойдём по-порядку 🙂
Навигация по файловой системе ROS
1. Навигация пой файловой системе ROS
Описание: Этот урок описывает структуру файловой системы ROS, знакомит с командами roscd, rosls и rospack.
2. Обзор основной концепции файловой системы ROS
Определения:
Пакеты (Packages): Пакеты лежат на самом нижнем уровне организации программного обеспечения ROS. Они могут содержать все что угодно: библиотеки, инструменты, исполняемые файлы и т.д.
Манифест (Manifest): Манифест — это файл с описанием пакета. Основная задача манифеста — это определение зависимостей между пакетами.
Стеки (Stacks): Стеки — это коллекции пакетов, которые образуют следующий уровень библиотек.
Манифест Стека (Stack Manifest): Это такой же Манифест (файл с описанием), но на этот раз для всего стека.
Когда вы смотрите на файловую систему, то легко сможете определить — это пакет или стек:
В директории пакета обязательно находится файл manifest.xml.
А в директории стека обязательно есть файл stack.xml.
3. Утилиты файловой системы
Для ROS уже существует большое количество программного кода, распространяемого во множестве пакетов и стеков. Навигация по файловой системе осуществляется при помощи стандартных утилит командной строки, таких как ls и cd, но это было бы очень утомительным, поэтому ROS предоставляет свои утилиты, чтобы облегчить навигацию по своей фаловой структуре.
3.1 rospack и rosstack
rospack и rosstack являются частью пакета rospack.
Они позволяют получить информацию о пакетах и стеках. В данном руководстве, мы пока рассмотрим опцию find, которая возвращает путь к заданному пакету или стеку.
использование:
$ rospack find [package_name]
$ rosstack find [stack_name]
пример:
$ rospack find roscpp
вернёт:
YOUR_INSTALL_PATH/ros/core/roscpp
в моём случае:
/opt/ros/cturtle/ros/core/roscpp
3.2 roscd
roscd является частью пакета rosbash.
Эта команда позволяет перемещаться по каталогам (cd) пакетов или стеков.
Использование:
$ roscd [locationname[/subdir]]
пример:
$ roscd roscpp
Чтобы убедиться, что мы переместились в каталог пакета roscpp, можно распечатать текущий каталог с помощью стандартной команды pwd:
$ pwd
вернёт:
YOUR_INSTALL_PATH/ros/core/roscpp
в моём случае:
/opt/ros/cturtle/ros/core/roscpp
3.2.1 Подкаталоги
roscd также позволяет переходить в подкаталоги пакета или стека.
$ roscd roscpp/include
$ pwd
вернёт:
YOUR_INSTALL_PATH/ros/core/roscpp/include
у меня:
/opt/ros/cturtle/ros/core/roscpp/include
3.3 Особые случаи roscd
Есть несколько специальных мест, куда можно перейти с помощью roscd, которые не являются пакетом или стеком.
roscd без аргументов перебросит нас на $ROS_ROOT.
Попробуйте:
$ roscd
$ pwd
получим:
/opt/ros/cturtle/ros
3.3.2 roscd log
команда roscd log переместит на в директорию, в которой ROS сохраняет свои log-файлы.
Попробуйте:
$ roscd log
в моём случае, меня перебросило в
/home/noonv/.ros/log
3.4 rosls
rosls — это часть пакета rosbash. Эта команда позволяет нам промотреть (ls) содержимое директории в пакете или стеке по его имени, а не по пути к нему.
Использование:
$ rosls [locationname[/subdir]]
Пример:
$ rosls roscpp_tutorials
вернёт
add_two_ints_client listener_unreliable
add_two_ints_server listener_with_tracked_object
add_two_ints_server_class listener_with_userdata
anonymous_listener Makefile
babbler manifest.xml
CMakeLists.txt node_handle_namespaces
custom_callback_processing notify_connect
listener srv
listener_async_spin talker
listener_multiple time_api
listener_single_message timers
listener_threaded_spin
3.5 Tab-завершение
Может быть довольно утомительным вбивать полное имя пакета. Например, в предыдущем примере, название roscpp_tutorials — довольно длинное 🙂 К счастью, некоторые утилиты ROS поддерживают TAB-завершение.
Начните набирать:
$ roscd roscpp_<<< а теперь нажмите клавишу TAB >>>
После нажатия клавиши TAB имя должно дополниться:
$ roscd roscpp_tutorials/
Это работает, потому что roscpp_tutorials — единственный пакет ROS, который начинается с roscpp_.
Теперь попробуйте ввести:
$ roscd tur<<< а теперь нажмите клавишу TAB >>>
После нажатия клавиши табуляции, в командной строке произойдёт дополнение:
$ roscd turtle
Однако, в этом случае есть несколько пакетов, которые начинаются с turtle.
Попробуйте нажать TAB ещё раз. Это должно показать все ROS пакеты, которые начинаются с turtle
turtle_actionlib/ turtlesim/ turtle_teleop/ turtle_tf/
В командной строке, у вас пока всё равно содержится только
$ roscd turtle
Теперь дополните команду буквой s после turtle и затем нажмите клавишу TAB
$ roscd turtles<<< а теперь нажмите клавишу TAB >>>
Поскольку существует только один пакет, которые начинаются с turtles, вы должны увидеть:
$ roscd turtlesim/
4. Обзор
Вы могли уже обратить внимание на подход к названию утилит ROS:
rospack = ros + pack(age)
rosstack = ros + stack
roscd = ros + cd
rosls = ros + ls
Этот шаблон именования справедлив для многих инструментов ROS.
Далее: 2 — Создание пакета для ROS
Ссылки:
www.ros.org/wiki/ROS/Tutorials/NavigatingTheFilesystem
Руководства
все руководства ROS
robocraft.ru