A Robot Learns To Fly
jerkychew writes: "For those of you that read my last post about the robot escaping its captors, there's more news regarding robots and AI. According to this Reuters article, scientists in Sweden created a robot that essentially 'learned to fly' in just three hours. The robot had no preprogrammed instructions on how to achieve lift, it had to deduce everything through trial and error. Very interesting stuff."
Not only do we have to watch out for bird crap raining down on us, we now have robot excrement to worry about as well.
~~~~~~~~~ "I must create my own system, or be enslav'd by another man's." William Blake, Jerusalem.
The fact that it "cheats" somehow restores my faith in robotkind....
-ajb
A robot has taught itself the principles of flying -- learning in just three hours what evolution took millions of years to achieve
Well. Assuming the birds were TRYING to fly, knew what lift was, and already had the equipment (i.e. wings) to achieve this.
This brings an image of stupid birds sitting around flapping randomly thinking "FUCK - I'm SURE this should fucking WORK! - Bastards - OOps, I just fell over to the left - does that mean my right wing was flapped right???? - Hey - John! WHAT DID I DO THEN????"
"However, the robot could not actually fly because it was too heavy for its electrical motor."
One small step for robot, one giant leap for robotkind
Especially tried to cheat by standing on it's wingtips or similar. I would like to see something else though. What if we build lots of small generic robots, let's say they have wheels to move around only. The on the floor there could be more components that robots can attach themselves to, like giving them legs, wings, arms, eyes, ears etc., and then give them all different objectives, for example to survive, escape, learn from others, etc. Could be interesting to see if it would evolve into some kind of robot society where they all evolve different abilities and so on.
Will work for bandwidth
The moment the robot asks for a hamburger, hookes up to the net and orders a ticket for the next flight wherever they are getting somewhere with AI and simulated evolution..
Nobody expects the spanish inquisition!
Imagine a day where engineers build cool robots, upload the generic learn-to-do-stuff-with-your limbs program, leave it for a week or so to train up and get optimum calibration, then have it copy it's program onto subsequent batches.
I picture a robot aerobics class.. heh. But if anybody asks, I picture a robot boot camp.
My life is one big siesta in which I'm dreaming I wished my life was one big siesta.
LONDON (Reuters) - A robot has taught itself the principles of flying -- learning in just three hours what evolution took millions of years to achieve, according to research by Swedish scientists published on Wednesday.
Ridiculous to compare prebuilt robot to evolution from some dinosaur to flying dinosaur (also known as bird). This really is tabloid headlining at it's purest.
And the robot didn't even fly, just generated some lift!
It's like saying humans can fly, when they generate 1N lift flapping their arms.
But it's great to see how selflearning robots and programs will start evolving now. I quess pretty soon computers and robots will be able to evolve faster on their own than when developed by humans.
You're all doomed, I warned you!
I'll just get to packing my stuff, moving to a remote cabin in Montana and keeping a close eye on my refridgerator (I know it hates me, it keeps melting my ice cream).
No boom today. Boom tomorrow. There's always a boom tomorrow. - Cmdr. Susan Ivanova
Sounds like a neural net with real-time recalibration to me..
Stop the brainwash
what evolution took millions of years to achieve
Well, at least evolution succeeded in making birds that weren't too heavy for their own wings...
Seems to me that this project was not really as exciting as they would like us to believe...
Rather than comparing this to millions of years of evolution, perhaps it would be better to compare it to a bird just old enough to physically be able to fly.
The robot was physically equipped with all it needed to 'fly'; it was also equipped with all the wires in the right places. The fundamental difference between robots and living organisms is in the thinking: a newborn bird has to forge new synapses in its brain; this robot was designed with the purpose of 'learning to fly', so was given all the appropriate connections; it is just a matter of working out what sequence of events is required. Robots inherently have some form of co-ordination; birds, on the other hand, just like any other animal, have to develop such skills.
Like car accidents, most hardware problems are due to driver error.
as everyone knows, it all depends on what software there was in the system. If the starting-point was a program, which contained instructions for trying to move the "wings", and seeing which instruction caused most lift, and tuning the algorithm based on that, I don't think theres anything fancy in it. If this is the case, this could have been done at the same time when the moonlander game was first done :) I mean, it all depends on how dedicated for this exact "learning purpose" the SW in that robot was - or was it just an self-optimizing algorithm. Is there any more details on the software inside somewhere?
"Hey guys, look! We stood on really tall stilts, does this mean we're flying?"
That would have been something to see.
The robot stands proudly on it's wings, and tells the scientists "Look at me, I generated maximum lift, and I don't have to exert any force at all. Oh, and from here, I can see the mouse is climbing over walls to get to the cheese without going through the maze. You humans are so stupid!"
Whoever stated that signature sizes should be limited to one hundred and twenty characters can just go ahead and kiss my
I am not sure if you can call what the robot was doing 'flying'. It was essentially just flapping its arms in the most effective way possible with whatever wing-like appendages given to it.
Now the cheating - that is the interesting part. When they have the algorithm down so that the bot hobbles out the door and purchases a ticket at the airport, then they will have a winner.
"First you get the Linux, then you get the power, THEN you get the women"
check out AUVSI's Aerial Robotics Competition
Cheating was one strategy tried and rejected during the process of artificial evolution -- at one point the robot simply stood on its wing tips and later it climbed up on some objects that had been accidentally left nearby.
...
...
But after three hours the robot discovered a flapping technique
However, the robot could not actually fly because it was too heavy for its electrical motor.
"There's only so much that evolution can do," Bentley said.
Finally we understand the dodo's place in evolution.
**AA: a bunch of mindless jerks who'll be the first against the wall when the revolution comes
Here's what I did to play around with breeding algorithms from small building blocks:
Define a very simple stack-based language. The stack only holds boolean values, and when empty pops and endless supply of "false" values and when full discards pushes. Choose some control flow opcodes:
NOP, SKIP (pop, if true, skip ahead a fixed amount), REPEAT (pop, if true, skip back a fxied amount), NOT, RESET (clear stack, back to beginning)
and some opcodes related to your environment (mine was a rectangular arena):
GO (try to move forward one step, push boolean success), TURN (90 degrees clockwise), LOOK (push boolean "do I see food ahead?"), EAT (try to eat, push boolean success)
Pick a stack size (this has interesting consequences, as some of my organisms learned to count by filling the stack with TRUE values and consuming them until they hit the endless supply of FALSE when empty) and a code size. Force all organisms to end in your RESET op. Generate them randomly and run them in your simulator (I did 20-50 at once letting each one run a few hundred instructions in a row). Evaluate fitness (in my case, how well fed they were) and breed them. You can combine the functions in lots of ways. Randomly choose opcodes (or groups of opcodes) from each, possibly with reordering or shifting. Introduce some mutations.
Once you get something interesting, try to figure out how it works. This can be the hardest part -- my description above produced many variations that were only 8-10 instructions long before an unavoidable RESET opcode, and they could search a grid with obstacles for food!
MAIN
{
target = 72;
do
{
guess = rand();
}
while guess target;
print "GOT IT!"
}
NEWS HEADLINE:
Artificial Intelligence researcher creates computer program that comes up with the number 72.
The objective of the learning algorithm was to achieve maximum lift while attached to two vertical poles . So the headline should be: 'Robot learns to achieve maximum lift by flapping wings while attached to two poles'. I think keeping balance, avoiding stall, etc. are much harder to achieve.
Actually, the trick to landing is to let gravity pull you onto a surface.
As they say in the pilot-world: "Any landing you can walk away from is a good landing."
We do not live in the 21st century. We live in the 20 second century.
That reminded me a quote from "Chicken Run":
Rocky: You see, flying takes three things: Hard work, perseverance and... hard work.
Fowler: You said "hard work" twice!
Rocky: That's because it takes twice as much work as perseverance.
hardly learning, just a new spin on analysing the effeciency of algorithms
Well, analysing efficiency of algorithms and discarding the bad ones seem pretty much like "learning" to me.
Sure, humans aren't built to work efficiently with algorithms like robots do, but we learn from mistakes which one could call "poor algorithms with an undesired result". Humans don't exactly choose randomly between ways to do things - we perform things the way we suceeded in earlier.
Beware: In C++, your friends can see your privates!
Controlled stop?
Get your Unix fortune now!
You can't compare the process of evolution (success through random mutation) to a pre-built machine that is given explicit instructions to overcome a programmed obstacle.
Yes - as usual the tabloids exagerrate the truth. Their mistake this time was to compare it to the entire *evolution*.
However, I still find the achievement quite impressive since it was not given explicit intructions how to overcome the obstacle to start with.
Beware: In C++, your friends can see your privates!
Seem to be a lot of folks who aren't very impressed by this. I'll admit that the headline is a little over the top, but the story is still interesting -- and fraught with interesting potential.
For example:
StarBot: How long before it learns to make a grande latte half-skim/half 30 weight?
Bouncebot: How long before it learns not to turn its back on the loud drunk in the corner?
Lobot: How long before it decides it really doesn't want to learn anything, just sit around and smile.
Congressbot: how long before it learns that working tirelessly for your constituency is its own reward, whereas lying for assorted interest groups is money in the bank? Note: This may be a special case of the Lobot.
Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
Unfortunately, some do.
"It was amazing," said Dr. Heinrich Hienrichson, "Before I knew it, the robot had stolen my credit card, set up an account on Orbitz and booked two airline tickets to Mexico. Now the robot has escaped and my toaster appears to have gone misisng as well..."
----------------------------------- My Other Sig Is Hilarious -----------------------------------
Likely a similar thing happened with dinosaurs turning into birds. The more webbed ones could jump farther and fall farther without getting hurt, and eventually one of them decided to flap its webs and they became wings. Feathers are just longer, more flexible scales, that make flying even easier.
I do agree that what the robot in the article did was not evolution, it was learning. It wasn't even learning a particularly useful form of 'flying', either; it was attached to vertical poles!
--
Seeing is believing; You wouldn't have seen it if you didn't believe it.
Reeinforcement Learning comes to mind.
The "pairing up new combinations" could be an anthromorphism.
"Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
What the researchers did was to build a robot that had wings and motors for manipulating them. These could be controlled by a computer. But instead of writing an explicit program telling the robot how to fly, they got the robot to learn how to fly. They did this using some sort of Genetic Algorithm.
Basically, what a GA does is to generate a large population of possible solutions to the problem, then evaluate how good each one is (i.e. measure the lift each one creates in this example) and then to breed good solutions to create successive generations of possible solutions which are (hopefully) better than the previous generations.
Then, once some criterion is met (for example, once the average fitness of your population doesn't change much for several generations), you then select the best solution found so far as being your answer.
In mathematical terms, GAs are stochastic methods of optimising a function; they are typically used when solving the problem using an analytic method would be problematic (i.e. it would take too long etc.).
So it's not really surprising the robot learned to 'fly' -- the researchers just managed to find an optimal sequence of instructions to send to the wings.
The next step would be to get a robot to learn how to hover without the aid of the stabilising poles; then fly from one location to the other; then fly in a straight line in the presence of varying wind etc.
What the research does do is to lend credence to the argument that insects and birds could have evolved, rather than having been 'designed' by some sort of a God.
"The noble art of losing face will one day save the human race"---Hans Blix
Since the robot did not actually fly, it is not a flying robot.
That's Bigboo TAY! TAY!
i really dig the idea of genetic "learning" simulations. they start with nothing, and eventually can come up with all the same things animals do - including different gaits for walking and running, etc.
this is especially cool, in that they've not only done this in a simulation, but with a real nuts and bolts 'bot. how easy it seems to me now to ship out robots with very little programming, but a quick learning curve. the owner puts the 'bot in its home, punches in a few things it would like the bot to do, and lets it explore a little. after some training, it's perfectly suited to its new job and new environment...
oh yeah. i grabbed a screensaver a while back from this guy that simulates a simple creature learning to walk. pretty spiffy, and you don't have to worry about it ambling off to the parking lot...
- Entertaining Bits from the Ancient Kernel Tree
The really cool things about applications of GP/EA here isn't that it learned so much as the solution it came to. Often times, especially when we're thinking about ways to do stuff in hardware, rather than some simple software algorithm, evolutionary computation results in solutions that we humans wouldn't have thought of.
/. had a story about using FPGAs and EA to program an array of FPGAs to distinguish the difference between "Yes" and "No" (or something to that effect, perhaps on/off). After many generations, the solution it came to not only work, but why it worked wasn't understood by the scientist. The best known human solution for something like that would've taken twice as many circuits. It included factors and variables (like magnetic resonance given off by excluded FPGA chips that weren't part of the circuit, but were still recieving power! when removed, the circuit didn't work) that humans wouldn't normally consider.
A system that evaluates the effectiveness of a solution and refines it from there, that does so using real-world fitness ends up including factors that an engineer wouldn't have thought of. Perhaps because these variables are unknown, or seeminly insignifigant.
A while back, you'll remember,
Man, I love this stuff.
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
"This tells us that this kind of evolution is capable of coming up with flying motion," said Peter Bentley, an evolutionary computer expert at University College, London.
Birdwatches around the world were SHOCKED at this finding.
However, the robot could not actually fly because it was too heavy for its electrical motor.
"There's only so much that evolution can do," Bentley said.
Using these definitions, this robot's achievement pales in comparison to my evolutionary process which lead my body to the ingest a jelly donut covered in sprinkles this morning. Since I never had one of those before, the only explanation is that I naturally evolved to the point where I wanted to attempt the ingestion of such an object.
Seriously, guys, this is nothing but cheap heat for a worthless techie. Move on.
Falling with style ;-)
Send lawyers, guns, and money!
Comment removed based on user account deletion
Learning to fly by trial and error is fine... learning to land by trial and error might get you in a bit of trouble though.
Although what you say do make sense more or less I would like to know which University that you do work at and what you guys have done. Everything that one does, does not need to be cutting edge. Not much of a point in learning how to speak, walk, or drive a car.
These guys probably had a lot of fun doing what they did, and I assume they are not up to MIT standards (not many are). Don't blame them for whatever a reporter might blurb out.
I think the robot simply had a laugh sensor and just made variety of different motions until the laughter of the audience reached a certain threshold. The Moon Walk was a runner up.
To make matters worse, the best genes are not propagated as it would be in a genetic algorithm, they tend to join cults or trailorparks and produce offspring at an alarming rate...
This article is interesting, however, because it moves the agents into the physical world where it isn't possible to obtain the same kind of idealized environments that are possible in silico.
Amazing magic tricks
When jerkychew takes over the world, he will be twitching and muttering, "I tried to warn them! I did! THey didn't listen..."
[o]_O
"How Robots took over the world" circa - 2051.
Electronic edition, of course.
If your bitterest enemies are people who hack the heads off civilians, then I would say you're doing something right.
Either that, or program it how to miss the ground.
The Internet is generally stupid
1.Equiping a test subject with wings short-circuits the most intreguing part of the experiment.
2.Equipping a winged test subject with a moter too heavy to maintain loft is stupidity at work.
3.Thrust is not lift. Flight requires both, but this was thrust. The robot recreated 19th and 20th century flying machines. They didn't work either.
4.Horizontal stabilizers (vertical rods) are not considered to have been available during the evolution of flight.
The test is intriguing, for sure. But to bill this as AI learned flight is either poor press coverage, or a scientist seeking funding through an uninformed press.
--- "1.21 Jigawatts!" -Doc
It's not really that hard to learn locomotion in a continuous environment, where you can improve a little bit at a time. Swimming and crawling were done years ago. Basically, you formulate the problem in terms of a measurement of how well you're doing, and provide a control algorithm with lots of scalar parameters that can be tweaked. You then apply a learning algorithm which tweaks them, trying to increase the success metric. Any of the algorithms for solving hill-climbing problems in moderately bumpy spaces (genetic algorithms, neural nets, simulated annealing, adaptive fuzzy control, etc.) will work.
There are limits to how far you can go with this technique, and they're fairly low. Gaits that require balance, such as biped walking and running, require more powerful techniques. Any task that requires even a small amount of prediction needs a different approach. Rod Brooks at MIT has explored the no-prediction no-model approach to control thoroughly, so we have a good idea now what its limits are.
(* Come on... Learning how to flap your wings isn't the same thing as flying... you should change the name of the story to something "Robot learns how to flap its wings". *)
Better yet, "Robot learns to generate lift by flapping its wings".
You are right in that there is much more to flying than simply generating lift.
But, the article stated that it couldn't fly because the motor was too heavy. But, there are bug-bots that *can* fly by flapping IIRC. Perhaps the two teams should get together.
Table-ized A.I.
I am trying to teach a robot to go, "Bok Bok Bwaaaahk Bok Bok."
If I succeed, do I get a slashdot story?
Table-ized A.I.
..to yesterday's item, "Scientist Crushed To Death By Falling Robot In Failed Flight Attempt"
~Philly
You are right about the GA, but this is closer to Genetic Programming than GA. GA evolves the 'answer', but GP evolves the 'solution' to the answer.
:)
There's a difference, GA is much easier to program than GP and is usually much faster. Example of a good candidate problem for to use GA to solve would be the travelling salesman problem, while GP would find a method to solve a problem.
While fundamentally pretty similar, GP is slightly more complicated. You have to deal with issues such as program over growth during evolutions, which doesn't happen in GA.
http://www.genetic-programming.org/ is a good source to learn more about GP.
I took a class on GA and GP while in college, very interesting stuff.
geek page at KY speaks
In biological evolution, the figure of merit is approximately reproductive success. Evolution works by favoring genes that get themselves copied a lot.
Exhaustive search would be the obvious way to find a true global maximum in this sort of problem, but often the cost-per-tuple of evaluating the fitness function is non-trivial. In cryptographic key searches, the fitness function is a Dirac impulse which is one at the correct key and zero everywhere else, so near-misses don't help you to find the global maximum. (This isn't strictly true; many crypto algorithms have classes of weak keys, but that's a diversion for another time.)
Another partial search algorithm, aside from GAs, is simulated annealing. Yet another is the backpropogation algorithm used to find good sets of weights for neural nets.
As the crypto example illustrates, these partial search algorithms rely on gradients of the fitness function, where near-misses have higher fitnesses than wild-ass misses. One of the things one does when using a GA as a design tool is therefore to try to select fitness functions with gently sloping gradients throughout the space of solution tuples.
WWJD for a Klondike Bar?