Data from Simulink does not update ROS2 topic

7 ビュー (過去 30 日間)
Renzo
Renzo 2022 年 12 月 23 日
コメント済み: Renzo 2022 年 12 月 24 日
Hello. I am trying to send a message to a topic. My message seems to have the correct data when seen in simulink, but my ros2 topic is not getting updated with this data.
System:
Ubuntu 20.04
Matlab R2022b
ROS2 Humble
Here is my Simulink block:
I have two message files:
VPGWaypoints.msg
std_msgs/Header header
Waypoint[] wps
Waypoint.msg
float64 x
float64 y
float32 theta
float32 vref
Inside the matlab function - Assign:
What I am trying to do is write a new message of type VPGWaypoints and publish it to the topic /control/velocity_profile with a list of Waypoints messages. I do not know how to create a list/array of custom messages. The function assignArray is my attempt that doing so by modifying the field wps directly. As you can see in the first screenshot, the data is correctly getting updated. x=1.57 in the first element, y=1.57 in the second element. However, in my terminal, when I run ros2 topic echo /control/velocity_profile , all I see is an empty list :

採用された回答

Josh Chen
Josh Chen 2022 年 12 月 23 日
Hello Renzo,
When publishing messages with vector fields in Simulink, Simulink needs to know the length of valid data in those fields. This information is captured under "xxx_SL_Info.CurrentLength".
In your case, you can add the following line at the end of your MATLAB Function block:
msg.wps_SL_Info.CurrentLength = int32(2);
You may also find this page helpful - Work with ROS Messages in Simulink
Hope this helps,
Josh
  1 件のコメント
Renzo
Renzo 2022 年 12 月 24 日
Thank you! That solved it

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeROS Network Access in Simulink についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by