cartographer-project / cartographer_ros

Provides ROS integration for Cartographer.
Apache License 2.0
1.62k stars 1.2k forks source link

New ROS 2 port of cartographer_ros - tracking issue #1536

Open MichaelGrupp opened 3 years ago

MichaelGrupp commented 3 years ago

We plan to make a new ROS 2 port of cartographer_ros that is in sync with master.

There is already a port of cartographer_ros that is based on tag 1.0.0 of cartographer_ros, but hasn't been synchronized anymore besides minor fixes. Now that cartographer is maintained again as a community-driven project, we decided together with the OSRF that a new ROS2 port should be created here.

The rough plan so far:

Note: As this is currently just a rough plan, we will probably need to spawn new issues for refining some of the work packages (as "ros2" labeled issues).


This issue aims to provide an entry point for people who are interested to contribute, ideally with experience in ROS2 and Cartographer. Feel free to comment here.

3473f commented 3 years ago

Would definitely love to get involved as I have been getting my hands dirty with the source code recently. Any leads on where to start would be appreciated.

Serafadam commented 3 years ago

Hi, I'd also like to help, for starters, I am currently using Cartographer in one of my projects, from the ros2 repository. If I want to move to ROS2 Foxy, I'll also need to upgrade rplidar repository to this distro. As for creating this version, will there be some kind of release? I'd rather not start working before some huge feature gets added. As for the way of working, I think the best would be to branch off the latest commit here, and base work on https://github.com/cartographer-project/cartographer_ros/pull/1488.

How does that sound?

MichaelGrupp commented 3 years ago

Hi @3473f and @Serafadam, thanks for joining the discussion! I have just updated the description with more details that we discussed this week in a maintainers meeting. Would be great if you can have a look and let us know what you think and if this is something you would like to contribute to.


As for creating this version, will there be some kind of release?

Yes, that's the goal. To have a new release and then in the future also more frequent releases.

As for the way of working, I think the best would be to branch off the latest commit here, and base work on #1488.

I also think so, as I wrote now in the description.

3473f commented 3 years ago

Hi @MichaelGrupp, sorry for the late reply! that definitely sounds interesting. I have a lot of my plate in the next two weeks, after which I can start contributing regularly to this port.

Create a new branch from master and apply similar changes like the ones that were added in the original ROS2 port.

I'd rather follow this approach as well. The only case I'd find starting from the current ROS2 port useful is if it was a few commits behind, but it seems that Cartographer has changed a lot since then.

airballking commented 3 years ago

@MichaelGrupp Great initiative! My team has good experience using Cartographer and wants to switch our current robot system from ROS1 to ROS2. Right now, Cartographer is the only dependency that is blocking this migration. So, we are willing to help. Let us know how we can contribute!

MichaelGrupp commented 3 years ago

Hi, to give you an update: I actually started doing some things myself already:

I started it this way because this repo actually includes 3 ROS packages cartographer_{ros, ros_msgs, rviz} and the message package is needed for the others (and also rather easy to port).

Once these are merged (I plan to follow up in the next days), we can go on with porting the cartographer_ros package, which is the biggest one. Here it would be awesome if someone of you could do the deep-dive into to the code, I probably won't have so much time for this in the next weeks.

What do you think? Feel free to comment also on the open current pull requests of course.

airballking commented 3 years ago

@MichaelGrupp Sounds like a reasonable plan. Regarding deep-dive into cartographer_ros, do you already have an overview which nodes/scripts can be ported on their own? Those could end-up being individual items in a check-list and separate PRs. With such a list, it could be easier to commit to taking on individual items.

MichaelGrupp commented 3 years ago

@airballking I like this idea. I opened an extra issue for this because it maybe goes a bit too much into detail for this tracking issue: https://github.com/cartographer-project/cartographer_ros/issues/1557

handmat78 commented 3 years ago

If you need IMU data ROS2 driver, SBG Systems has developed one: available on the repo

doisyg commented 3 years ago
* Create a new branch from `master` and apply similar changes like the ones that were added in the original ROS2 port.

This is the strategy that I applied here: https://github.com/cartographer-project/cartographer_ros/pull/1622 I believe most of the work is done. Still needs extensive testing, parameter check, performance review and complementary features to be converted (rviz!)

doisyg commented 2 years ago

Rviz is now supported in ros2 galactic in our PR https://github.com/cartographer-project/cartographer_ros/pull/1622 . Any suggestions on how to move forward with a proper ros2 galactic release ? Current ros2 bin release is from a very old version of both the library and the wrapper (with only cartographer_node working). We are planning to discuss and add lifecycle support next.

iLanceS commented 1 year ago

Is there a planning for Port it to Humble Hawksbill ? @doisyg

doisyg commented 1 year ago

Yes, it was released to Rolling and Humble a couple of months ago already. See https://discourse.ros.org/t/rolling-and-soon-humble-release-of-both-cartographer-and-cartographer-ros-v2-and-call-for-testing/25137 and https://www.linkedin.com/posts/guillaume-doisy-b707362b_super-happy-to-finally-see-cartographer-fully-activity-6924372671514247169-UK7L?utm_source=share&utm_medium=member_desktop