How can I create a publisher that in Simulink (Matlab R2015A) that sends an array of floats as a ROS message (in ROS Indigo under Ubuntu 14.04)? 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 get 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.
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)
Bus Assignment
block. Just replace it with aMATLAB Function
one which manually handles the wiring. It should be fine. – Illusionism