Closed emersonknapp closed 2 years ago
@emersonknapp I tried running this branch against the latest ROS 2 code using the talker/listener. I'm getting the following error when trying to record:
michael@bluenote:~/src/maintenance/rqt_bag$ rqt_bag
[INFO] [1663284671.316031917] [rqt_bag.BagWidget]: Recording to /home/michael/bags/2022-09-15-16-31-04.
[INFO] [1663284671.333140073] [rosbag2_storage]: Opened database '/home/michael/bags/2022-09-15-16-31-04/2022-09-15-16-31-04_0.db3' for READ_WRITE.
Error opening bag for recording [/home/michael/bags/2022-09-15-16-31-04]: __init__(): incompatible constructor arguments. The following argument types are supported:
1. rosbag2_py._storage.BagMetadata(version: int, bag_size: int, storage_identifier: str, relative_file_paths: List[str], files: List[rosbag2_py._storage.FileInformation], duration: datetime.timedelta, starting_time: datetime.datetime, message_count: int, topics_with_message_count: List[rosbag2_py._storage.TopicInformation], compression_format: str, compression_mode: str)
Invoked with:
Seems to be an issue with the BagMetadata constructor. Any ideas what could be going on?
Oops, bad FileInformation in the BagMetadata pybind code. I need to add some python side tests to that branch before merging it!
EDIT: actually that's not it, i'll have to look into it, i haven't tested this side since the latest updates over there
Ah - I used a default constructor for BagMetadata()
for recording here, but it isn't actually defined, all arguments were required. I just pushed a new commit to the rosbag2 branch that provides this, so you should be able to pull and run now.
I'm probably not going to get to the tests until Tuesday, but that's the next step to merge that and get to this. Then https://github.com/ros2/rosbag2/pull/1083/files, once complete, fully enables the rosbag2_py all the way story
Great. Glad to see this move to the legit interface.
@emersonknapp I still see BagMetadata using the default constructor.
Yes - it is now a real constructor as of the latest on that branch, the rosbag2_py side got updated for usability
Ah, OK. I'll update my source code and give it a try.
Gist: https://gist.githubusercontent.com/emersonknapp/1b625fa82c71544f5b66549721b7e0cf/raw/366735edcad491ddcc7cf962e401573867fd3530/ros2.repos BUILD args: --packages-above-and-dependencies rqt_bag TEST args: --packages-above rqt_bag ROS Distro: rolling Job: ci_launcher ci_launcher ran: https://ci.ros2.org/job/ci_launcher/10962
@ivanpauno @mjeronimo The upstream functionality is now merged, and this feels in good shape based on my testing. Any opinions on the latest version? Note: to try it out, it will need to be built against latest rosbag2 rolling sources, as it uses new features
@emersonknapp I'm getting the following when running this code against the latest ROS2 code:
I think this is already true with the master version, unless I'm mistaken! I made a new issue for it at https://github.com/ros-visualization/rqt_bag/issues/127 . I think it has something to do with the shutdown signaling not going through (I always have to ctrl+/ because ctrl+C seems to hang).
But if this is only true given this PR I will figure it out. Can't check today, only at my phone
Ah, yes, I'm seeting it on master as well. I'm good with integrating.
@mjeronimo @ivanpauno it looks like this got force-pushed over, the commits are not present in any branch. Did this get merged to the wrong branch ros2
when it should have been merged to rolling
instead? I just found the mirroring rule, I guess that's what happened. If we're mirroring branches, why have the two at all?
@emersonknapp Looking at the revision history on the ros2 branch, I believe what happened is that one of the first projects I had when I joined Open Robotics was porting rqt_bag to ros2. At that time, it looks like I created a 'ros2' branch for this work, not realizing the significance of having both 'ros2' and 'rolling'. I may have been following other repos, as I see that at least rqt_graph also has both 'ros2' and 'rolling' branches (although I wasn't involved in that one).
My apologies for introducing this mistake and the rework that it has caused. Moving forward, it seems like to avoid confusion and issues like this, these repos should have only a single branch for the latest ros2 development. I'd like to get some other input here to see how we can get out of this situation.
@clalancette Any suggestions here?
:warning: The sha of the head commit of this PR conflicts with #133. Mergify cannot evaluate rules on this PR. :warning:
For what it is worth, we ended up in this situation in every single ROS 2 repository. This was the migration strategy we ended up with, in case any downstream users will still using the old branch names. I also don't love deleting old branches that were used for past releases, as that essentially deletes/rewrites history.
Further, the automation has no ability to force push to the old ros2
branch; I did that when doing the latest release, because I wasn't careful and I didn't realize something had been merged onto it.
My suggestion here is that we actually investigate whether we can protect the ros2
branch so that no new PRs can be made against it, but the automation can still write to it. That should solve most of the problem, I think.
I looked into options, and we could do the "Lock branch" option for ros2
- so that nothing can be written to it at all.
So that would cover "don't delete old branches" - but can you explain why the branch mirroring automation should exist? The ros2
branch was used for the Galactic release - which is now likely broken because the latest source is using newer Humble features. I see I'm not seeing any reason that ros2
branch should continue to evolve at all, locking it in place where it is now makes sense to me.
The
ros2
branch was used for the Galactic release - which is now likely broken because the latest source is using newer Humble features
Yes, this was a large part of the motivation to do the switch to rolling
in the first place; we had wildly diverging branching strategies on our repositories, so it was hard to figure out which branch belonged to what and what was safe to merge. I think it is much clearer now, though it hasn't been without a few hiccups (such as this one).
So that would cover "don't delete old branches" - but can you explain why the branch mirroring automation should exist?
The reason we added it is that there are downstream CI projects that don't actually use ros2.repos to get the branch to use; they just have some hard-coded branch names. We didn't want to silently break them by leaving them behind on a old commit, so we added this branch automation for all repositories.
That said, it has been 6 months so I think it is OK at this point to start removing the automation. Here's my suggestion for this case:
galactic
, branched off of the 1.1.2 tag (that matches what is released into Galactic currently).galactic
branch.galactic
branch.galactic
branch.ros2
branch.Does that seem reasonable?
Yes, that seems quite reasonable
Hello folks, are there plans to merge this change into "humble"?
Hello folks, are there plans to merge this change into "humble"?
No plans currently. The ReadOrder
API doesn't exist in humble, so if you'd like to attempt a backport you'll have to workaround that lack somehow. Otherwise we are happy to review a backport attempt.
Depends on ros2/rosbag2#1082 Depends on https://github.com/ros2/rosbag2/pull/1083 Closes #121
rosbag2_py
API to get metadata about a bag being read, instead of parsingmetadata.yaml
directly.SequentialReader
API with new ReadOrder feature, to do all message queries, removingsqlite3
usageRemoves hardcoded client knowledge, so that
rqt_bag
can open rosbag2 files with any supported storage backend.