ROS 2 Collaboration Bulletin Board

Are you working on adding or porting a feature to ROS 2?

Let everyone know by posting here!

Are you interested in working on a missing package or feature in ROS 2, but you’re unsure if anyone is already working on it?

Ask here!


Please read the rules below before posting to this thread!

Thanks!


What is this thread for?

This thread is meant to be a place where people can announce what they’re working on so that people working on ROS 2 related things can find one another.

We’ve seen that different groups who are experimenting with ROS 2 are duplicating work and don’t know about one another, so hopefully this thread will be useful for discovery within the community.

Hopefully it will also be useful for people to find out what others have already done and where development is focused at the moment.


Rules

I’d like to try and keep some ground rules for this thread to keep it succinct and browsable. We’ll see how it works out and adjust if necessary.

  • Try to only post once per project/effort, and link to a another discourse post or GitHub issue to continue in depth discussions
    • Update the first post (rather than post new comments with updates) if you want to keep current details there
  • Feel free to express interest in a topic or in porting a ROS 1 feature/package or to ask if anyone else is already working on it, but try to keep the back and forth short, preferring to split off into a separate Discourse thread or GitHub issue once you’ve connected with one another.
  • Try to avoid long discussions about unifying overlapping efforts, preferring to create a new discourse thread instead, linking to it from this thread.
  • Before asking if a feature is in ROS 2, check the announcements, Roadmap, and Documentation first. You should not use this thread for a casual “does ROS 2 do X yet?”. Only post here if you’re pretty sure it’s not in ROS 2 yet, but you’re interested in helping make it happen and looking for peers to work with.

Hopefully these rules will keep this more of an announcement bulletin board like thing, rather than pages on pages of memoranda.

I’ll probably be moderating (removing comments, sticky-ing things if I can, and/or updating this top post) to help keep it easy to consume.

Thanks!

7 Likes

I’m working on rviz for ROS 2 by refactoring rviz from ROS 1 into parts and replacing ROS 1 specific parts only with ROS 2 ones. Here’s my plan:

I know some other people have already been working on this, so if you are let me know and hopefully we can work together on it!

2 Likes

I have been working on porting many packages which I will organize into various groups. All of the following packages are linked with more detail here. Some of the packages were ported merely to a compiling state and have not been properly tested.

As recommended by @allenh1 and OSRF, I plan to submit upstream PRs for each of these packages in the coming days.

Sensor packages:

SLAM packages:

I am in process of combining my own changes with those of @allenh1 so these link to the (soon to be) combined repos.

rqt (and other) packages:

I was looking to see the level of difficulty of getting rqt tools working and ported all the packages necessary to get rqt_dep to an initial working state.

I’ve also been porting rviz. My approach is not as thoughtful as @wjwwood’s approach: I removed all plugins and am adding them back in one at a time. So far I have: tf, map, and laser scan to some level of functionality.

One of my main motivation in doing this was to avoid needing to publish OccupancyGrid’s through the ros1_bridge.

5 Likes

How well has actionlib been ported? I’m interested on working on that, but in a more improving-not-just-porting way. Specifically, I want to make actions a first-class citizen (like messages and services) and write up a REP that specifies how they should be defined and used, so that tools can be more certain about what they are dealing with. It would be great to have an “official” rosaction tool, for example, and to not see 5 topics when I list the currently in use topics.

It’s on the near term roadmap, but we haven’t started it yet.

We will likely release an overview (maybe as detailed as a design document?) in the near future describing how we expect actions to look like in ROS2. Regarding a rosaction tool (for ROS1), there is an actionlib ticket discussing what the feature set of such a tool would be. We could use the ideas in that ticket as a base for a ros2 action tool in the future. Feel free to pitch ideas there!

Do you have a draft of that overview available yet? If not, would you like me to start working on one?

I think if all the guys work on ROS2 github, everyone can contribute to the community and easy to know the progress and synchronize the patch. If everyone fork one branch to develop , someone don’t know this web page. It will result in many duplicated work.
Contributing to ROS 2 github, it would also make developer feel the ROS2 community very active and open.
All the above , just my suggesiton:slight_smile:

We try to keep things on the ros2 github repository (at least for now), but not everyone has the permissions to create things there, and not everything belongs there. Since all administration of the organization has to go through the owners of the org, sometimes it is easier and more appropriate to have them on a different organization.

I consider this an alternative way to notify people of what your working on, not mutually exclusive with pushing things to the ros2 org.

This is great. How close is this to us being able to bag and playback data without needing the bridge anymore?

I haven’t done any work on rosbag or playback, so that is entirely unimplemented and not working.

As for not using the bridge, you can run rviz using ROS 2 and make use of several of the plugins to avoid having to pass data through the bridge. Some of the interesting working plugins are: tf, laser scan, map, and robot model. Others (odom, path, point) may work but I have not tested them.

Note that to use the robot model plugin it requires a change to the robot state publisher to publish the robot model (see this branch). I just created a PR for these changes.

You said you got tf working to some level of functionality. We have been running into issues when querying for transforms with lookupTransform. We query for a transform at a given time, and we always get a transform back that does not match the time stamp that was asked for. It is anywhere from a few milliseconds behind to 4 seconds ahead of the timestamp that was asked for. The error actually cycles through from being a bit behind to far in the future. Did you run into this when you were getting tf to work? I would give more detail (code, etc.) but did not think this thread was the right place. We can continue this discussion elsewhere if you have any thoughts that could help.

@vsherrod If you can reproduce it and believe that it’s a bug please open a ticket and we can dig into it there. https://github.com/ros2/geometry2

Edit: Actually you’re ahead of me, I see the ticket at https://github.com/ros2/geometry2/issues/38

What is the status of this work? Did you submit this PR? I am mostly interested in diagnostics.

Haven’t had time to work on any of this recently. @karsten created a PR a couple weeks back to update diagnostic updater to work with ros2 ardent (and updated the urg packages as well). The other diagnostic packages have not yet been updated.

I just created this PR to make the ros2 changes more visible and eventually get them merged into a single repo.

Hope this answers your question.

2 Likes

Hi,

I have been working on ROS2 nodes for the Raspberry Pi camera (a.k.a. raspicam) and the AprilTag detector. Both are implemented as components and are therefore composable for intraprocess communication.

I am open for all contributions and also don’t mind if the packages get moved to official ros2 groups like ros2-drivers or ros2-perception.

Raspberry Pi Camera (raspicam2)

This is a port of the original raspicam_node from ROS1.

AprilTag2 detector (apriltag2_node)

The implementation uses the original apriltag2 library from https://april.eecs.umich.edu/software/apriltag.html. For integration with ament workspaces, I am using a CMake version of this library: https://github.com/christianrauch/apriltag2.

Given the camera parameters, apriltag2_node computes the pose of the marker in the camera frame. It also publishes the raw detections (including the quality of the detection for filtering) and therefore depends on apriltag_msgs definitions from https://github.com/christianrauch/apriltag_msgs.

Hi, I have already ported the ROS2 cv_bridge which is necessary for ROS2 image processing in the perception applications with OpenCV, and I am trying to upstream it to hopefully benefit more ROS2 users, please let me know if you find any problems, thanks !

Here is some update to the ros2 cv_bridge, now ros2_cv_bridge has been officially upstream to the original ros-perception vision_opencv with a dedicated ros2 branch, please submit/fix issues there when you find to make it benefit more community users from now on, thanks a lot !

Hi,
Can anyone update me regarding the porting of message_filters to ros 2 environment ? I will be happy to take up this task.

Actually, we have been porting the message_filters to ROS2, however, you know, it has some dependency to C++ Boost in ROS. now it works except for keeping its Boost dependency in ROS2, next to clean its dependency of Boost with the way in C++11/14, I think it’s good if you would like to help, maybe @jwang11 can update you for more details.

1 Like