Skip to main content

Posts

Showing posts with the label roomba

DIY Roomba Virtual Wall, Part 5

After using the DIY Roomba Virtual Walls for a week now, I found something interesting that is rarely mentioned by the folks who have made this. The only mention I could find is from this blog post : "After examining the original virtual wall, with a webcam, I was able to see that it emits infrared light from its top round transparent ring and from a small hole above the switches. The light coming from the top ring prevents the robot from colliding with the virtual wall , if it comes from its sides or from behind. The front hole emits light as a beam. This beam of light is directional and stops at the nearest obstacle, probably a real wall, preventing the robot from crossing it to the other side." Indeed, when using the DIY version, the first thing I noticed is that the unit has to be strategically placed because the Roomba will knock into it more often than expected.  So a more robust DIY version will need to have another IR LED pointing at some kind of conical reflector mo...

DIY Roomba Virtual Wall, Part 4

So I went ahead and made another Roomba Virtual Wall. Everything else is pretty much the same as before , except I made each mounting layer one single ring, instead of 2 separate pieces. The single-piece design makes them easier to align and attach, at the expense of slightly longer print time and more filament used. When soldering the proto-board, I tried moving the 3 resistors to the bottom of the board. Bad move. It was too crowded. In the end, I moved 2 of them back to the top. I found that the IR LED that I used for this unit is actually the one I salvaged from the broken Roomba Virtual Wall because it has a very narrow degree of projection (2 ~ 3° at most). I thought the first unit had it. What happened was, I was testing out the IR LED from the virtual wall and the old TV remote on the breadboard, and somehow got them mixed up. So I thought the first unit was using the IR LED from the broken virtual wall, but actually it had the TV remote IR LED, which makes sense now, because i...

DIY Roomba Virtual Wall, Part 3

I created an enclosure for the ATtiny85-based Roomba virtual wall prototype board using FreeCAD . A couple of design goals: The LED is positioned about 7cm from ground level. The 3 x AA battery holder is 3D-printed, completed by battery clips salvaged from old toys (or readily available online ). The parts are designed to print with as little support as possible, and attached together using superglue and screws. I printed the parts using 0.8mm nozzle to save time, so they look a little rough. It takes about 7 hours to print all the parts on my Creality Ender 3. Nine M2.5 screws are required, one for the battery cover, eight for holding the body together. Superglue can be used for the latter, but I like the option to easily take the body apart for repair. Here is the battery box with battery clips inserted: JST male connector wire soldered at the back: Mounting clips attached with superglue. When working with superglue, move the parts in position and hold down with pressure for 60 secon...

DIY Roomba Virtual Wall, Part 2

Following on the success of the test circuit , I added a status LED and a pushbutton to the breadboard.  A summary of the connections: IR LED connected to pin 3 (PB4) of the ATtiny85 (100ohm current- limiting resistor). Pin 3 is where the tiny_IRremote library sends its output to by default. Normal LED connected to pin 2 (PB3, 220ohm current-limiting resistor). We will use this LED as a status indicator to 1) signal power-on 2) signal battery low Pushbutton connected to pin 6 (PB1, 10Kohm pull-up resistor). We will use this as a soft switch to turn the virtual wall on/off. The Arduino source code is available here . Note: I configured ATtiny85 to run at 1MHz for additional power saving. Correspondingly, in  tiny_IRremoteInt.h , I had to change  #define SYSCLOCK  from 8000000 to 1000000 . Some highlights of the code: Pin change interrupt is used to monitor when the pushbutton is pressed to turn on the unit. In normal operation, status LED flashes every second. Watc...

DIY Roomba Virtual Wall

Recently, my Roomba virtual wall broke. Not sure what happened. I did a battery change, and the darn thing will not power up after the new batteries were inserted. Anyway, while looking online for a new virtual wall to buy, I came across info on people making their own virtual walls. Here is a links dump: https://petezah.com/category/development/roomba/ https://www.thingiverse.com/thing:3104027 http://blog.batmule.dk/posts/2019/Roomba_Virtual_Wall_part1/ http://www.robotreviews.com/chat/viewtopic.php?p=65658&mobile=on https://misc.ws/2014/02/27/diy-virtual-wall-for-roomba/ https://misc.ws/2014/08/09/diy-virtual-wall-for-roomba-part-two/ http://www.enide.net/webcms/index.php?page=virtual-wall-for-roomba http://eka.tomeczko.pl/index.php/diy-roomba-virtual-wall http://gregthielen.me/blogstuff/2017/06/27/roomba-virtual-wall/ https://github.com/MKme/Roomba http://forkthings.com/2016/11/25/diy-an-irobot-roomba-virtual-wall/ Turns out it is extremely easy to produce the IR signal emitted ...

Cleaning Roomba's front wheel

You learn something new everyday. I have been using the Roomba for the past 5 years at least without realizing that the front wheel needed cleaning. I clean the side wheels and the brushes religiously, occasionally using the air compressor, but front wheel, nah. That's until one of the Roombas started making a funny noise. When it runs, it would sound like it's going over a hump every second. I have heard that before when the bottom brushes are not properly fitted, but this time the problem is not that. I finally traced it down to the front wheel. I noticed it does have quite a bit of hair stuck in the axle. After struggling on my own for awhile to figure out how to clean the damn thing properly, I turned to YouTube:   Turned out it was pretty easy. You just pull the wheel carrier right off with a bit of force, then pop the wheel off with a flat blade screwdriver. Then I found the culprit: It's a tiny bead from my daughter's DIY necklace toy set,...

Roomba navigation algorithm

I have been a long time user of the Roomba vacuum robot , starting from version 1 till now. It has made a big difference to my life, and I enthusiastically recommend it to all my friends. One thing that stands Roomba apart from other vacuum robot is its navigation algorithm. There is no high-level mapping involved. Instead it uses localized decision making , much like how insects forage for food: Our robot computes its algorithm 67 times every second, constantly stitching together information about its environment and recomputing its path. When it starts you’ll notice a spiral pattern, it’ll spiral out over a larger and larger area until it hits an object. When it finds an object, it will follow along the edge of that object for a period of time, and then it will start cris-crossing, trying to figure out the largest distance it can go without hitting another object, and that’s helping it figure out how large the space is, but if it goes for too long a period of time without hittin...