Simulink MultiArray message generation

asked 2016-04-27 03:40:58 -0600

updated 2016-04-29 03:59:18 -0600

How can I create a publisher that in Simulink (Matlab R2015A) that sends an array of floats? I should use the BlankMSG block with msg type: std_msgs/Float32MultiArray, a Publish block with the same msg type and my own topic name.

I don't know how to add the vector to the data field on the msg bus. I tired, with a Bus Assignment block where the data input is a constant vector, but I got an error:

The Bus input port of the Bus Assignment block 'SubscriberMotorStates/Bus Assignment' does not support an array of buses as a sub-element. image description

UPDATE

I tried in Matlab to send an array and did work by following the instructions.

chatpub = rospublisher('/chatter','std_msgs/Float64MultiArray');
msg = rosmessage(chatpub);
msg.Data = [1 2 3];
send(chatpub,msg);

So, I can also use in simulink this by implementing a function in an *.m file and use the Interpreted MATLAB function block.

I'm still curious how can I use the intended blocks for array message sending, because it might be better optimized. (I'm going to use in a real application)

edit retag flag offensive close merge delete