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) создает 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 или узел ROS 2
stopNodeОстановите ROS или узел ROS 2
isNodeRunningОпределите, запускаются ли ROS или узел ROS 2
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.203.131';
d = rosdevice(ipaddress,'user','password')
d = 
  rosdevice with properties:

      DeviceAddress: '192.168.203.131'
           Username: 'user'
          ROSFolder: '/opt/ros/indigo'
    CatkinWorkspace: '~/catkin_ws'
     AvailableNodes: {'voxel_grid_filter_sl'}

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

runCore(d)
Another roscore / ROS master is already running on the ROS device. Use the 'stopCore' function to stop it.
running = isCoreRunning(d)
running = logical
   1

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

stopCore(d)
pause(2)
running = isCoreRunning(d)
running = logical
   0

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

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

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

      DeviceAddress: '192.168.203.129'
           Username: 'user'
          ROSFolder: '/opt/ros/indigo'
    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_84497 with NodeURI http://192.168.203.1:56034/

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

d.AvailableNodes
ans = 1×2 cell
    {'robotcontroller'}    {'robotcontroller2'}

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

runNode(d,'RobotController')
running = isNodeRunning(d,'RobotController')
running = logical
   1

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

stopNode(d,'RobotController')
rosshutdown
Shutting down global node /matlab_global_node_84497 with NodeURI http://192.168.203.1:56034/
stopCore(d)

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

Этот пример использует две различных модели Simulink, которые были развернуты как узлы ROS. Смотрите Генерируют Автономный Узел ROS от Simulink® и следуют инструкциям, чтобы сгенерировать и развернуть узел ROS. Сделайте это дважды и назовите их 'robotcontroller' и 'robotcontroller2'. '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'
     AvailableNodes: {0×1 cell}

d.CatkinWorkspace = '~/catkin_ws_test'
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_66434 with NodeURI http://192.168.203.1:59395/

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

d.AvailableNodes
ans = 1×2 cell
    {'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
Shutting down global node /matlab_global_node_66434 with NodeURI http://192.168.203.1:59395/
stopCore(d)
Введенный в R2019b