Close

Squirrel Robotic OS flowchart

A project log for P.A.L. - Self Programming AI Robot

P.A.L. : Personable Autonomous Learning - Self Programming Robot that learns and grows - Each robot developes a unique personality.

thundersqueakThunderSqueak 07/02/2016 at 00:151 Comment

This is an image of the initial flowchart for the robot's "OS". Instincts will be a list of basic actions such as moving an arm 10 degrees (I am going to put them in 10 degree increments at first for each motion), or saying a word from a known word list. The flowchart below is not all inclusive, but was a rough outline to give some direction for the code. There will also be some housekeeping functions such as updating mood on a success or failure.

I know this is a very simplistic learning system, but hey, we all have to start somewhere :) To handle the "nothing is subtracted" during optimization, I was simply going to add 1 to the random number generation. This way, if there are 15 elements in the array, and a 16 is rolled, then nothing is subtracted.

The situation file will be of a standard text file format, very human readable.

<situation number> <worked more than once> <sensor 1 status> <sensor 2 status> <sensor 3/etc status> <comma separated list of instinct numbers in array>

The instinct list will include things like

<instinct number> <sub system designation number (servo, voice, etc)> <actions to send to that device in a command string>

All actions are sent over and received by a standard serial communication. This is to make things easier to monitor and keep everything the same should I need to troubleshoot. The system can control 32 servos and has a number of other GPIO pins that can be addressed in this way.

Discussions

JosiahWalker wrote 08/03/2016 at 09:33 point

Something interesting I picked up from a behaviour learning robotics group: you can define a transformation between a robot behaviour flowchart and a decision tree (in both directions). The reason this is useful: say I have a situation M1 where when sensor S1 > x (for some unknown x) action A1 results in situation M2, but when S1 <= x, A1 results in M3. If I have built a decision tree, then this becomes a simple single-variable regression on S1 at some point in the tree, making it easy to "learn". Then I can transform the tree to a flowchart and run the flowchart on the robot (preserving all logic). The guys I saw doing this were mixing learning from 2-5 demonstrations with flowcharts to get super-fast behaviour teaching working this way.

  Are you sure? yes | no