Setup ROS subscriber in Matlab

8 次查看(过去 30 天)
Dear all,
I am trying to subscribe to a ROS /topic in Matlab and I am running out of ideas, what could cause my errors. On my remote machine with Ubuntu 20.4 and ROS Noetic, I can confirm, that the topic is publishing (rostopic echo /topicname). Trying to use the same command in Matlab does not give any output.
In Matlab I run the following code:
pyenv('Version', '2.7')
rosIP = '192.168.2.18';
rosHOSTNAME = '192.168.2.18';
setenv('ROS_IP', rosIP);
setenv('ROS_HOSTNAME', rosHOSTNAME);
setenv('ROS_MASTER_URI',['http://192.168.2.18:11311/']);
Shutdown existing ROS server and connect to ROS server on Tinkerboard
rosshutdown;
rosinit('192.168.2.18')
Display all available ros nodes and its topics
rosnode list
rostopic list
temperatureSub = rossubscriber('/SOLO1_Temperature', 'std_msgs/Int32')
temperatureMsg = receive(temperatureSub,5)
I get the following error message:
Error using ros.Subscriber/receive (line 456)
The function did not receive any data and timed out.
Do I have to define a callback function first? Or could the error occur because of ROS Noetic? Afaik Matlab only supports ROS Melodic.
Thank you very much!

回答(1 个)

Cam Salzberger
Cam Salzberger 2022-2-7
Hello Tristan,
If the "receive" call is timing out, that is because it did not receive any data within the timeout period. First, check the obvious:
  • Are messages being sent on that specified topic continuously?
  • Are the messages being sent frequently enough that the timeout period would cover at least two messages?
  • Are you able to see messages being sent on that topic by running "rostopic echo" in another terminal on the machine sending the messages?
If it seems like messages are being published correctly, then the issue is the connection between the machines. First check that the topic is visible to MATLAB by doing "rostopic list" (before creating any subscribers or publishers in MATLAB). If you can see the topic with introspection, but not receive any messages on it, the issue is usually with the environment (usually ROS_IP) on the machine sending the messages. See here for a detailed answer.
-Cam

类别

Help CenterFile Exchange 中查找有关 ROS Network Connection and Exploration 的更多信息

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by