Error in rosReadBinaryOccupancyGrid
1 回表示 (過去 30 日間)
古いコメントを表示
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?
0 件のコメント
採用された回答
Josh Chen
2023 年 9 月 30 日
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 rosReadBinaryOccupancyGrid to read occupancy grid
map = rosReadBinaryOccupancyGrid(msg);
% output occupancyMatrix
occupancyMatrix = map.occupancyMatrix;
y = occupancyMatrix(1:10,1:10);
end
Hope that helps,
Thanks,
Josh
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Specialized Messages についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!