A number of people have asked me about building the robot sketched in yesterday’s strip. You’re definitely welcome to, and I’d love to see the results.
There are a couple engineering details that might trip you up. Rotating the webcam is one of them — I don’t make this explicit, but the idea in the blueprint was that there would be a servo inside the robot rotating the retaining magnets, which could be powered off the main battery. In practice, it might be better to put the servo on the outside and power it off the webcam battery — or, if you can find one cheap, simply use an omnidirectional camera.
The reason this is necessary is that I don’t think the internal robot, which is holding the webcam, will spin easily on hard surfaces. This is also the reason the robot uses Mechanum wheels instead of a simpler and cheaper design with a powered wheel on each side and castors or bearings on the front and back. If anyone has any ideas for making the robot spin more easily, I’d love to see them. Or perhaps you can try building the simpler design and see how quickly and reliably it can turn. If it works, it eliminates about half the cost of the project.
If anyone sends in any interesting material on this, I’ll be happy to put it up on a wiki somewhere so other people can tweak the design and develop a how-to. As far as I know, no one has built a robot quite like the one in the comic, so it’d be a great project.
Possible additional feature: cover the robot with little flaps or ridges, add some tweaks to protect the camera, and it becomes amphibious.
Edit: I’ve covered a few additional questions, including why the camera isn’t inside the ball, in this comment.
I say ditch the webcam. Instead, put an ultrasonic sensor inside the ball, and use that for obstacle avoidance. Don’t bother making the ball turn, either, just turn the sensor and have it roll in different directions.
You could have an opaque plastic ball rolling around the room, going around things instead of bumping into them. That would be awesome.
LikeLike
I think this is all a genius idea 😉
And how about this: have the camera levitated above the main bit, with more powerful magnets in the right places…
would be hard to do that tho, and I don’t exactly know much about levitation…
(Captcha: for cranberry – mmm… how tasty…?)
LikeLike
Where can one purchase a solid clear plastic ball? I’ve been to a number of pet shop websites, the best I found was a 13″ ball on petco for about $25:
http://www.petco.com/product/100442/Super-Pet-Mega-Run-about-Ball.aspx
But this ball has notches – won’t the mecanum/omni wheels get caught in the grooves?
LikeLike
Won’t an ultrasonic sensor get interference from the ball itself?
LikeLike
Ok, here is a thought. Instead of using an omnidirectional camera, how about an apparatus that can manipulate the direction of the bearings, relative to the floor or other surface, on the underside of the camera inside the ball. On the arm that supports magnets already, use a small motor, something not to far from a CD tray system, and attach it under the magnets. A feed would be needed to trigger a movement, and can be set in small increments, probabaly in the field of 20 degrees a piece. This would mean having a romote yes. HOWEVER, if you have unlimited funding, a sensor array, pressure of course, could be set to trigger the turning of the camera (or better yet the entire robot) by a few degrees. Therefore, it can have a a means of avoiding running into the wall and sitting in a corner. And, if you wanted to, you can reverse the effects of the sensor so that if it strays too far from any given obects, if turns until a constant pressure, or feed, is returned to the sensor. (IDEA, freaking people out, by having it roam down library corridors). These are just a few of my ideas, i want someone to put them to use, because i have no funding whatsoever. Comment this, tell me whats wrong, and if it works, please tell me, and if you would, give me partial credit.
-Mr. Purple
phatismael@aol.com
LikeLike
“Jason Says:
I’d make one, but I’m not familiar with the whole “import soul” bit. Too bad.”
It’s easy:
write satan
import soul-binding_contract
import best_friend
sign_contract(best_friend)
import soul
(Yes, I’m aware that is probably not real Python, I don’t know Python).
On another note, does anybody know of a good robotics site? Somewhere where you can get help for building robots, help with building electronics and print circuits, and where you can get help on figuring out if certain parts of your project is at all possible?
LikeLike
Forgive me if I missed the point, but why have a web cam in the first place? Looking at people’s ankles is not very interesting and I don’t think image processing is advanced enough to be used for collision detection in random enviroments. I guess you could side mount a lazer at an angle and check how far the brighest red dot is, but that is not the point.
Instead why not use a low tech tilt switch? Have a blind robot that drives in a random direction untill it hits something that it can’t go over. The robot can tell this by checking if it’s orientation is greater than 45 degrees via the tilt switch. Once it realizes running up this wall is pointless it just takes off in another random direction. It can also record where the obsticle was and try not to run into it again.
This is pretty much the same algorithem hamsters use. As humans we rely too much on sight for navigation.
LikeLike
I didn’t have time to read all the posts, so I’m sorry if its been mentioned before, but to remove the problem with the camera on the top of the ball could you use ultrasonics for navigation? Then you could put the transmitter and receiver inside the ball and no problems with knocking it off. As for rotating the ball, if you give the shell some extra weight (which would add strength) then you could use the inertia of the ball to offset the inertia of the mechanism.
Just a thought.
LikeLike
I had a bad experience with my hamster in one of these “death-balls.”
My hamster, Bifur, loved to motor around in his ball. He could go for an hour just booking around the house. One night as we were playing a board game or something, we hadn’t heard from Bifur and looked around. He had got himself stuck against the space heater. Half the ball was melted and he was furiously trying to move away.
We pulled the ball off the heater immediately and luckily the opening mechanism wasn’t melted so we got him out with no problems. He wasn’t looking too good, his ears were smoking! We took him to the emergency vet and they gave us some cream for his ears and some food drops. Eventually Bifur’s big floppy ears fell off but he lived a good long time after. Bifur was an awesome hamster. This reminded me of him.
LikeLike
Ah, but what if we really DO teach the robot to blog? When it’s obstacle avoidance system can’t figure out what to make of its input, it can post its webcam output and a sensor dump to the blog, and wait for patrons to offer suggestions, perhaps by helping it choose one of the potential conclusions it has listed. Is this thing a wall? Is this thing a cat? Why am I 30-degrees off-level, and how do I correct it? Feedback wouldn’t be instantaneous, but it’d be an interesting social AI experience.
LikeLike
You could implement IRP. Then you might get faster responses.
LikeLike
“could you use ultrasonics for navigation? Then you could put the transmitter and receiver inside the ball and no problems with knocking it off.”
The ball will interfere with ultrasonics more than a camera
LikeLike
I’d want to know how to build this: http://xkcd.com/368/. Then, I’ll go convince a homeowners association that we need to put them up around the main streets.
LikeLike
I’d want to build this, http://xkcd.com/368/, and then convince homeowners associations that they need to put them up.
LikeLike
So, I’ve skimmed the postings and haven’t found an answer to my question, so I’ll post it: How does one use Python to control servos etc? Would you be using something along the lines of pyparallels, or pyro, or…? What microcontrollers / DAQ’s can you use with Python? The NI6008 looks like it *may* be usable…
LikeLike
Can Python communicate with controllers programmed in C or Assembler? If yes, you could decentralise motor control.
LikeLike
Ok I know I’m way out of the loop on computer tech these days, quite simply I’m broke and why pay attention to stuff I can’t afford. Then I see this post about the robot and more importantly the EEE PC, I had no idea what it was. Holy crap its exactly what I’ve been looking for, I just wanted a cheap ass laptop to screw around on the internet with. So thank you a whole bunch!
Oh and you’re comics are amazing! The ones that delve heavily into the computer stuff go over my head but enough are amazing that I check back regularly. So thanks for that too, maybe I’ll be checking in on my EEE soon.
LikeLike
You know, thinking about this a bit, I think the split-ball approach would take a lot of complication out of the picture. For example, you could use any form of sensor you wanted (lidar, radar, image processing… robotic cane, whatever.) just aim it through the gap. It’d also make driving the thing simpler (and I believe this was how the person who brought up the split-ball idea thought to do it), just hook a pair of servos to a split axis rod, something kinda like so:
(-x{}x-)
x = motor, {} is the laptop tray, and the ()’s is the ball shell.
With the simpler drive (which, could likely be done with a pair of decent servos, some decent strength rod so it doesn’t bend over time, and an arduino board fairly easily) it’d be easier in my (admittedly ill informed) opinion to make work with sophisticated navigation systems. Fixed forward camera, perhaps with a tilt switch on the frame holding it to tell if it’s off, and simple tank-tread controls, it should be fairly easy to program object avoidance with.
As for the camera, I think it might be worthwhile to have two mounted, an IR camera (maybe with a couple of IR LEDs for night operations), and a better quality visible-light camera for pictures, general awesomeness, and remote controllability. A quick mod to a cheapo creative webcam would be a sufficiant IR camera, and a better quality megapixel range logitech camera would have sufficiant awesome for user control.
Also, having a split-ball would allow for some other interesting things. For example, it would be sorta-trivial to design a docking and recharge station that the roboball could recharge on itself. (Designing how it would actually find, approach, and dock with said station from a software side, not so much, at least to me.)
And with someone mentioning the morph-ball, it would be doable (though a little insane, and probably hard to do well) to design a kicker of some form that could pop the ball up a little. With a lot of luck, and a bit of planning, you could probably get some distance building up speed, then hitting the little kicker and sending your computerized hamster flying. Which would be the coolest stair-climbing robot EVER.
The main problem I see with the split-ball design is that you might need to design some form of anti-cruft barrier, it wouldn’t be easily watertight, and probably something I’m not seeing. But, those are fairly minor problems compared to balancing a camera on a ball.
I should see if I can borrow my friends computer for a bit and do a few solidworks drawings of some of the hardware involved.
Also, because my electric motor knowlege is a bit rusty, is there a motor that you could easily use in a system that the shells could rotate easily with the motor unpowered, and use the motor to either add speed, or as a brake? That, depending on the speed, regulation, and design of the motor could help keep it from flipping in it’s shell if it gets stuck.
P.S: Has anyone given any thought to the bot’s navigation? RFID waypoints, maybe?
LikeLike
If you were willing to part with the idea of having anything electronic inside the ball, it would be possible to do something like this: http://www.cs.aau.dk/~jeppe/ballrobot.png
LikeLike
Instead of using magnets to keep the webcam on, create a “cage” that extends to somewhere below the ball’s equator. It could be something as simple as 3 arms extending out from the camera base at 120 degree intervals. This would physically prevent it from falling off.
If you weighted the cage at the bottom, it would also ensure that the camera was always on top. You could then use either casters or bearing, or even magnetic levatation, to separate the camera from the ball.
LikeLike
A lot of people have been suggesting the “two ball halves” and the “cage camera” ideas, but, to me, that is going beyond the whole point of the exercise. The idea is to create a ball robot with a camera unit that rolls on the top… it seems that these ideas, while good ones, just don’t answer the question.
The lidar sounds like it would be a good idea, though…
(Isn’t that what they use for the DARPA offroad buggies?)
LikeLike
Some hobby stores sell usb of serial connectors to batteries of relays. With 4 motors, 8 relays (two for every motor, so it can spin both ways) and a battery, a basic 4-omniwheel-platfrom like this can be made easily. The hardest part I’ve encountered so far is the acquisition of the plastic ball and (soon) the actual programming.
The camera needs a strong enough magnet, but for bearings i plan to break open some old computer mice and harvesting rollercage and mouseball. Attach to 12v battery pack and wifi webcam, and the basic system should be up and running.
The more I think about it, the more I’m convinced the prototype could be up and running fast and cheap 🙂
LikeLike
If the system of magnetism proves ineffective (I know this is a big part of the idea behind this design, but still) I think this design could pretty simply and easily be modified by leaving the center of the two halves of the ball very slightly open and attaching the camera directly onto the arm in some way. This would allow the camera to move with the center and the outside to move independently, and a small enough opening shouldn’t effect wheel traction, especially if the wheels are on the large side.
I really hope the magnets work out though (if it’s being made?). It’s definitely one of the more exciting ideas and I’d love to see it.
LikeLike
Disregard that. It does too much to prevent the omni-directional capabilities : /
Must be bed time for me.
LikeLike
Who knew that innovation was merely a blue-print/comic away.
If only it was so easy to get people collaborating ideas in other areas. 😛
LikeLike
“Chris Says:
Who knew that innovation was merely a blue-print/comic away.
If only it was so easy to get people collaborating ideas in other areas. :P”
I can see it now, scientists at CERN drawing stickmen comics to come up with new ways of splitting an atom, or to prove Einstein’s theory of relativity.
Recaptcha: to Castleton. How did it know where I’m headed to right now???
LikeLike
Oh, and whilst I remember, are there really noone who knows of a good robotics site, as mentioned in my previous comment? Come out, come out, whereever you are!
http://blag.xkcd.com/2008/04/22/hooray-robots/#comment-17322
LikeLike
The “hamster ball” idea has been around for a while (I remember reading it somewhere years ago — it was probably in _Robots_Androids_and_Automotons_ by Irvine, but it might have been part of something else). I like how it has been adapted to the times, though.
Just reading up on the whole omnidirection camera thing, it seems like if you swapped the canon locations (had a clear plastic dome with a flat indentation at the top for a parabolic mirror, then mounted the webcam at the bottom, facing up) you might be able to get something usable. The linked page was focusing on television-style surveillance cams and such because (as it stated) at the time, a top end webcam had a terrible framerate, however today’s webcams are likely to have a decent framerate and resolution, probably comparable to the tv-style cameras of the time. You might even be able to set up a little sonar rangefinder array up top or something, on the indentation, but that’s just an idea.
You might be able to get away with non-mechanum wheels and instead have something to spin small, soft spheres (ball pit balls?). This might be cheaper than mechanum wheels, but you’d need something akin to the innards of a trackball to do any kind of pedometry or dead-reckoning. Then again, Logitech has had some success with their optical trackballs, so maybe something like that would work (the inner balls wouldn’t get nearly as dirty as the logitech balls, so they would probably last longer, and if they were softer and squishier, they’d probably cushion the electronics a bit more as well as not grinding off optical markings).
These are just ideas I’m throwing around, though.
Oh, and FLITE works pretty decently for speech synthesis now, so it’d be an easy way to set up custom earcons. The only open source speech recognition system I’ve come across thus far has been CMU SPHINX, and I haven’t been able to get that to work quite so well, but it might be useful to play with. FLITE depends on OSS, so it (hypothetically) isn’t supposed to work with ALSA, but you can get by that by telling it that the output file is a pipe that feeds into soxplay or something.
I hope this was helpful.
LikeLike
Oh, also — the Atmel AVRs (specifically the ATMEGA8515 and brethren) can handle near-standard UART serial straight off the chip (in other words, you can just as easily offload it to IR if you wanted to). Since the AVRs are cheaply programmable in C, you can create a mini-language in C for controlling whatever the micro is supposed to control, and then have a python program feed in some code via serial or one of the older simple IR comm standards. USB->serial adapters should work too, in theory.
LikeLike
Skimming over the discussion here, I thought I’d comment on some things.
There are a lot of suggestions regarding navigation. It doesn’t seem to me that sonar, radar, or IR are likely to work. The ball will probably be opaque to IR, partly opaque to sonar as well as scattering and diffractive, and, to my understanding, too small for a practical radar system. I think visible light lidar is the only viable option.
I hadn’t thought of how dirty or scratched the ball might get. Could it be covered with ablative plastic film?
LikeLike
Having given up on reading all of the comments, but studying the drawing instead, I can’t see anything wrong with the original design apart from fixing the camera to the ball. How about moving the bearing surfaces below the equator of the ball on three arms? Use a simple maglev system immediately below the camera that can also provide rotational motive power. Better yet, move your motive force below the equator and maglev the bearing surfaces. This would provide better precision for aiming the camera, more torque to drive the camera, slightly lower the center of gravity for stability, and reduce friction. The drawback of course is obstacle interference with the camera/arms, which I think would be a problem in any situation where the camera is outside the ball.
LikeLike
And the arms would give you a good place to put stickers or flames, because an omni-directional racing stripe on the ball would only work in like 37.4 dimensions.
LikeLike
You ouldn’t need an omni-directional racing stripe…
Tesselations look much cooler, and would work with the ball shape…
But, still, a plain white or chrome ball would still look awesome.
LikeLike
Why not just create a population of nanobots that keep the ball transparent? Then you could put everything inside.
LikeLike
now, this is coming from someone with absolutely no mechanical experience at all, but would it be possible to fit the “guts” inside a smaller hamster ball, place the small ball into a larger one (the small ball is placed in the very center of the sphere to do its rolling thing) then use the space left from the difference in ball sizes to place a variety of sensors? It would then be just a matter of setting up a way of the outer ball communicating with the inner ball in an efficient enough manner.
LikeLike
I think we need to work on efficiency.
I believe the machine should draw exactly two watts of energy.
Thus setting up the ‘Watt watt in my bot’ line.
LikeLike
I also think an external camera should be magnetically levitated. Note that this would make the bearings unnecessary. Extending the camera supports past the equator will also prevent the camera from falling off. Designing the frame to break apart controllably would protect against damage (inevitably discarding the webcam, which is expendable). A maglev arrangement would also exchange undesirable friction on the outside surface of the ball for friction on the inside surface.
The double hamster ball idea is intriguing. Unfortunately, the Eee already requires the largest hamster ball normally available (13″). An outer ball would have to be molded (which at least would allow much design freedom). One could construct an icosahedral or dodecahedral frame between the balls to support the sensors, with the wheels on tetrahedron or cube vertices, and magnetically suspend the inner ball. The weight of the inner ball should limit precession.
LikeLike
The problem is, the magnetic attraction between the bottom of the webcam and the magnet inside the ball might squeeze the ball too hard, such that it does not roll AND keep the webcam at the top. That would be a friction problem. It could be solved at first if the ball was lubricated, but would become an issue again as the ball got dirty.
LikeLike
If the webcam was levitated, its support would not be in contact with the ball, and there would be no friction unless the ball became very, very dirty.
LikeLike
>If the webcam was levitated, its support would not be in contact with the ball, and there would be no friction unless the ball became very, very dirty.
Magnetic levitation alone is incredibly tricky to accomplish without some form of support or tether to keep it in place, and the amount of magnets required to feasibly levitate a webcam could very well interfere with the electronics.
Unless you can set up the magnets in such an arrangement that the weight of the webcam rig and the force of the magnetic repulsion are at an equilibrium that is stable enough to not be disturbed by frequent and sudden changes in momentum caused by the ball moving about, and in such a way that the cam-rig also would stay aligned with the direction of movement of the ball, then mag-lev is simply not feasible.
LikeLike
Might the magnets interfere with the workings of the webcam, unless they were too weak to levitate it?
LikeLike
Looks like it is time to make another XKCD inspired web page.
recaptcha: everything sized, isn’t everything everything sized?
LikeLike
Why not mount two cameras on a ring sort of platform (think Saturn) on opposite sides of the ball from eachother, and have a similar system as in the comic holding the ring (front and back) and have the inside bit connected directly to the platform the wheels are on, to keep them in place (as in the comic, only two arms instead of one). This way, the stability should be fairly good, because it would be tied directly to the bot inside, and when the bot inside turns, it would turn the ring, so that forward is always the direction that the two cameras are pointing. The only places the ring would touch the ball would be the contact points with the berings and whatnot, so drag wouldn’t be too much of an issue. The main benefit is lowering the center of gravity, however this system is hampered somewhat by the fact that the ring would hit anything (walls, whatnot) that the edge would come in contact with, but you could rubberize the edge or something to lower shock. Another benefit is that this keeps the magnetic
contact points a fair distance from the cameras, which should allow use of a stronger magnet. The arms on the front and back could perhaps even be made so that they can be moved up and down the inside surface of the ball, allowing to tilt the cameras up or down. This design is even less stair friendly, but honestly other than putting the camera in the ball, all of them would have to avoid stairs heavily.
Does any of that make any sense?
LikeLike
The web cam seems like a huge liability. It screws up the inherent durability of the spherical robot, it’s difficult to operate, it breaks if you flip over too fast (and throwing the robot down the stairs seems like an incredibly charming passtime, I’d hate to ruin that,) and has a tendency to make the robot top heavy unless you shove most of your equipment into the bottom half of the ball. (it’ll wind up there one way or another I suppose.)
My question is this: is there a way to use radar to see through the sphere regardless of debris or paint job, and without any external components? This has the added bonus that you can disguise the robot as a beach ball or stationary dopplar radar installation, depending on size, and use it to terrorize local populations without warning. No web cam, no one can tell that it’s a robot.
LikeLike
Generally I’m skeptical of an external camera… I’d rather do image processing to remove artifacts, or just replace the ball when it gets too yucky.
BUT, why not combine the magnets and the bearings? That is, spherical magnets: http://www.rare-earth-magnets.com/SearchResult-CategoryID-35.html. Identical magnets on opposite sides should rotate together when the ball moves between them.
LikeLike
I think maybe having two cameras for 3D imaging would help its movement a bit, as well as being simply awesome.
LikeLike
Just found this while Stumbling: http://www-2.cs.cmu.edu/~reshko/PILOT/
LikeLike
truthfully, I’m more interested in making a soul module for python.
LikeLike
Could this be used as an Open Voyeurism Tool?
LikeLike