Остановите узел 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 ® после процесса в примере Запуск with 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'
. The 'robotcontroller'
узел отправляет роботу команды скорости, чтобы переместить его в заданную точку. The '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 Core является ведущим, что позволяет запускать узлы 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'}
Запустите Robot Simulator с помощью ExampleHelperSimulinkRobotROS
. Этот симулятор автоматически соединяется с мастером ROS на устройстве ROS. Вы будете использовать этот симулятор, чтобы запустить узел ROS и управлять роботом.
sim = ExampleHelperSimulinkRobotROS;
Запустите узел ROS, задав имя узла. The 'robotcontroller'
узел командует роботом в определенное место ([-10 10]
). Подождите, чтобы увидеть привод робота.
runNode(d,'robotcontroller')
pause(10)
Сбросьте Robot Simulator, чтобы сбросить положение робота. Также нажмите кнопку Сбросить симуляцию (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)
device
- ROS или ROS2 устройствоrosdevice
| объекта ros2device
объектУстройство ROS или ROS 2, заданное как rosdevice
или ros2device
объект, соответственно.
modelName
- Имя развернутой модели SimulinkИмя развернутой модели Simulink, заданное как вектор символов. Если имя модели недопустимо, функция возвращается немедленно.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.