Simulink MultiArray message generation to ROS












1















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.




enter image description here



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)










share|improve this question

























  • have you tried to do it by hand in a matlab function instead of using the bus assignment block?

    – alextoind
    Apr 28 '16 at 17:32











  • I tried in MatLab and it works just following the instructions online. Edit in original post.

    – Elod
    Apr 29 '16 at 8:43











  • The problem is the Bus Assignment block. Just replace it with a MATLAB Function one which manually handles the wiring. It should be fine.

    – alextoind
    May 2 '16 at 7:49
















1















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.




enter image description here



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)










share|improve this question

























  • have you tried to do it by hand in a matlab function instead of using the bus assignment block?

    – alextoind
    Apr 28 '16 at 17:32











  • I tried in MatLab and it works just following the instructions online. Edit in original post.

    – Elod
    Apr 29 '16 at 8:43











  • The problem is the Bus Assignment block. Just replace it with a MATLAB Function one which manually handles the wiring. It should be fine.

    – alextoind
    May 2 '16 at 7:49














1












1








1








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.




enter image description here



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)










share|improve this question
















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.




enter image description here



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)







matlab message simulink ros






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 29 '16 at 8:51







Elod

















asked Apr 27 '16 at 8:45









ElodElod

307521




307521













  • have you tried to do it by hand in a matlab function instead of using the bus assignment block?

    – alextoind
    Apr 28 '16 at 17:32











  • I tried in MatLab and it works just following the instructions online. Edit in original post.

    – Elod
    Apr 29 '16 at 8:43











  • The problem is the Bus Assignment block. Just replace it with a MATLAB Function one which manually handles the wiring. It should be fine.

    – alextoind
    May 2 '16 at 7:49



















  • have you tried to do it by hand in a matlab function instead of using the bus assignment block?

    – alextoind
    Apr 28 '16 at 17:32











  • I tried in MatLab and it works just following the instructions online. Edit in original post.

    – Elod
    Apr 29 '16 at 8:43











  • The problem is the Bus Assignment block. Just replace it with a MATLAB Function one which manually handles the wiring. It should be fine.

    – alextoind
    May 2 '16 at 7:49

















have you tried to do it by hand in a matlab function instead of using the bus assignment block?

– alextoind
Apr 28 '16 at 17:32





have you tried to do it by hand in a matlab function instead of using the bus assignment block?

– alextoind
Apr 28 '16 at 17:32













I tried in MatLab and it works just following the instructions online. Edit in original post.

– Elod
Apr 29 '16 at 8:43





I tried in MatLab and it works just following the instructions online. Edit in original post.

– Elod
Apr 29 '16 at 8:43













The problem is the Bus Assignment block. Just replace it with a MATLAB Function one which manually handles the wiring. It should be fine.

– alextoind
May 2 '16 at 7:49





The problem is the Bus Assignment block. Just replace it with a MATLAB Function one which manually handles the wiring. It should be fine.

– alextoind
May 2 '16 at 7:49












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f36884678%2fsimulink-multiarray-message-generation-to-ros%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f36884678%2fsimulink-multiarray-message-generation-to-ros%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Contact image not getting when fetch all contact list from iPhone by CNContact

count number of partitions of a set with n elements into k subsets

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks