# Single Touch Based Sensor and Odometry SLAM in Noisy Rectilinear Environment

A Co-worker said he remembered a 2011(ish) ICRA (ish) paper which used just a touch/bump sensor and odometry to do SLAM. I can't find it - I've paged thru the ICRA and IROS agendas and paper abstracts for 2010-2012, no joy. I found a couple of interesting papers but my coworker says these aren't the ones he remembered.

Background - I'm trying to make a Lego Mindstorms bot navigate and map our house. I also have a IR sensor, but my experience with these is that they are really noisy, and at best can be considered an extended touch sensor.

Regards, Winton

I'm not sure that I've understood you and also this is my first answer, but I'll try my best.

Two years ago, I've faced the exact same challenge. Is there a way of building budget friendly mapping robot? Unfortunately, the answer to this question is not binary. There are so many variables that should be accounted such as movement of robot, movements in the environment, sensor sensivity, encoder sensivity, friction etc. Perhaps there are better questions. What is the ratio of accuracy to budget? Do we need a 3D or 2D map? How can we map an environment in 3D? What are the sources of error?

I've looked for an answer and tried many things along the way. Some of them was cheaper and some of them was more convenient.

## 1) IR/Sonar Sensor + Servo

Most basic or "primitive" type of solution, also the first one I've tried. It consists of a simple wheeled platform, a servo (two if you want 3D) and an IR/Sonar sensor. You calculate the movement of robot by measuring distance from the front to the next obstacle, and you map the room/house by doing a sweeping motion with the servo + sensor.

Pros:

1. Budget friendly
2. Extremely simple

Cons:

1. Highly inaccurate
2. Algorithm wise not scalable

My Suggestions:

If you want to implement this way, pick Sonar sensors. The good ones are a little bit more expensive then most IR sensors but they won't get scrambled when you bump into a reflective surface. Also, make sure that you sweep few times to estimate distance with smaller errors.

## 2) IR/Sonar Sensor + Encoders

A little bit more expensive this way, but a little bit more accurate so to say. The only change is that now the encoders define the position of the robot. Since we are getting the measurements from two seperate sources, we can calculate an error value more precisely. Unfortunately more problems start to occur this way. The encoders give accurate values, but can we really trust that? What if our robot slips during a movement? What if it gets stuck while moving to a carpet? Now we have to calculate different errors for different situations.

Pros:

1. Little bit expensive but still manageable
2. Still simple enough
3. Two sources of information

Cons:

1. Two sources of error

My Suggestions:

Use rubber tires with small wheels, so that you can get a more precise value from encoders since needed wheel rotation for distance increases and minimize the slipping since rubber has greater friction.

## 3) Xbox Kinect (or equivalent)

In my opinion the best choice for mapping, but not for robotics. Fairly cheap, can be found everywhere, very accurate and tons of tutorials exist. The key phrase is "Point Cloud Map". The Kinect device sends many IR rays and then collects them. By combining this mechanic with the Kinect camera, you can attach every distance point a pixel. Thus it's called Point Cloud.

Pros:

1. Best accuracy/budget ration
2. Many resources available

Cons:

1. It's not very robotics friendly due to its size
2. Another computating device (such as a notebook) is needed to process the data
3. Not very easy to tinker with

My Suggestions:

A wider robot with a small device to buffer the data (such as Raspberry Pi) would be ideal. You could connect the Kinect to Raspberry Pi and with a wifi dongle you can buffer mapping data to your computer to process, but since you would need an external usb hub too I wouldn't recommend this way.

## 4) Laser Scanners / Radar Modules

Even though I think this is not suitable to your concept of mapping, I will mention this just as a reference. The industrial solution to mapping because of best precision. Many unmanned vehicles, even the ones owned by the military use these devices. But of course they come with a price.

Pros:

1. Best precision
2. Highly durable and reliable

Cons:

1. Extremely expensive
2. Most of the time require a high power source

My Suggestions:

Although this might be out of your league, you may still find inspiration in them. They more or less work with the same principle as IR Sensor + Servo combos.

I've tried my best to mention all current trends in SLAM technology even though you've mentioned that you only have a single IR sensor because I wanted this to be a source for future projects. I hope it helps to you and the others.

• Excellent post. Hang around! :) – Shahbaz Jan 3 '16 at 15:22

As a step up from pure IR, check out http://www.parallax.com/product/28044

But otherwise neat project. Sorry I don't have any info on the paper you seek, but the idea sounds reasonable, albeit slow.

The problem you will probably run into, is that SLAM is used to improve odometry, by looking at multiple object distances at once, and you are depending on odometry to supply a single object input to SLAM, so I am not sure how good your map will be. But if there is a paper explaining how to do, then very cool.

To some extent, SLAM tries to deal with noise, so with a lot of filter tuning, you might get some results with just the IR on a servo. The math on this will be pretty intense as far as CPU power goes, so it might be pushing the NXT, ie you need to do many iterations of each landmark using least squares fit algorithms (trig intensive) for ICP (iterative closest point) SLAM. Other algorithms each have their own pros and cons as usual.

• the obvious problem comparing with traditional SLAM methods is that there's only ever 1 landmark distinguishable (ie bumped into something). So you need to do something smart in terms of filtering. The obvious helpful constraint is the rectilinear nature of the world. I just don't want to reinvent the wheel :) (or rather if I must, I'd like to know what hasn't worked or has worked). – W D Jan 27 '15 at 20:29
• I was thinking keeping track of things you bumped into as landmarks. At that point I think it becomes more of a RANSAC? But might serve your purpose? – Spiked3 Jan 27 '15 at 23:53
• I'm guessing I can use odometry and the fact that even if turns are off, that I can tell whether or not I have turned roughly 90 or 180 degrees to hypothesize rough width and length of rooms. Less so about whether I've moved to a new room. The alternate approach is just to zoom around at random, noting where odometry thinks it hit something, then try to fit rectangles to the data. – W D Jan 28 '15 at 19:08
• yeah, should work somewhat. Be sure to tune you turns, eg test a 2/3 meter square and get the error as low as possible before sending it off on the real run. Do you have a blog web site? – Spiked3 Jan 28 '15 at 21:02

I remember a robot with whiskers in icra 2012 Here the link http://www.researchgate.net/publication/236166849_Tactile_SLAM_with_a_biomimetic_whiskered_robot

• That's the Foxe paper - definitely interesting, but whiskers give you a bit more resolution. I wonder if you can simulate this with the IR on a servor as @Spiked3 suggested. – W D Jan 27 '15 at 22:01

This reminds me of a paper (or perhaps thesis) I read way back in 2006 or 2007, where the author created equivalence classes for robot sensors. For example a robot with wheel encoders and a bump sensor is theoretically equivalent to a robot with no encoders and only a planar laser range finder. I forget the rest, but this kind of notion has stuck with me. Keep in mind this was all for theoretical robots with perfect sensing. But interesting to think about none the less.