-
Notifications
You must be signed in to change notification settings - Fork 252
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use QoS for subscription, recording, and playback #125
Comments
This sounds rather severe. Should this be added to the Dashing patch release 1 project? |
I've got some sensor data that I want to record while testing robot localization, and I'm running into this. My workaround for is to replace I would think the correct fix for this is mirroring the QoS options of the topic you're recording. Are those options accessible? |
This seems like part of a general problem in rosbag2 due to QoS mismatches. Is there an intent to eventually replicate a mechanism like ROS1's bagging of latched, where the bag records a topic's QoS settings and then replicates them on playback? |
I'm running into this issue when trying to record the /scan topic. Any ETA on a fix? |
Sorry y'all for having this issue open for so long unattended. I just haven't gotten my head around to allocate some time for it. I see three possibilities to proceed here:
I am a bit puzzled whether to get started with option 1 or 2 for then just to remove that feature later on once option 3 is completed. |
It looks like the umbrella of PRs related to ros2/ros2cli#385 are implementing QoS discovery. I'm okay waiting for these to come in and then implementing option 3. I think there is probably a 'correct' answer for other QoS settings besides reliability, e.g. I want my rosbag subscriber history to be large enough that I don't drop messages out the back. Which means there isn't a compelling reason to make depth a per-topic parameter, so I don't see a need to implement option 2 for other QoS parameters. |
I'm happy with option 1 unless option 3 will be ready for merge soon. I kind of doubt that however as 5 PRs have to merge. I didn't go through them though, so not sure how much work is needed there. In any case I have a work-around (I think) for my issue not using rosbag. |
I just noticed that there is already some command line support in
I don't know if that would be easier to add support for in rosbag2 than what was suggested in option 1 above, just thought it might help. |
I think the auto-discovery work (as per the PRs on ros2/rmw#151) will provide the most meaningful solution to this issue, since we don't want to have to know all the QoS in order to |
#26) * Rule-of-Zero on DataProcessorInterface * Added runtime-selectable QoS support to allow for recording sensor data via rosbag2 in Eloquent. Apparently, as of this writing, rosbag2 cannot record topic data whose QoS has a reliability level of anything but `RELIABLE`. See: ros2/rosbag2#125. The `rmw_qos_profile_sensor_data` (which we are using in this project *a priori*) employs `BEST_EFFORT` reliability. I've added a new parameter `use_system_default_qos_for_sensor_data` to the node and parameter file. By default this is set to `False` which maintains the original behavior of this package. However, if set to `True`, rather than `rmw_qos_profile_sensor_data` we use ``rmw_qos_profile_default` as our QoS profile for the sensor topics. This (supposedly) most closely mimics ROS (classic) behavior but more importantly, allows rosbag2 to record data from these topics. Hopefully this issue with rosbag2 gets addressed by Foxy and we can deprecate this feature. But for now, not having the ability to record data for offline analysis is very limiting and we need something like this in this driver package. * Style fix * more style fixes * Resolved comments from Steve on PR #26 * Lowered log level from WARN to INFO when using system defaults QoS
@Karsten1987 I need to serialize |
would This is certainly up for discussion and of no high priority to get things going, but I could also see that implementation of |
and It seems like it's best to implement as a yaml-cpp
The string can be read A nicer solution might look like this:
|
EDIT: Put the work tracking in the issue description for more visibility |
Feature Request
Original issue report:
as the title says. When publishing topics with unreliable qos, the bag does not record any data on this topic as it expects a reliable connection - meaning all subscribers are spawned as reliable.
Work tracking
Tracking in-progress to-do list here
QoS storage in metadata
Testing robustness
Record with correct QoS
Playback with correct QoS
Explicit profile overrides
The text was updated successfully, but these errors were encountered: