roboforum.ru

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


ROS - Robot Operating System

Re: ROS - Robot Operating System

Сообщение linvinus » 27 июн 2016, 15:28

librealsense на Github

это хорошо.

запустил rtabmap (http://wiki.ros.org/rtabmap_ros)

запустили на тегре?

jetson пришла в феврале 2016

у меня на роботе тоже Tk1, так что можем пообсуждать её.
я заменил радиатор, поставил большего размера чтобы было пассивное охлаждение, вентилятор меня убивал
заменил супер конденсатор, который заменяет резервную батарейку часов, на Li-Ion АКБ от nokia, и переключил микросхему зарядки с 2.5в на 3в теоретически должно заряжаться :) пока не знаю три месяца часы не сбрасывались.
еще я напрямую с джетсона управляю скоростью вращения лидара, использую встроенный шим.

подошла и камера ZED. Вот тут то пришлось повозиться - нагрузку на плату она дает очень большую, пришлось оптимизировать ПО, все подстраивать менять ...скажем заморочек хватало и до сих пор кое где вылазят


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

если статьи писать не хотите можно просто тему-блог завести тут forum87/
и там сообщать о своём прогрессе, думаю по ходу дела народ подтянется.
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

Сообщение Xtrem » 01 июл 2016, 13:15

запустил rtabmap (http://wiki.ros.org/rtabmap_ros)

запустили на тегре?

Да


jetson пришла в феврале 2016

у меня на роботе тоже Tk1, так что можем пообсуждать её.
я заменил радиатор, поставил большего размера чтобы было пассивное охлаждение, вентилятор меня убивал
заменил супер конденсатор, который заменяет резервную батарейку часов, на Li-Ion АКБ от nokia, и переключил микросхему зарядки с 2.5в на 3в теоретически должно заряжаться :) пока не знаю три месяца часы не сбрасывались.
еще я напрямую с джетсона управляю скоростью вращения лидара, использую встроенный шим.
Я ни чего не менял - работает как есть из коробки, выдел как прикрутить часы, но вот Вашего решения ни где не видел - если можно ссылку на описание (ну или сделайте статью по этому поводу)

подошла и камера ZED. Вот тут то пришлось повозиться - нагрузку на плату она дает очень большую, пришлось оптимизировать ПО, все подстраивать менять ...скажем заморочек хватало и до сих пор кое где вылазят


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

если статьи писать не хотите можно просто тему-блог завести тут forum87/
и там сообщать о своём прогрессе, думаю по ходу дела народ подтянется.[/quote]
времени не хватает - это все таки хобби :( По ZED я ни чего не правил - исправления делаю только в своем коде, он у меня не очень, пишу на скорую руку - лишь бы работало, если начинает что то мешать - тогда смотрю где проблема и оптимизирую работу.
По поводу статей и своей ветки - о роботе- раскидаю дела и постараюсь оформить.
Xtrem
 
Сообщения: 3
Зарегистрирован: 22 июн 2016, 13:23

Re: ROS - Robot Operating System

Сообщение linvinus » 02 июл 2016, 00:06

что то вы перепутали цитаты и ваши ответы.

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

так что лучшее что могут любители - это делиться опытом, особенно если есть спрос.

запустил rtabmap

мне вот интересно как оно работает и сколько потребляет от тегры, я пока на другие задачи переключился и тегра для меня просто как компьютер на колёсиках, КУДА у меня пока никак не задейстована.


Вашего решения ни где не видел - если можно ссылку на описание (ну или сделайте статью по этому поводу)


это по тому что я его сам "изобрёл", я посмотрел схему, понял что ёмкость smd ионистора который поставили вместо батарейки недостаточно, выпаял его и на его место впаял поровода которые подвёл к li-ion АКБ.
могу сфоткать но если у вас фена нет то даже не стоит пытаться повторить.

Кроме того, в последствии я понял что не обязательно было так делать т.к. у меня робот с АКБ и ИБП так что плата тегры в конечном счёте оказалась под напряжением всё время.

Но если действительно инетерсно могу выложить инструкцию что и как делал.
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

Сообщение linvinus » 03 июл 2016, 16:39

Из документации на hector slam http://wiki.ros.org/hector_slam/Tutoria ... rYourRobot

хорошая картинка как соотносятся разные системы отсчёта в ROS.
coordsystems_img.png


map - глобальная система отсчёта.
odom - относительная (локальная) система отсчёта (если map у вас нет то её можно использовать в качестве глобальной системы (для тестирования))
base_footprint - проекция base_link на 2х мерную карту.
base_link - система отсчёта связанная с центром робота (центр масс, или центр вращения)
base_stabilized - выровненная относительно поверхности карты base_link
laser_link - локальная система отсёта связанная с лазерным дальномером.

что это вообще значит?
представим что у нас есть лазерный дальномер расположенный в 5см от центра робота по оси X и в 5см по оси Z
лазерный дальномер (в системе laser_link) говорит нам что впереди препятствие на расстоянии 20см, вопрос какое расстояние между роботом и препятствием?

какие координаты имеет препятствие в глобальной системе координат - на карте?
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

Сообщение Scorpio » 03 июл 2016, 18:54

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

Re: ROS - Robot Operating System

Сообщение lorry » 04 июл 2016, 00:16

Scorpio писал(а):Я так понимаю, что тема, задуманная, как уроки по ROS для начинающих, сильно разбавилась общением ROS -профи. Может уроки вынести в отдельную тему и допустить в ней диспуты только на тему уроков?

Всем привет.
Согласен со Scorpio, что то уж слишком не по теме посты публикуются.

Ну, а мы продолжим работать с ROS.
Работаем с узлами ROS
Узлы являются исполняемыми программами, и эти исполняемые файлы находятся в директории имя_пакета/bin. Чтобы попрактиковаться и изучить работу с узлами, мы, в предыдущем уроке, использовали пакет под названием turtlesim. Давайте теперь приподнимем одеяло и посмотрим, что происходит внутри ROS.
Как уже отмечалось, для того чтобы начать работать с ROS достаточно в терминале запустить ROS-мастер с помощью команды roscore:
Код: Выделить всёРазвернуть
$ roscore

Вы увидите что то вроде этого:
Безымянный.jpg

Для получения информации об узлах существует инструмент rosnode. Чтобы посмотреть, какие у этой команды есть параметры, открываем новое окно теринала и выполняем в нем команду:
Код: Выделить всёРазвернуть
$ rosnode

Вы увидите список возможных параметров как показано ниже:
Безымянный.jpg

Если вам требуется более подробное описание, как использовать эти параметры, используйте следующий формат:
Код: Выделить всёРазвернуть
$ rosnode имя_параметра -h

Теперь, когда roscore запущен, мы собираемся получить информацию о запущенных узлах:
Код: Выделить всёРазвернуть
$ rosnode list

Вы увидите, что выполняется только узел /rosout. Это нормально, потому что этот узел выполняется вместе с roscore. Мы можем получить информацию об узле, используя различные параметры.
Попробуйте использовать следующие команды для получения дополнительной информации об узлах:
Код: Выделить всёРазвернуть
$ rosnode info
$ rosnode ping
$ rosnode machine
$ rosnode kill

Запустим новый узел, используя rosrun:
Код: Выделить всёРазвернуть
$ rosrun turtlesim turtlesim_node

Эту команду мы уже использовали на прошлом уроке, как и ожидается, она запустит в новом окне узел turtlesim_node:
Безымянный.jpg

Если теперь посмотреть на список узлов, то мы увидим в нем узел с именем /turtlesim. Информацию об узле можно посмотреть, используя rosnode info /имя_узла. Вы можете увидеть большое количество информации, которую можно использовать
для отладки ваших программ:
Код: Выделить всёРазвернуть
$ rosnode info /turtlesim
Node [/turtlesim]
Publications:
* /turtle1/color_sensor [turtlesim/Color]
* /rosout [rosgraph_msgs/Log]
* /turtle1/pose [turtlesim/Pose]
Subscriptions:
* /turtle1/cmd_vel [unknown type]
Services:
* /turtle1/teleport_absolute
* /turtlesim/get_loggers
* /turtlesim/set_logger_level
* /reset
* /spawn
* /clear
* /turtle1/set_pen
* /turtle1/teleport_relative
* /kill
contacting node http://hp-notebook:60243/ ...
Pid: 7997
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS

Здесь мы можем увидеть публикации топиков (тем) - раздел Publications, подписку на топик (темы) - Subscriptions и сервисы (srv), которые есть у узла, а также уникальные имена каждого.
В разделе Publications мы видим три топика в которые наш узел публикует данные:
/turtle1/color_sensor - в этот топик публикуются данные о выбранной цветовой гамме окна в котором работает черепашка
/rosout - этот топик предназначен для вывода информации, например в окно терминала
/turtle1/pose - этот топик публикует позу (относительные координаты) черепашки в окне turtlesim.
В разделе Subscriptions мы видим единственный топик на который подписан наш узел:
/turtle1/cmd_vel - здесь узел turtlesim получает команды управления на перемещение черепашки внутри окна.

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

Re: ROS - Robot Operating System

Сообщение lorry » 12 июл 2016, 00:37

Взаимодействие с темами
Для взаимодействия и получения информации о темах используется инструмент rostopic, имеющий следующие параметры:
∙ rostopic bw - Отображает ширину полосы данных, используемую темой
∙ rostopic echo - Выводит сообщения на экран
∙ rostopic find - Ищет темы по их типу
∙ rostopic hz - Отображает скорость публикации тем
∙ rostopic info - Выводит информацию об активных темах
∙ rostopic list - Список активных тем
∙ rostopic pub - Публикует данные в тему
∙ rostopic type - Выводит тип темы
Если вы хотите посмотреть больше информаии об этих параметрах, используйте -h:
Код: Выделить всёРазвернуть
$ rostopic bw -h

Используя параметр pub, мы можем публиковать темы, на которые может подписаться любой узел. Нам нужно лишь опубликовать тему с корректным именем. Используем узел, который необходим для управления. Запустите черепашку /turtlesim, как это делалось в предыдущих уроках. Запустим в новом окне терминала:
Код: Выделить всёРазвернуть
$ rosrun turtlesim turtle_teleop_key

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

Как черепашка движется во время выполнения turtle_teleop_key?
Если вы хотите увидеть информацию об узлах /teleop_turtle и /turtlesim, мы можем посмотреть на следующий код, который находится в теме, под названием * /turtle1/ cmd_vel [geometry_msgs/Twist] в разделе Publications первого узла. В разделе Subscriptions второго узла есть * /turtle1/cmd_vel [geometry_msgs/Twist]:
Код: Выделить всёРазвернуть
$ rosnode info /teleop_turtle
Node [/teleop_turtle]
Publications:
* /turtle1/cmd_vel [geometry_msgs/Twist]
...
$ rosnode info /turtlesim
Node [/turtlesim]
...
Subscriptions:
* /turtle1/cmd_vel [geometry_msgs/Twist]
...

Это означает, что первый узел публикует тему, на которую может подписаться второй узел.
turtlesim_node и узел turtle_teleop обмениваются информацией посредством тем ROS. turtle_teleop_key публикует клавиши перемещения в теме, в то время как turtlesim подписан на ту же самую тему для получения клавиш перемещения.
Можно использовать rqt_graph, который показывает выполняющиеся в настоящий момент узлы и темы. rqt_graph создает динамический граф того, что происходит в системе. rqt_graph является частью пакета rqt. Если rqt_graph еще не установлен в системе, выполните:
Код: Выделить всёРазвернуть
$ sudo apt-get install ros-indigo-rqt
$ sudo apt-get install ros-indigo-rqt-common-plugins

В новом окне Теринала выполним следующую команду:
Код: Выделить всёРазвернуть
$ rosrun rqt_graph rqt_graph

У вас должно появиться похожее окно:
Безымянный1.jpg

Если переместить указатель мыши на /turtle1/cmd_vel, то это выделит узлы ROS (здесь - синим и зеленым цветом) и темы (здесь - красным цветом). Как вы можете видеть, /teleop_turtle обменивается информацией с /turtlesim, используя тему /turtle1/cmd_vel.
Безымянный2.jpg

Используя параметр echo, мы можем посмотреть информацию, отправленную узлом. Выполните следующую команду и используйте клавиши со стрелками, чтобы посмотреть что за данные были отправлены:
Код: Выделить всёРазвернуть
$ rostopic echo /turtle1/cmd_vel

Вы увидите что-то похожее на следующее:
Код: Выделить всёРазвернуть
linear:
x: -2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0
---

Вновь вернемся с rqt_graph. В левом верхнем углу нажмите кнопку «Обновить» для отображения нового узла.
Безымянный3.jpg

Как видно, показанный здесь красным rostopic echo, также теперь подписан на тему turtle1/cmd_vel.
Вы можете посмотреть список тем, на которые подписаны и которые опубликованы, используя следующую строку кода:
Код: Выделить всёРазвернуть
$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

Посмотреть тип сообщения, отправленного темой, можно используя следующую команду:
Код: Выделить всёРазвернуть
$ rostopic type /turtle1/cmd\_vel
geometry_msgs/Twist

Если вам необходимо посмотреть поля сообщения, выполните:
Код: Выделить всёРазвернуть
$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z

Это полезные инструменты, потому что, используя эту информацию, мы можем публиковать темы, используя команду rostopic pub [topic] [msg_type] [args]. Наберите в терминале команду:
Код: Выделить всёРазвернуть
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/
Twist -- ’[3.0, 0.0, 0.0]’ ’[0.0, 0.0, 2]’

Вы увидите черепашку, создающую кривую.
Безымянный4.jpg

Эта команда отправляет единственное сообщение в turtlesim, в котором содержится информация о том, что необходимо двигаться с линейной скоростью равной 3.0 и угловой скоростью равной 2.0.
Разберем эту команду по частям:
∙ rostopic pub — публикуем сообщение в данной теме
∙ -1 — публиковать только одно сообщение, затем выйти
∙ /turtle1/cmd_vel — имя темы, в которую публиковать
∙ geometry_msgs/Twist — тип сообщения, который использовался при публикации темы
∙ - - — двойное тире сообщает анализатору синтаксиса, что ни один из следующих аргументов не является параметром. Это необходимо в тех случаях, когда в аргумент входит дефис, например в отрицательных числах.
∙ ’[3.0, 0.0, 0.0]’ ’[0.0, 0.0, 2]’ — сообщение geometry_msgs/Twist имеет два вектора: linear и angular, каждый из которых состоит из трех числовых элементов c плавающей точкой. В нашем случае, ’[3.0, 0.0, 0.0]’ становится линейным значением с x=3, y=0, z=0 и ’[0.0, 0.0, 2]’ является угловым значением с x=0, y=0, z=2. Эти аргументы имеют YAML синтаксис.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ROS - Robot Operating System

Сообщение Hamulus » 02 авг 2016, 08:08

подскажите, а есть ли какая-то возможность запускать компоненты ROS без запуска терминалов?
в смысле смущает не пользование терминалом, а фактически то, что для каждого отладочного компонента из набора rqt фактически кроме окна непосредственно приложухи еще и по одному окну терминала запущено, что очень неудобно
Hamulus
 
Сообщения: 53
Зарегистрирован: 19 июн 2016, 14:48

Re: ROS - Robot Operating System

Сообщение Holmes » 02 авг 2016, 11:40

Я так понимаю что можно запустить в одном терминале все нужные компоненты и пакеты с отвязкой от терминала (типа с &) и потом закрыть терминал. Ну или вообще баш скрипт.
Аватара пользователя
Holmes
 
Сообщения: 230
Зарегистрирован: 08 окт 2010, 14:22
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман

Re: ROS - Robot Operating System

Сообщение elmot » 02 авг 2016, 16:31

конечно можно.
читать ман на nohup и &
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: ROS - Robot Operating System

Сообщение setar » 02 авг 2016, 17:20

рекомендую использовать screen для этого - аналог nohup и & но удобнее.
можно отцепиться от работающего процесса, прицепиться обратно, и самое приятное можно над одним и тем же процессом работать вдвоем или просто с разных компьютеров.
я так например саппорт клиентам оказываю по удаленной настройке linux, чтобы клиент не волновался что именно другой человек делает на его сервере да еще с правами root

Добавлено спустя 1 минуту:
еще screen работает с ttyUSB и любыми другими последовательными портами, тоже удобно
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: ROS - Robot Operating System

Сообщение lorry » 03 авг 2016, 04:19

Hamulus писал(а):подскажите, а есть ли какая-то возможность запускать компоненты ROS без запуска терминалов?
в смысле смущает не пользование терминалом, а фактически то, что для каждого отладочного компонента из набора rqt фактически кроме окна непосредственно приложухи еще и по одному окну терминала запущено, что очень неудобно

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

Re: ROS - Robot Operating System

Сообщение psi » 04 авг 2016, 00:54

Здравствуйте! Скажите, а можно ли протестировать работу SLAM алгоритма под ROS, используя вместо камеры обычный датасет из кадров? Извините за возможно глупый вопрос (пока новичок в этом деле :oops: ).
psi
 
Сообщения: 10
Зарегистрирован: 20 июл 2016, 21:19

Re: ROS - Robot Operating System

Сообщение lorry » 04 авг 2016, 01:15

psi писал(а):Здравствуйте! Скажите, а можно ли протестировать работу SLAM алгоритма под ROS, используя вместо камеры обычный датасет из кадров? Извините за возможно глупый вопрос (пока новичок в этом деле :oops: ).

Можно. Для этого существуют bag файлы.

Добавлено спустя 14 минут 57 секунд:
Прошу прощения за столь долгую задержку в публикациях, были важные дела.
Продолжим.

Использование сервисов
Сервисы являются еще одним способом, посредством которого узлы могут обмениваться информацией друг с другом. Сервисы позволяют узлам отправлять запрос и получать ответ.
Для взаимодействия с сервисами используется инструмент rosservice. Параметры для этой команды:
∙ rosservice args /service - Отображает аргументы сервиса
∙ rosservice call /service - Вызывает сервис с представленными аргументами
∙ rosservice find msg-type - Ищет сервисы по их типу
∙ rosservice info /service - Выводит информацию о сервисе
∙ rosservice list - Список активных сервисов
∙ rosservice type /service - Отображает тип сервиса
∙ rosservice uri /service - Выводит ROSPRC URI сервиса
Для получения списка доступных сервисов для узла turtlesim, используется следующий код. Если он не заработает, выполните roscore и запустите узел turtlesim.
Код: Выделить всёРазвернуть
$ rosservice list

Вы увидите следующее:
Код: Выделить всёРазвернуть
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rostopic_9126_1412423515462/get_loggers
/rostopic_9126_1412423515462/set_logger_level
/rqt_gui_py_node_8979/get_loggers
/rqt_gui_py_node_8979/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtle2/set_pen
/turtle2/teleport_absolute
/turtle2/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

Рабочий стол при этом выглядит примерно таким образом:
1.jpg

Для того, чтобы посмотреть тип любого сервиса, например, сервиса /clear:
Код: Выделить всёРазвернуть
$ rosservice type /clear

Вы увидите:
Код: Выделить всёРазвернуть
std_srvs/Empty

Для вызова сервиса используйте rosservice call [service] [args]. Если вы хотите запустить сервис /clear:
Код: Выделить всёРазвернуть
$ rosservice call /clear

В окне turtlesim вы увидите, что линии, созданные движением черепашки
будут удалены.
Теперь попробуйем другой сервис, например, сервис /spawn. Этот сервис создаст другую черепашку в другом месте, с другой пространственной ориентацией.
Код: Выделить всёРазвернуть
$ rosservice type /spawn | rossrv show

Увидим следующее:
Код: Выделить всёРазвернуть
float32 x
float32 y
float32 theta
string name
---
string name

Используя эти поля, мы знаем как запустить сервис. Нам необходимы координаты x и y, ориентация theta и имя новой черепашки:
Код: Выделить всёРазвернуть
$ rosservice call /spawn 3.0 3.0 0.2 "new_turtle"

Увидим следующий результат:
2.jpg


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

Re: ROS - Robot Operating System

Сообщение lorry » 29 авг 2016, 09:44

Использование сервера параметров
Сервер параметров используется для хранения данных, доступных любым узлам. В ROS имеется инструмент для управления сервером параметров под названием rosparam. Параметры:
∙ rosparam set parameter value - устанавливает параметр
∙ rosparam get parameter - получает параметр
∙ rosparam load file - загружает параметры из файла
∙ rosparam dump file - выгружает параметры в файл
∙ rosparam delete parameter - удаляет параметр
∙ rosparam list - список имен параметров
Например, мы можем посмотреть параметры на сервере, которые используются всеми узлами:
Код: Выделить всёРазвернуть
$ rosparam list

На выходе получим:
Код: Выделить всёРазвернуть
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_hp_notebook__48988
/rosversion
/run_id

Параметры background принадлежат узлу turtlesim. Эти параметры изменяют цвет окон, который изначально голубой. Если вы хотите считать значение, используйте параметр get:
Код: Выделить всёРазвернуть
$ rosparam get /background_b

Для установки нового значения, используйте параметр set:
Код: Выделить всёРазвернуть
$ rosparam set /background_b 100

Для того, чтобы изменный параметр начал действовать, необходимо вызвать сервис clear:
Код: Выделить всёРазвернуть
$ rosservice call clear

Если нам нужно посмотреть содержимое всего сервера параметров, то для этого используется команда rosparam get /:
Код: Выделить всёРазвернуть
$ rosparam get /

Другим важным свойством rosparam является параметр dump. Используя этот параметр, мы можем загружать или сохранять содержимое сервера параметров.
Для сохранения сервера параметров используйте rosparam dump [file_name] [пространство_имен]:
Код: Выделить всёРазвернуть
$ rosparam dump save.yaml

Для загрузки файла с новыми данными на сервер параметров используйте rosparam load [file_ name] [пространство_имен]:
Код: Выделить всёРазвернуть
$ rosparam load load.yaml пространство_имен

Пример: загрузим сохраненный сервер параметров в новое пространство имен, например copy:
Код: Выделить всёРазвернуть
$ rosparam load save.yaml copy
$ rosparam get copy/background_b


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

Пред.След.

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

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

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