Jack Crossfire's daily updates on his autonomous helicopter project are alway fascinating, but today's is even more impressive than most. It describes how he uses a neural network to take the inputs from his acceleromters, gyros, magnetometers and GPS and turns that all into an output to the heli that keeps it stable in any direction.7 Comments
Add a Comment
© 2009 Created by Chris Anderson
Neural nets and kalman filters are both statistical techniques that are intended to generate useful control signals from noisy input data. The advantage of a neural net is that it can work with an arbitrary set of inputs and outputs, whereas the kalman filter works from a dynamic model that explicitly defines the relationship between inputs and outputs. Computationally, the neural network is actually quite simple - it's just a collection of numeric "weights" that determine how much of each signal from each layer is fed forward to the next layer. The trick is in establishing the weights through a "training" process, generally conducted before the aircraft ever leaves the ground.
I haven't found much literature on neural nets that's particularly helpful in providing a starting point in understanding - most discussions are conducted at the grad student / post-doc level. My approach was to start with a simple neural network software library and build some simple networks to see how things worked. There are some accessible libraries in Python, e.g. http://pyrorobotics.org/?page=PyroModuleNeuralNetworks. I can dig up some other links, or maybe Jack has some suggestions. In any case, it's an interesting technique that actually dates back to the 1950's, progressed significantly in the 80's, and recently has made a strong comeback as the core technology for most evolutionary robotics projects.
The 324 pixel mouse sensor to which he refers is an 18 x 18 pixel array that takes a picture at up to 1500 frames per second, and is the core of most optical mice. Some researchers have taken these close range sensors and added a long range lens. The mouse sensor is a $1 chip (e.g. Agilent ADNS-2610), and there's a nice DIY article on hacking an optical mouse to create one of these "optical flow" sensors for robots - http://home.roadrunner.com/~maccody/robotics/croms-1/croms-1.html
Here's a nice technical paper about the application of these sensors to UAVs - www.ee.byu.edu/faculty/beard/papers/preprints/BarberGriffithsMcLainBeard05.pdf