RosLibRust / roslibrust

An async first rust client for ROS1 native and rosbridge.
https://docs.rs/roslibrust
MIT License
50 stars 6 forks source link

Fixed code generation to include fully expanded message definition #174

Closed Carter12s closed 4 months ago

Carter12s commented 4 months ago

Description

Previously our message_definition provided by Publishers did not include the fully expanded definition. This works fine for most cases, but PlotJuggler was fully parsing the definition for dynamic interaction. This should get our message_definition to be accepted by PlotJuggler.

Fixes

Closes: #173

Checklist

lucasw commented 4 months ago

With this rostopic pub:

rostopic pub /point geometry_msgs/PointStamped "{point: {x: 1.0}}"

I see this from repr(msg._connection_header["message_definition"]) in a PointStamped:

"# This represents a Point with reference coordinate frame and timestamp\nHeader header\nPoint point\n\n================================================================================\nMSG: std_msgs/Header\n# Standard metadata for higher-level stamped data types.\n# This is generally used to communicate timestamped data \n# in a particular coordinate frame.\n# \n# sequence ID: consecutively increasing ID \nuint32 seq\n#Two-integer timestamp that is expressed as:\n# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')\n# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')\n# time-handling sugar is provided by the client library\ntime stamp\n#Frame this data is associated with\nstring frame_id\n\n================================================================================\nMSG: geometry_msgs/Point\n# This contains the position of a point in free space\nfloat64 x\nfloat64 y\nfloat64 z\n"

but from a roslibrust node using this branch (at 03d73ac6)) it's still not expanding the Header or Point fields:

'# This represents a Point with reference coordinate frame and timestamp\nHeader header\nPoint point'
Carter12s commented 4 months ago

Okay, was able to get to an actual dev environment today where I could directly test this. Found a bug in how I was collecting referenced types that was skipping a layer.

image