Параметры ROS в Simulink

Эти примеры показывают, как получить, установить, сравнивают и управляют параметрами ROS в Simulink®. Чтобы запустить эти примеры, необходимо сначала настроить сеть ROS с помощью rosinit. Чтобы установить настройки всей сети и стоимость акций с целой сетью, запустите сервер параметра ROS с помощью rosparam. Последуйте этим примерам, чтобы видеть, как работать с параметрами в Simulink, включая использование строковых параметров.

Доберитесь и установленные параметры ROS

Эта модель получает и устанавливает параметры ROS с помощью Simulink®. Этот пример иллюстрирует, как использовать параметры ROS в Simulink и осуществлять обмен данными по сети ROS. Целочисленное значение установлено в качестве параметра в сети ROS. Это целое число получено из сервера параметра и по сравнению с константой. Выходная булевская переменная от сравнения также установлена в сети. Измените постоянный блок левого верхнего (синего) цвета, когда вы запустите модель, чтобы установить сетевые параметры на основе условий ввода данных пользователем.

Вы должны быть соединены с сетью ROS. Вызовите rosinit в командной строке MATLAB®.

Установите строковый параметр в сети ROS

Чтобы создать ваш строковый параметр, используйте блок Constant и бросьте его к uint8 путем определения uint8(["my_string_parameter"]) в Постоянном значении маски блока. Строка передается в блок Set Parameter наряду с дополнительным входом, Длиной, заданной со вторым блоком Constant. Длина относится к максимальной ожидаемой длине строки и требуется для всех строковых параметров. Для получения дополнительной информации смотрите блок Set Parameter.

Сравните строковые параметры ROS

В сетях ROS параметры строк хранятся как uint8 массив. Когда вы добираетесь от строковых параметров с сервера, они возвращены как char массив. В Simulink® они сняты как uint8, таким образом, необходимо использовать uint8 векторы символов, когда по сравнению со строковыми параметрами ROS. Можно использовать это сравнение, чтобы инициировать подсистемы для больших моделей или подтвердить настройки для определенных алгоритмов.

Соединитесь с сетью ROS. Настройте дерево Параметра ROS.

rosinit
ptree = rosparam;
Initializing ROS master on http://bat6302glnxa64:38235/.
Initializing global node /matlab_global_node_41746 with NodeURI http://bat6302glnxa64:34645/

Установите параметр ROS, /camera_format, к значению строки. Можно использовать скаляры строки или векторы символов. Значение хранится как uint8 массив на сервере параметра ROS и возвратился как 'jpeg' в MATLAB®.

set(ptree,"/camera_format","jpeg")
pause(1)
pvalue = get(ptree,"/camera_format")
pvalue =

    'jpeg'

Запустите присоединенную модель Simulink®. Эти проверки модели, чтобы видеть, называют ли ранее установленный параметр формата камеры 'jpeg'. Чтобы получить параметр от сервера, используйте блок Get Parameter. Затем сравните параметр с броском вектора символов как uint8 от блока Constant, с помощью блока MATLAB function. Выход 1 среднего значения соответствие параметров.

open_system("rosStringParameterCompare")
sim("rosStringParameterCompare");

Сеть Shutdown ROS.

rosshutdown
Shutting down global node /matlab_global_node_41746 with NodeURI http://bat6302glnxa64:34645/
Shutting down ROS master on http://bat6302glnxa64:38235/.

stringCompare функция задана как:

function y = stringCompare(str1,str2)
%#codegen
minLength = min(length(str1),length(str2));
st1 = str1(1:minLength);
st2 = str2(1:minLength);
y = all(st1(:)==st2(:));

Проверяйте параметр кодирования изображений на сообщение ROS изображений

Эта модель показывает, как получить доступ к строковым параметрам и использовать их, чтобы инициировать операции подсистемы. Это получает формат изображения от набора сервер параметра ROS. Это получено как uint8 массив, который сравнен с помощью strcmp Блок MATLAB function. Когда новое изображение получено от блока Subscribe, и форматом является uint8('jpeg'), это инициировало блок "Process Image", чтобы выполнить задачу на данных изображения.

Соединитесь с сетью ROS и настройте сервер параметра ROS.

rosinit
ptree = rosparam;
Initializing ROS master on http://bat6317glnxa64:43357/.
Initializing global node /matlab_global_node_16843 with NodeURI http://bat6317glnxa64:38765/

Установите "/camera/rgb/image_raw/compressed/format" параметр, и настроенный издатель для "/camera/rgb/image_raw/compressed" тема.

set(ptree,"/camera/rgb/image_raw/compressed/format","jpeg")
pub = rospublisher("/camera/rgb/image_raw/compressed","sensor_msgs/CompressedImage");

Откройте модель Simulink®. Эта модель проверяет параметр формата изображения и сравнивает значение с uint8 бросьте вектор символов, uint8('jpeg') использование Функционального блока MATLAB®. Булев выход питается операцию И с IsNew выход блока Subscribe, который получает изображение от сети. Если значение параметров правильно, и новое сообщение получено, Подсистема "Изображение Процесса" инициирована.

Запустите модель и используйте кнопки в модели, чтобы изменить параметр формата изображения и проверить strcmp функция работает. eq выведите должен быть 1, когда параметр устанавливается на 'jpeg'. В то время как модель запускается, ожидается, что сообщения изображений публикуются в сети.

open_system("rosImageFormatParameter")

Закройте сеть ROS.

rosshutdown
Shutting down global node /matlab_global_node_16843 with NodeURI http://bat6317glnxa64:38765/
Shutting down ROS master on http://bat6317glnxa64:43357/.

strcmp функция в Функциональном блоке MATLAB® задана как:

function eq = strcmp(s1, n1, s2)
%#codegen
% Convert to proper strings
string1 = char(s1(1:n1));
string2 = char(s2);
eq = strcmp(string1, string2);

Смотрите также

|