Запустите несколько узлов ROS на соединенном устройстве ROS. Узлы ROS могут быть сгенерированы с помощью моделей Simulink®, чтобы выполнить различные задачи в сети ROS. Эти узлы затем развертываются на устройстве ROS и могут быть запущены независимо от Simulink®.
Этот пример использует две различных модели Simulink, которые были развернуты как узлы ROS. Смотрите Генерируют Автономный Узел ROS от Simulink® и следуют инструкциям, чтобы сгенерировать и развернуть узел ROS. Сделайте это дважды и назовите их 'robotcontroller'
и 'robotcontroller2'
. 'robotcontroller'
узел отправляет скоростные команды в робота, чтобы переместиться по нему к данной точке. 'robotcontroller2'
узел использует ту же модель, но удваивает линейную скорость, чтобы управлять роботом быстрее.
Создайте связь с устройством ROS. Задайте адрес, имя пользователя и пароль вашего определенного устройства ROS. Устройство содержит информацию об устройстве ROS, включая доступные узлы ROS, которые могут быть запущены с помощью runNode
.
d =
rosdevice with properties:
DeviceAddress: '192.168.203.129'
Username: 'user'
ROSFolder: '/opt/ros/indigo'
CatkinWorkspace: '~/catkin_ws'
AvailableNodes: {0×1 cell}
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
может автоматически выбрать порт для вас, не задавая этот вход.
Initializing global node /matlab_global_node_75689 with NodeURI http://192.168.203.1:58900/
Проверяйте доступные узлы ROS на соединенном устройстве ROS. Узлы, перечисленные в этом примере, были сгенерированы из моделей Simulink® после процесса в Том, чтобы генерировать Автономный Узел ROS из примера Simulink®. Два отдельных узла сгенерированы, 'robotcontroller'
и 'robotcontroller2'
, которым установили линейную скорость на 1 и 2 в модели соответственно.
ans = 1×2 cell array
{'robotcontroller'} {'robotcontroller2'}
Запустите средство моделирования робота с помощью ExampleHelperSimulinkRobotROS
. Это средство моделирования автоматически соединяется с ведущим устройством ROS на устройстве ROS. Вы будете использовать это средство моделирования, чтобы запустить узел ROS и управлять роботом.
Запустите узел ROS, задав имя узла. 'robotcontroller'
узел управляет роботом к определенному местоположению ([-10 10]
). Ожидайте, чтобы видеть диск робота.
Сбросьте средство моделирования робота, чтобы сбросить положение робота. В качестве альтернативы нажмите Reset Simulation. Поскольку узел все еще запускается, робот продолжается назад к определенному местоположению. Чтобы прекратить отправлять команды, остановите узел.
Запустите 'robotcontroller2'
узел. Эта модель управляет роботом с дважды линейной скоростью. Сбросьте положение робота. Ожидайте, чтобы видеть диск робота. Необходимо видеть более широкий поворот из-за увеличенной скорости.
Закройте средство моделирования. Остановите узел ROS. Отключитесь от сети ROS и остановите ядро ROS.
Shutting down global node /matlab_global_node_75689 with NodeURI http://192.168.203.1:58900/