Остановить узел ROS или ROS 2
stopNode( останавливает работающий узел ROS или ROS 2, который был развернут из модели Simulink ® с именемdevice,modelName)modelName. Узел запущен на указанном rosdevice или ros2device объект, device. Если узел не запущен, функция возвращается немедленно.
Подключитесь к удаленному устройству 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. Отключитесь от сети АФК. Остановите ядро АФК.
stopNode(d,'RobotController')
rosshutdownShutting 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. В этом примере порт имеет значение 11311. 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 и управления роботом.
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. Отсоедините от сети АФК и остановите ядро АФК.
close
stopNode(d,'robotcontroller2')
rosshutdownShutting down global node /matlab_global_node_66434 with NodeURI http://192.168.203.1:59395/
stopCore(d)
device - АФК или ROS2 устройствоrosdevice объект | ros2device объектУстройство АФК или АФК 2, указанное как rosdevice или ros2device объект, соответственно.
modelName - Имя развернутой модели SimulinkИмя развернутой модели Simulink, указанное как символьный вектор. Если имя модели недопустимо, функция возвращается немедленно.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.