ros cartographer 3D mapping

1,915 views
Skip to first unread message

Jochem Verboom

unread,
Feb 2, 2017, 9:59:13 AM2/2/17
to google-cartographer
Hi,

Thanks for all the work. I am currently unsure about the general output of the 3D mapping framework? For navigation purposes I want to build up an octomap, at the moment I use the topic ("/scan_matched_points2") to build up my octomap. Is there any other way, I can build up the octomap? It appears to produce a good representation of the environment.

Kind regards,

Jochem

Holger Rapp

unread,
Feb 2, 2017, 10:05:57 AM2/2/17
to Jochem Verboom, google-cartographer
> ​
Thanks for all the work. I am currently unsure about the general output of the 3D mapping framework? 

The core output is a trajectory in form of a protobuf. Since we throw most sensor data away at SLAM time, this is not really a suitable time to generate assets (like your octomap). Instead, once you have the trajectory, you can replay the sensor data again and pose it precisely using the trajectory in a streaming fashion.

In summary: 
​I would use cartographer_ros to build your map, save the trajectory using rosservice call /finish_trajectory foo and then run it through the assets_writer_main to get to the 3D points. There is no PointsProcessor that generates octomaps, but that should be simple to add.

> For navigation purposes I want to build up an octomap, at the moment I use the topic ("/scan_matched_points2") to build up my octomap. Is there any other way, I can build up the octomap? It appears to produce a good representation of the environment.

The scan_matched_points2 is the strongly downsampled points cartographer is actually using for scan matching. It is a coarse representation of your environment and might be sufficient for your octomap. Loop closing might make your map inconsistent though (since parts of the map jump). The approach above should be superior then.


--
You received this message because you are subscribed to the Google Groups "google-cartographer" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-cartographer+unsub...@googlegroups.com.
To post to this group, send email to google-cartographer@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-cartographer/ce7beaf2-854e-4d2f-9cef-e1c18ec29683%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Google Germany GmbH
Erika-Mann-Straße 33
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle


Bo

unread,
Mar 14, 2017, 10:59:44 AM3/14/17
to google-cartographer, jlve...@gmail.com
Hi,

First of all, great software and thanks for making it!

I'm currently simulating my robot in Gazebo. It has an IMU and a VPL-16 Puck. Like Jochem, I'm also subscribing to the "/scan_matched_points2" to generate an Octomap using the octomap_server_node.

I don't really understand your recommendation on how to do it in a better way:
"​I would use cartographer_ros to build your map, save the trajectory using rosservice call /finish_trajectory foo and then run it through the assets_writer_main to get to the 3D points. There is no PointsProcessor that generates octomaps, but that should be simple to add."
  1. What is the "assets_writer_main" and how do I use it?
  2. Where and How do I add the PointsProcessor?
Thanks a lot for your help!

Regards,
Bo


On Thursday, February 2, 2017 at 4:05:57 PM UTC+1, Holger Rapp wrote:
> ​
Thanks for all the work. I am currently unsure about the general output of the 3D mapping framework? 

The core output is a trajectory in form of a protobuf. Since we throw most sensor data away at SLAM time, this is not really a suitable time to generate assets (like your octomap). Instead, once you have the trajectory, you can replay the sensor data again and pose it precisely using the trajectory in a streaming fashion.

In summary: 
​I would use cartographer_ros to build your map, save the trajectory using rosservice call /finish_trajectory foo and then run it through the assets_writer_main to get to the 3D points. There is no PointsProcessor that generates octomaps, but that should be simple to add.

> For navigation purposes I want to build up an octomap, at the moment I use the topic ("/scan_matched_points2") to build up my octomap. Is there any other way, I can build up the octomap? It appears to produce a good representation of the environment.

The scan_matched_points2 is the strongly downsampled points cartographer is actually using for scan matching. It is a coarse representation of your environment and might be sufficient for your octomap. Loop closing might make your map inconsistent though (since parts of the map jump). The approach above should be superior then.

On Thu, Feb 2, 2017 at 3:59 PM, Jochem Verboom <jlve...@gmail.com> wrote:
Hi,

Thanks for all the work. I am currently unsure about the general output of the 3D mapping framework? For navigation purposes I want to build up an octomap, at the moment I use the topic ("/scan_matched_points2") to build up my octomap. Is there any other way, I can build up the octomap? It appears to produce a good representation of the environment.

Kind regards,

Jochem

--
You received this message because you are subscribed to the Google Groups "google-cartographer" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-cartographer+unsub...@googlegroups.com.
To post to this group, send email to google-ca...@googlegroups.com.

Bo

unread,
Mar 14, 2017, 5:09:44 PM3/14/17
to google-cartographer, jlve...@gmail.com
Hi,

I managed to create the 3D point cloud file, however I can't get the point_cloud_viewer running to view it. I've filed an issue here:
https://github.com/googlecartographer/point_cloud_viewer/issues/18

Regards,
Bo

Holger Rapp

unread,
Mar 15, 2017, 5:43:11 AM3/15/17
to Bo, google-cartographer, Jochem Verboom
On Tue, Mar 14, 2017 at 10:09 PM, Bo <b...@cleansquare.de> wrote:
Hi,

I managed to create the 3D point cloud file, however I can't get the point_cloud_viewer running to view it. I've filed an issue here:
https://github.com/googlecartographer/point_cloud_viewer/issues/18

​I commented there. Probably it is all working, the loader is just lazy and does no work until the first movement.


Regards,
Bo


On Tuesday, March 14, 2017 at 3:59:44 PM UTC+1, Bo wrote:
Hi,

First of all, great software and thanks for making it!

I'm currently simulating my robot in Gazebo. It has an IMU and a VPL-16 Puck. Like Jochem, I'm also subscribing to the "/scan_matched_points2" to generate an Octomap using the octomap_server_node.
​​
​I think this is suboptimal, since these are the points used for SLAMing and SLAM throws away most points to save on processing. You probably want all data ever seen in your octomap.
​​

I don't really understand your recommendation on how to do it in a better way:
"​I would use cartographer_ros to build your map, save the trajectory using rosservice call /finish_trajectory foo and then run it through the assets_writer_main to get to the 3D points. There is no PointsProcessor that generates octomaps, but that should be simple to add."
  1. What is the "assets_writer_main" and how do I use it?
​Sounds like you figured that out.​
  1. Where and How do I add the PointsProcessor?
​Since octomap is a ROS thing (I think?), you probably should add it in cartographer_ros. Just subclass the PointsProcessor from Cartographer ​and register it with the PointsProcessorPipelineBuilder and then you can make use of it in your Lua configuration files.

​​
Thanks a lot for your help!

Regards,
Bo

On Thursday, February 2, 2017 at 4:05:57 PM UTC+1, Holger Rapp wrote:
> ​
Thanks for all the work. I am currently unsure about the general output of the 3D mapping framework? 

The core output is a trajectory in form of a protobuf. Since we throw most sensor data away at SLAM time, this is not really a suitable time to generate assets (like your octomap). Instead, once you have the trajectory, you can replay the sensor data again and pose it precisely using the trajectory in a streaming fashion.

In summary: 
​I would use cartographer_ros to build your map, save the trajectory using rosservice call /finish_trajectory foo and then run it through the assets_writer_main to get to the 3D points. There is no PointsProcessor that generates octomaps, but that should be simple to add.

> For navigation purposes I want to build up an octomap, at the moment I use the topic ("/scan_matched_points2") to build up my octomap. Is there any other way, I can build up the octomap? It appears to produce a good representation of the environment.

The scan_matched_points2 is the strongly downsampled points cartographer is actually using for scan matching. It is a coarse representation of your environment and might be sufficient for your octomap. Loop closing might make your map inconsistent though (since parts of the map jump). The approach above should be superior then.

On Thu, Feb 2, 2017 at 3:59 PM, Jochem Verboom <jlve...@gmail.com> wrote:
Hi,

Thanks for all the work. I am currently unsure about the general output of the 3D mapping framework? For navigation purposes I want to build up an octomap, at the moment I use the topic ("/scan_matched_points2") to build up my octomap. Is there any other way, I can build up the octomap? It appears to produce a good representation of the environment.

Kind regards,

Jochem

--
You received this message because you are subscribed to the Google Groups "google-cartographer" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-cartographer+unsubscribe...@googlegroups.com.
Google Germany GmbH
Erika-Mann-Straße 33
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle


--
You received this message because you are subscribed to the Google Groups "google-cartographer" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-cartographer+unsub...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

wenw...@gmail.com

unread,
May 8, 2017, 9:15:22 AM5/8/17
to google-cartographer
Hi, Jochem, have you succeed in using humanoid_localization to localize in an octomap? I also working on it, using humanoid_localization node to localize in an octomap created by cartographer(Velodyne 64,IMU, Odometry). but I find some problems in using the humanoid_localization node here https://github.com/ahornung/humanoid_navigation/issues/18

Thanks !

在 2017年2月2日星期四 UTC+8下午10:59:13,Jochem Verboom写道:

Sai Manoj Prakhya

unread,
Jul 17, 2017, 4:26:42 AM7/17/17
to google-cartographer
Hi Wen,

Were you able to localize in a 3D Map ? Which method worked for you ?

Thanks,
Sai
Reply all
Reply to author
Forward
0 new messages