Azzera filtri
Azzera filtri

Error in rosReadBin​aryOccupan​cyGrid

2 visualizzazioni (ultimi 30 giorni)
SEUNGSHIN
SEUNGSHIN il 29 Set 2023
Risposto: Josh Chen il 30 Set 2023
Hello I'm trying to subscribe /map topic from ROS and make occupancy map in simulink
So I use subscribe block in Simulink and connect msg to MATLAB function block.
the code of MATLAB function block is below
function fcn(u)
map = rosReadBinaryOccupancyGrid(u);
show(map)
end
But there is an error
This structure does not have a field 'MessageType'. Function 'rosReadBinaryOccupancyGrid.m'(#222.2006.2009)
Is there any solution or another way to plot occupancy map in simulink?

Risposta accettata

Josh Chen
Josh Chen il 30 Set 2023
Hi SEUNGSHIN,
Thanks for bringing this use case to our attention. As for now, there is no Simulink block for reading binary occupancy grid. We will consider to provide this functionality in a future release.
Meanwhile, as a workaround, you can use a combination of "MATLAB Function" and "Video Viewer" block to plot occupancy map in Simulink.
Here is the script in MATLAB function block for your reference:
function y = fcn(u)
% Specify the expected dimension of the occupancyMatrix
y = zeros(10,10,'logical');
dataLen = u.Data_SL_Info.CurrentLength;
if dataLen>0
% Create MATLAB message
msg = rosmessage("nav_msgs/OccupancyGrid","DataFormat","struct");
% Assign message fields based on input Simulink message bus
msg.Info.Height = u.Info.Height;
msg.Info.Width = u.Info.Width;
msg.Info.Resolution = u.Info.Resolution;
msg.Data = u.Data(1:dataLen);
% Use rosReadBin​aryOccupan​cyGrid to read occupancy grid
map = rosReadBinaryOccupancyGrid(msg);
% output occupancyMatrix
occupancyMatrix = map.occupancyMatrix;
y = occupancyMatrix(1:10,1:10);
end
Hope that helps,
Thanks,
Josh

Più risposte (0)

Prodotti


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by