How to extract data from diagnostic​s_msgs/Dia​gnosticArr​ay ROS message type in Simulink?

9 views (last 30 days)
Dear Mathworks community, I need to extract data from diagnostics_msgs/DiagnosticArray ROS message type in my Simulink model. The message definition in ROS and Matlab matches and is the following :
std_msgs/Header header
uint32 seq
time stamp
string frame_id
diagnostic_msgs/DiagnosticStatus[] status
byte OK=0
byte WARN=1
byte ERROR=2
byte STALE=3
byte level
string name
string message
string hardware_id
diagnostic_msgs/KeyValue[] values
string key
string value
I am interested in the string value array inside the KeyValue[] values bus. In Simulink this element is detected as a bus element in an array of sub-buses. I have tried many combinations of Selector blocks and Bus Selector blocks but I havent been successful in extracting this data and exporting it to the Matlab workspace.So far I have tried the following :
Any help would be greatly appreciated! Thanks in advance.

Accepted Answer

MathWorks Robotics and Autonomous Systems Team
Hi Sorry for the delayed response.
I was able to create this, it is indeed a bit tricky with Simulink buses and able to extract the data.
>> msg =
ROS DiagnosticArray message with properties:
MessageType: 'diagnostic_msgs/DiagnosticArray'
Header: [1×1 Header]
Status: [16×1 DiagnosticStatus]
Please note the three images attached, (1) The Simulink model using "Selector" + "Bus Selector" blocks in tandem, (2) The Default array sizes for the variable sized buses which are defined in the Simulink > Tools > ROS > Manage array sizes for the model.
Robotics Team @ MathWorks
  1 Comment
MathWorks Robotics and Autonomous Systems Team
The link would take you to:</matlabcentral/answers/uploaded_files/128353/2018-08-09_12-12-11.png
Make sure to update them to:

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!