
How to publish image to ROS in Simulink
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
I use the function writeImage() in matlab function to write a MATLAB image to the ROS image message,but when I run the simulink model, an error appears: Undefined function or variable 'writeImage'. How to solve this problem? How to publish image to ROS in Simulink?
0 个评论
回答(1 个)
  JAI PRAKASH
      
 2018-11-4
        If your matlab image is 'RGB' matrix, you can use following matlab function block + Bus assignment block as shown in figure.
function [H, W, Enc, EncLength, IsBig, Step, Data, DataLength] = fcn(im)
  [H, W, n] = size(im);
  H =uint32(H); W =uint32(W);
  im = permute(im,[2 1 3]);
  Data1 = im(:);
  Data2 = reshape(Data1,[H*W,n])';
  Data = Data2(:);
  Enc = zeros(1,128, 'uint8');
  Enc(1:4) = uint8('rgb8'); %   uint8('rgb8')
  EncLength = uint32(4);
  IsBig = uint8(0);
  Step = uint32(W*n);
  DataLength = uint32(H*W*n);

See the attached simulink readymade block also to convert MAT image to ros image message.
3 个评论
  Syed Adil Ahmed
 2020-10-21
				For those interested you can fix the non matching size of the Data bus variable by changing array sizes in Simulink for ros. This option is under tools> ROS in simulink. 
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Publishers and Subscribers 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!