Initial Pose to Localization and additional sensors integration

1,496 views
Skip to first unread message

Akshay Roy

unread,
Jul 31, 2017, 5:25:53 PM7/31/17
to google-cartographer
Hi, 

I was able to implement pure localization using cartographer in my robot. However, it took a long time before the bot would localize. Will it localize better if we give an initial pose near the ground truth. If I were to add an initial Pose where should that go exactly.
And can we do both 2D and 3D mapping simultaneously? I figured that there you are using two different pose graphs for 2d and 3d, Is there any specific reason for that? And is it possible to add other sensors and map features like landmarks, wifi etc and add then as constraints?

Thanks,
Akshay

Wolfgang Hess

unread,
Aug 3, 2017, 9:03:15 AM8/3/17
to Akshay Roy, google-cartographer
Hi Akshay,

On Mon, Jul 31, 2017 at 11:25 PM, Akshay Roy <akshay...@gmail.com> wrote:
Hi, 

I was able to implement pure localization using cartographer in my robot. However, it took a long time before the bot would localize. Will it localize better if we give an initial pose near the ground truth. If I were to add an initial Pose where should that go exactly.

Depends on what you mean with "long time". Right now, we always do global scan to submap matching initially. After a match is found, the global pose optimization has to run for it to take effect. Your proposed improvement only helps if it is hard to find a match easily. If it is just computationally expensive a better improvement would be to optimize performance. If the optimization is done rather late, reducing the value for optimize_every_n_scans should help.

There is no single place to add an initial pose. You'd need to pass that information all the way to the global optimization problem. It might make sense to start by implementing https://github.com/googlecartographer/cartographer/issues/329 to get an idea of the related code if you want to try.
 
And can we do both 2D and 3D mapping simultaneously? I figured that there you are using two different pose graphs for 2d and 3d, Is there any specific reason for that? And is it possible to add other sensors and map features like landmarks, wifi etc and add then as constraints?

Not right now. The reason is that using the current 3D code for 2D would lead to bad performance. We plan on improving the situation eventually but this might take some time. Regarding landmarks, there was https://github.com/googlecartographer/cartographer/pull/246, but right now it is not possible.

Cheers,
Wolfgang

 

Thanks,
Akshay

--
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/c142e641-9fe4-4975-8fe0-082ea16a58e7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--

Wolfgang Hess

Software Engineer

wh...@google.com


Google Germany GmbH

Erika-Mann-Str. 33

80636 Munich


Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle

Registergericht und -nummer: Hamburg, HRB 86891

Sitz der Gesellschaft: Hamburg

Akshay Roy

unread,
Aug 10, 2017, 6:01:52 PM8/10/17
to google-cartographer, akshay...@gmail.com
Hi Wolfgang Hess,

Thank you so much for the reply. I am planning to add the initial pose feature to the cartographer and based on my initial look into the package I have devised a workflow. The workflow has the following step:
1.Need to writer a subscriber in node.cc that would subscribe to /initialpose from rviz.
2.Whenever we receive an /initialpose we need to first finish the current Trajectory and then run final optimization.
3. Then a new trajectory needs to be started from the pose given by /initialpose and need to make sure it is with respect to map frame.
4.push this pose all the way back to TrajectoryBuilder class where the PoseEstimate is defined and change the value in Default to the pose estimate that we have.

I would love to get some feedback and more inputs regarding this.

Thanks,
Akshay

On Thursday, August 3, 2017 at 9:03:15 AM UTC-4, Wolfgang Hess wrote:
Hi Akshay,

On Mon, Jul 31, 2017 at 11:25 PM, Akshay Roy <akshay...@gmail.com> wrote:
Hi, 

I was able to implement pure localization using cartographer in my robot. However, it took a long time before the bot would localize. Will it localize better if we give an initial pose near the ground truth. If I were to add an initial Pose where should that go exactly.

Depends on what you mean with "long time". Right now, we always do global scan to submap matching initially. After a match is found, the global pose optimization has to run for it to take effect. Your proposed improvement only helps if it is hard to find a match easily. If it is just computationally expensive a better improvement would be to optimize performance. If the optimization is done rather late, reducing the value for optimize_every_n_scans should help.

There is no single place to add an initial pose. You'd need to pass that information all the way to the global optimization problem. It might make sense to start by implementing https://github.com/googlecartographer/cartographer/issues/329 to get an idea of the related code if you want to try.
 
And can we do both 2D and 3D mapping simultaneously? I figured that there you are using two different pose graphs for 2d and 3d, Is there any specific reason for that? And is it possible to add other sensors and map features like landmarks, wifi etc and add then as constraints?

Not right now. The reason is that using the current 3D code for 2D would lead to bad performance. We plan on improving the situation eventually but this might take some time. Regarding landmarks, there was https://github.com/googlecartographer/cartographer/pull/246, but right now it is not possible.

Cheers,
Wolfgang

 

Thanks,
Akshay

--
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.

Brannon King

unread,
Aug 14, 2017, 1:32:07 PM8/14/17
to google-cartographer, akshay...@gmail.com
I need the "initial pose" feature as well. Is there an issue filed for it? It might also be nice to pass it on the command line with the "load map" parameter.
Reply all
Reply to author
Forward
0 new messages