Online GraphSlam visualization

18
5

Hi,

as always i just had to visualize what we have learned in class.

Because the matrix inversion was too slow to run in realtime in Java, I programmed everything to run on my GPU using JCuda. The position difference graph slam needs is estimated by a particle filter, which is also running on my GPU. The inner walls, and only every 2nd piece of wall is detected, because the inversion of the entire matrix, with so many landmarks (wall parts), would take too long else.

The laser scanner runs at 10hz and has a range of 200px, and it's error a variance of 10px. The errors of the car have 3% (of max speed) variance for speed, and 5% (of max steering) variance. The GPS has a variance of 30px. The blue squares you can see in the video are the resulting position estimations from graphslam. The red square is the position estimated by the particle filter.

It is amazing seeing the algorithm construct the map and how the initial wrong measurement of the wall position is quickly converging to the true position.

WATCH THE VIDEO: www.youtube.com/watch?v=QKYe9hPoiHs

screenshot

asked 01 Apr '12, 15:28

Philipp%20Reitter-1's gravatar image

Philipp Reit...
3.3k161918
accept rate: 16%

edited 06 Apr '12, 16:53


6 Answers:

The GraphSlam algorithm we used involved known landmarks. However if you had a range finder, it might not be possible to label the landmarks.

Does your simulation provide labels for the blocks which make up the walls to the agent?

link

answered 02 Apr '12, 12:26

Drew%20Noakes's gravatar image

Drew Noakes
1.7k61616

Yes, every piece of wall has an id. It's a little bit cheating on my part, hoped nobody would notice :P

(02 Apr '12, 14:12) Philipp Reit... Philipp%20Reitter-1's gravatar image

@Philipp, haha, no of course it's not cheating. We haven't learned how to do this in the course yet. Actually I'd be curious to read a little about how mapping had when you can't label landmarks. I wonder if it's an extension of what we've been learning, or if it's something completely new.

(02 Apr '12, 16:52) Drew Noakes Drew%20Noakes's gravatar image

This is great. So to understand more, are you assuming when you get within a certain proximity you can detect the walls with the laser scanner (with the added noise)?

link

answered 01 Apr '12, 15:39

peteMcC's gravatar image

peteMcC
1.4k82040

yes the laser scanner has a certain range, and returns the x and y distance from every 10x10 piece of wall.
(cant currently add a comment, forum is buggy)

(01 Apr '12, 19:16) Philipp Reit... Philipp%20Reitter-1's gravatar image

Looks nice - but how come the car is able to run through the wall?

link

answered 01 Apr '12, 19:27

rakesh%20kumar's gravatar image

rakesh kumar
1.5k51444

Its only a matter of force! Joking aside, i have just turned off collision for this test.

(01 Apr '12, 20:57) Philipp Reit... Philipp%20Reitter-1's gravatar image

Hi. Can you elaborate on this statement that you wrote:

The position difference graph slam needs is estimated by a particle filter, which is also running on my GPU.

Does the robot use a particle filter to figure out its x, y position and THEN use that information to figure out its motion (dx, dy)?

I am trying to see the big picture of how the SLAM algorithm is used with our localization, path, and steering algorithms.
The itegration of all these topics is a good topic for discussion.

link

answered 01 Apr '12, 20:06

Leslie%20B.%20Klein's gravatar image

Leslie B. Klein
1.0k332

edited 01 Apr '12, 20:54

Philipp%20Reitter-1's gravatar image

Philipp Reit...
3.3k161918

I estimate the position of the car with a particle filter. This particle filter incorporate the speed and steering sensor of the car, aswell as GPS and the current color of the ground below the car (histogram localization, unit1). The position of the particle filter is far more accurate then the position gained from integrating speed and steering.

This position (more precisely position change) information is then used to do the motion update of graphslam. Ofcourse i could use the motion information from steering and speed sensors on their own, but in my test the particle filtered information has given me better results.

(01 Apr '12, 20:54) Philipp Reit... Philipp%20Reitter-1's gravatar image

Thanks. Now...I am trying to tie it all together...
1. The car moves for awhile with the particle filter storing a (set of changes in position) and (measurements of landmarks).
2. This stored data is used to execute graph SLAM, which locates landmarks and also gives car its position. (Meanwhile, car is still getting its position from particle filter, right?)
3. The car uses the landmark positions to plan an optimal path.
4. Whenever the car drives in this world again, it knows how to figure out the best path (using A* or DP).
5. The car uses its smoothing algorithm to smooth the path and its PID controller to follow the path.
Please add details to help put all the pieces together.

Thanks!!

link

answered 01 Apr '12, 21:35

Leslie%20B.%20Klein's gravatar image

Leslie B. Klein
1.0k332

edited 01 Apr '12, 21:37

  1. The car moves and the particle filter is estimating its position (using gps, histrogram localization and speed/steering information)
  2. The position gained from SLAM is (not yet) used in any way. Car still drives using particle filter, altough the SLAM position estimation is more accurate
  3. 4, and 5 is not added yet.
(02 Apr '12, 06:49) Philipp Reit... Philipp%20Reitter-1's gravatar image

This is really fantastic. Congratulations.

In one of your other excellent videos, you show various paths that result from your planning algorithm. It reminded me of a video we saw earlier in class, where the car was trying to get itself out of a parking lot.

So, what do all those little yellow fronds mean?

link

answered 02 Apr '12, 17:48

Drew%20Noakes's gravatar image

Drew Noakes
1.7k61616

The yellow lines are all expanded nodes. At every point the car can either go straight, max steer left or max steer right for 30 timesteps. Then, as we learned, Astar picks the one with the lowest cost, and expands this one.

(03 Apr '12, 09:21) Philipp Reit... Philipp%20Reitter-1's gravatar image

@Philipp, thanks for the explanation.

(04 Apr '12, 06:54) Drew Noakes Drew%20Noakes's gravatar image
Your answer
Question text:

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×5,188
×110
×101
×57
×36
×16

Asked: 01 Apr '12, 15:28

Seen: 990 times

Last updated: 06 Apr '12, 16:53