Выполните несколько узлов ROS на подключенном устройстве ROS. Узлы ROS могут быть сгенерированы с помощью моделей Simulink ® для выполнения различных задач в сети ROS. Эти узлы затем развертываются на устройстве ROS и могут запускаться независимо от Simulink ®.
Этот пример использует две различные модели Simulink, которые были развернуты в качестве узлов ROS. Смотрите Сгенерируйте автономный узел ROS из Simulink ® и следуйте инструкциям, чтобы сгенерировать и развернуть узел ROS. Сделайте это дважды и назовите их 'robotcontroller'
и 'robotcontroller2'
. The 'robotcontroller'
узел отправляет роботу команды скорости, чтобы переместить его в заданную точку. The '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 Core является ведущим, что позволяет запускать узлы ROS на устройстве ROS. Подключите MATLAB ® к мастеру ROS с помощью rosinit
. В данном примере порт установлен на 11311. rosinit
можно автоматически выбрать порт для вас, не задавая этот вход.
Initializing global node /matlab_global_node_66434 with NodeURI http://192.168.203.1:59395/
Проверьте доступные узлы ROS на подключенном устройстве ROS. Узлы, перечисленные в этом примере, были сгенерированы из моделей Simulink ® после процесса в примере Генерация автономного узла ROS из Simulink ®. Сгенерированы два отдельных узла, 'robotcontroller'
и 'robotcontroller2'
, которые имеют линейную скорость, установленную на 1 и 2 в модели соответственно.
ans = 1×2 cell
{'robotcontroller'} {'robotcontroller2'}
Запустите Robot Simulator с помощью ExampleHelperSimulinkRobotROS
. Этот симулятор автоматически соединяется с мастером ROS на устройстве ROS. Вы будете использовать этот симулятор, чтобы запустить узел ROS и управлять роботом.
Запустите узел ROS, задав имя узла. The 'robotcontroller'
узел командует роботом в определенное место ([-10 10]
). Подождите, чтобы увидеть привод робота.
Сбросьте Robot Simulator, чтобы сбросить положение робота. Также нажмите кнопку Сбросить симуляцию (Reset Simulation). Поскольку узел все еще работает, робот переходит назад в определенное место. Чтобы остановить отправку команд, остановите узел.
Запуск 'robotcontroller2'
узел. Эта модель управляет роботом с удвоенной линейной скоростью. Сбросьте положение робота. Подождите, чтобы увидеть привод робота. Вы должны увидеть более широкий поворот из-за увеличенной скорости.
Закройте симулятор. Остановите узел ROS. Отсоединитесь от сети ROS и остановите ядро ROS.
Shutting down global node /matlab_global_node_66434 with NodeURI http://192.168.203.1:59395/