runNode

Запустите узел ROS

Синтаксис

runNode(device,modelName)
runNode(device,modelName,masterURI)
runNode(device,modelName,masterURI,nodeHost)

Описание

пример

runNode(device,modelName) запускает узел ROS, сопоставленный с развернутой модели Simulink® под названием modelName. Узел ROS должен быть развернут в рабочей области Сережки, заданной свойством CatkinWorkspace объекта входа rosdevice, device. По умолчанию узел соединяется с ведущим устройством ROS, что MATLAB® соединяется с со свойством device.DeviceAddress.

runNode(device,modelName,masterURI) подключения к заданному основному URI.

runNode(device,modelName,masterURI,nodeHost) подключения к заданному основному URI и хосту узла. Узел рекламирует свой адрес как имя узла или IP-адрес, данный в nodeHost.

Примеры

свернуть все

Соединитесь с удаленным устройством 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/

Входные параметры

свернуть все

Устройство ROS, заданное как объект rosdevice.

Имя развернутой модели Simulink, заданной как вектор символов. Если имя модели не допустимо, функция возвращает ошибку.

URI ведущего устройства ROS, заданного как вектор символов. На запуске узел соединяется с ведущим устройством ROS с данным URI.

Имя хоста для узла, заданного как вектор символов. Узел использует это имя хоста, чтобы рекламировать себя в сети ROS для других, чтобы соединиться с ним.

Введенный в R2017b