Labels

Thursday, February 21, 2013

Starting to think of the Robotic SW that I will use

So far, I haven't said much about what software will run where in the Robot that I am working on.  In the back of my mind, I am intending on learning a bit about some Artificial Intelligence (AI) techniques.  The AI technique that I will be using is Blackboard.  Imagine for a moment that you have several mathematicians sitting in front of a blackboard trying to solve a math problem.  At any one time one of them will get up and put part of the resolution on the board.  There is no  communication between the mathematicians other than through the blackboard.  There might be a secretary who puts the original problem on the board, and perhaps another secretary that records the solution when they are finished.  But event the secretaries do not have to communicate with the mathematicians.  This is kind of the idea of how a blackboard works.

In my Robot example there would be Knowledge Sources (those elements that do the thinking) that grab sensor information and place it on a global data area (the Blackboard).  Other Knowledge Sources would try to make sense of the information and place updates onto the Blackboard which in turn triggers different Knowledge Sources to act.  Sometimes the Blackboard information would change so that still different Knowledge Sources would output the information to actuators (wheels, servos, etc.) to act upon the information.  In fact, which Knowledge Source goes next could be decided by different Knowledge Sources.  This is kind of the idea that I will use.

The pattern for the Blackboard architecture will be based upon a paper, "Two complementary patterns to build multi-expert systems" by Philippe Lalanda. Additional papers will be added as I progress.  I do know that whatever I come up with will have to have a distributed capability - my plan was use one RPi as a camera sensor/image processing element, a second RPi to control motors and servos, and a third RPi to do the thinking.