rosdevice

Соединитесь с удаленным устройством ROS

Описание

Объект rosdevice используется, чтобы создать связь с устройством ROS. Объект содержит необходимую информацию о входе в систему и другие параметры распределения ROS. Если связь установлена с помощью rosdevice, можно запустить и остановить ядро ROS или узлы ROS и проверять состояние сети ROS. Прежде, чем запустить узлы ROS, необходимо соединить MATLAB® с сетью ROS с помощью rosinit.

Можно развернуть узлы ROS на устройстве ROS с помощью моделей Simulink®. Для примера смотрите, Генерируют Автономный Узел ROS от Simulink®.

Примечание

Чтобы соединиться с устройством ROS, сервер SSH должен быть установлен на устройстве.

Создание

Синтаксис

device = rosdevice(deviceAddress,username,password)
device = rosdevice

Описание

пример

device = rosdevice(deviceAddress,username,password) создает объект rosdevice, соединенный с устройством ROS в заданном адресе и с заданным именем пользователя и паролем.

device = rosdevice создает объект rosdevice, соединенный с устройством ROS с помощью сохраненных значений для deviceAddress, username и password.

Свойства

развернуть все

Это свойство доступно только для чтения.

Имя узла или IP-адрес устройства ROS, заданного как вектор символов.

Пример: '192.168.1.10'

Пример: 'samplehost.foo.com'

Это свойство доступно только для чтения.

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

Пример: 'user'

Местоположение установки ROS, заданной как вектор символов. Если папка не задана, MATLAB пытается определить правильную папку для вас. Когда вы развертываете узел ROS, устанавливаете это значение от Simulink в диалоговом окне Configuration Parameters под Hardware Implementation.

Пример: '/opt/ros/hydro'

Папка Catkin, где модели развертываются на устройстве, задала как вектор символов. Когда вы развертываете узел ROS, устанавливаете это значение от Simulink в диалоговом окне Configuration Parameters под Hardware Implementation.

Пример: '~/catkin_ws_test'

Это свойство доступно только для чтения.

Узлы, доступные, чтобы работать на устройстве ROS, возвращенном как массив ячеек из символьных векторов. Узлы только перечислены, если они - часть CatkinWorkspace и были развернуты на устройстве с помощью Simulink.

Пример: {'robotcontroller','publishernode'}

Функции объекта

runNodeЗапустите узел ROS
stopNodeОстановите узел ROS
isNodeRunningОпределите, запускается ли узел ROS
runCoreЗапустите ядро ROS
stopCoreОстановите ядро ROS
isCoreRunningОпределите, запускается ли ядро ROS
systemВыполните системную команду на устройстве
putFileСкопируйте файл в устройство
getFileПолучите файл от устройства
deleteFileУдалите файл из устройства
dirПеречислите содержание папки на устройстве
openShellОткройте интерактивный командный процессор для устройства

Примеры

свернуть все

Соединитесь с удаленным устройством ROS и запустите ядро ROS. Ядро ROS необходимо, чтобы запустить узлы ROS, чтобы связаться через сеть ROS. Можно запустить и остановить ядро ROS или узел и проверять их состояние с помощью объекта rosdevice.

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

ipaddress = '192.168.154.131';
d = rosdevice(ipaddress,'user','password')
d = 

  rosdevice with properties:

      DeviceAddress: '192.168.154.131'
           Username: 'user'
          ROSFolder: '/opt/ros/hydro'
    CatkinWorkspace: '~/catkin_ws_test'
     AvailableNodes: {'robotcontroller'  'robotcontroller2'}

Запустите ядро ROS и проверку, если она запускается.

runCore(d)
running = isCoreRunning(d)
running =

  logical

   1

Остановите ядро ROS и подтвердите, что оно больше не запускается.

stopCore(d)
running = isCoreRunning(d)
running =

  logical

   0

Соединитесь с удаленным устройством ROS и запустите узел ROS. Во-первых, запустите ядро ROS так, чтобы узлы ROS могли связаться через сеть ROS. Можно запустить и остановить ядро ROS или узел и проверять их состояние с помощью объекта rosdevice.

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

ipaddress = '192.168.203.129';
d = rosdevice(ipaddress,'user','password');
d.ROSFolder = '/opt/ros/hydro';
d.CatkinWorkspace = '~/catkin_ws_test'
d = 

  rosdevice with properties:

      DeviceAddress: '192.168.203.129'
           Username: 'user'
          ROSFolder: '/opt/ros/hydro'
    CatkinWorkspace: '~/catkin_ws_test'
     AvailableNodes: {'robotcontroller'  'robotcontroller2'}

Запустите ядро ROS. Соедините MATLAB® с ведущим устройством ROS использование rosinit. Это ядро позволяет вам запустить узлы ROS на своем устройстве ROS.

runCore(d)
rosinit(d.DeviceAddress,11311)
Initializing global node /matlab_global_node_12272 with NodeURI http://192.168.203.1:61068/

Проверяйте доступные узлы ROS на соединенном устройстве ROS. Эти узлы были сгенерированы из моделей Simulink® после процесса в Том, чтобы генерировать Автономный Узел ROS от примера Simulink®.

d.AvailableNodes
ans =

  1×2 cell array

    {'robotcontroller'}    {'robotcontroller2'}

Запустите узел ROS. определение имени узла. Проверяйте, запускается ли узел.

runNode(d,'robotcontroller')
running = isNodeRunning(d,'robotcontroller')
running =

  logical

   1

Остановите узел ROS. Отключитесь от сети ROS. Остановите ядро ROS.

stopNode(d,'robotcontroller')
rosshutdown
stopCore(d)
Shutting down global node /matlab_global_node_12272 with NodeURI http://192.168.203.1:61068/

Запустите несколько узлов ROS на соединенном устройстве ROS. Узлы ROS могут быть сгенерированы с помощью моделей Simulink®, чтобы выполнить различные задачи в сети ROS. Эти узлы затем развертываются на устройстве ROS и могут быть запущены независимо от Simulink®.

Этот пример использует две различных модели Simulink, которые были развернуты как узлы ROS. Смотрите Генерируют Автономный Узел ROS от Simulink® и следуют инструкциям, чтобы сгенерировать и развернуть узел ROS. Узел 'robotcontroller' отправляет скоростные команды в робота, чтобы переместиться по нему к данной точке. Узел 'robotcontroller2' использует ту же модель, но удваивает линейную скорость, чтобы управлять роботом быстрее.

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

ipaddress = '192.168.203.129';
d = rosdevice(ipaddress,'user','password')
d = 

  rosdevice with properties:

      DeviceAddress: '192.168.203.129'
           Username: 'user'
          ROSFolder: '/opt/ros/indigo'
    CatkinWorkspace: '~/catkin_ws_test'
     AvailableNodes: {'robotcontroller'  'robotcontroller2'}

Запустите ядро ROS. Ядро ROS является ведущим устройством, позволяет вам запустить узлы ROS на своем устройстве ROS. Соедините MATLAB® с ведущим устройством ROS использование rosinit. В данном примере порт установлен в 11 311. rosinit может автоматически выбрать порт для вас, не задавая этот вход.

runCore(d)
rosinit(d.DeviceAddress,11311)
Initializing global node /matlab_global_node_15972 with NodeURI http://192.168.203.1:59334/

Проверяйте доступные узлы ROS на соединенном устройстве ROS. Узлы, перечисленные в этом примере, были сгенерированы из моделей Simulink® после процесса в Том, чтобы генерировать Автономный Узел ROS от примера Simulink®. Два отдельных узла сгенерированы, 'robotcontroller' и 'robotcontroller2', которым установили линейную скорость на 1 и 2 в модели соответственно.

d.AvailableNodes
ans =

  1×2 cell array

    {'robotcontroller'}    {'robotcontroller2'}

Запустите Средство моделирования Робота с помощью ExampleHelperSimulinkRobotROS. Это средство моделирования автоматически соединяется с ведущим устройством ROS на устройстве ROS. Вы будете использовать это средство моделирования, чтобы запустить узел ROS и управлять роботом.

sim = ExampleHelperSimulinkRobotROS;

Запустите узел ROS, задав имя узла. Узел 'robotcontroller' управляет роботом к определенному местоположению ([-10 10]). Ожидайте, чтобы видеть диск робота.

runNode(d,'robotcontroller')
pause(10)

Сбросьте Средство моделирования Робота, чтобы сбросить положение робота. Также нажмите Reset Simulation. Поскольку узел все еще запускается, робот продолжается назад к определенному местоположению. Чтобы прекратить отправлять команды, остановите узел.

resetSimulation(sim.Simulator)
pause(5)
stopNode(d,'robotcontroller')

Запустите узел 'robotcontroller2'. Эта модель управляет роботом с дважды линейной скоростью. Сбросьте положение робота. Ожидайте, чтобы видеть диск робота. Необходимо видеть более широкий поворот из-за увеличенной скорости.

runNode(d,'robotcontroller2')
resetSimulation(sim.Simulator)
pause(10)

Закройте средство моделирования. Остановите узел ROS. Отключитесь от сети ROS и остановите ядро ROS.

close
stopNode(d,'robotcontroller2')
rosshutdown
stopCore(d)
Shutting down global node /matlab_global_node_15972 with NodeURI http://192.168.203.1:59334/

Введенный в R2017b