Goals at a glance:

Challenges:

How the Challenges are addressed (or Divide and Conquer):

This project consists of 3 primary challenges, each is broken up into smaller bites for easier consumption.

The mechanics:

This particular portion of this project has me stepping out of my comfort zone, as such I am learning a lot about mechanical stresses and servo/stepper motor design. The reason I chose to do this portion of the project first is twofold. The initial idea behind the AI is to use an instinct based system in what I have dubbed "Squirrel". One way to go about this is to design the body that will be used in order to understand what the best instinct choices would be. I considered simulation, but what fun is that? I have broken up this task into several parts.

  1. Design and construct the brain layout as this will dictate the proportions of the rest of the robot.
  2. The second task will be to design and construct the lower track system and implement the mechanics required to allow for locomotion. This is also where the battery is located in order to keep the center of gravity low.
  3. Design and construct the body portion that will allow for a vertical movement of the head and arms. In the "chest" there will be a compartment that contains the DC motor controllers as well as any electronics that did not fit into the head unit.
  4. Design and construct the arms. In this area I am planning on implementing a 5 degree of movement limb. Two in the shoulder join, 1 in the elbow, two in the wrist. Part of the challenge in this is to be sure that the robots arm is strong enough to lift small objects while also keeping their weight very low.
  5. Design and construct the "hand" section. In this area I am looking at several techniques that can be used. The first idea is to implement a modified 3 digit gripper design. This gripper will be controlled by control lines in order to keep the weight to a minimum. Other ideas considered include vacuum systems, and “coffee filled balloon” systems.

The mechanical construction will be made of easily obtainable aluminum stock when practical, other components will be 3D printed in PLA or modified from purchased components when convenient and economical . The idea is to make this project easy to duplicate by others.

The Voice/audio recognition system:

I am choosing to stay away from standard voice recognition systems so that I may explore and come up with something slightly different. Many of the already robust and available systems on the market require an online connection or are very complex in their design. One of the design choices already in PAL is to include a Raspberry PI 3b as the primary computer, this will allow many of these other systems to be implemented should anyone constructing their own PAL wish to adopt a more standard approach.

This part has two primary components, a speech output system and an audio recognition system. I say audio recognition as the way this is implemented is that a sound is broken up into key frequency blocks and the db levels of each of these blocks is then analyzed with the result being shipped off to the primary computer.

  1. The Voice will be relatively a simple system consisting of a TTS256, a speakjet, and a pic16f1459. The pic16f1459 is used as a USB to serial converter as well as other duties in the audio recognition. The signal is then piped into an lm386 op-amp before being output on a small speaker located on PAL.
  2. The Audio Recognition system uses a series of band pass filters in order to break up the signal into "chunks". These chunks are then fed into the pic16f1459 IC and the ratio signature is compared to a lookup table. The result of this lookup is then fed via USB back to the Raspberry pi 3b where the data can be used by the AI.

The AI:

This is one of the most challenging aspects of the system. The AI uses what I am going to call "instincts". These instincts are small routines such as moving an arm 5 degrees, or a wrist 1 degree, moving the head, going forward, going backward, etc. The robot uses these instincts to overcome obstacles in its environment according to the flowchart below. It remembers past sensor values and uses these "memories" to dictate things to try first. PAL will also attempt to gradually optimize these procedures as it gets the chance when encountering similar situations.

In the AI, I also plan on implementing a set of variables that represent "emotional states". These states will help dictate the purpose of Pal's actions as it attempts to explore the world around it. In essence, these are PAL's motivation.

How does this solve a problem?

The final goal of PAL is to create a learning AI system that can eventually be taught to perform tasks. This teaching will not be through direct programming, and instead will be through a more natural environmental process. PAL will in essence be a self programming machine that can learn and grow as the tasks and environment change. The platform I am creating will be used to further the design of the learning AI and it is my hope that others will be inspired and build their own version of PAL and continue down the path of this amazing subject.

TABLE OF CONTENTS:

More information can be found in the project logs. A table of contents is below with the various logs broken up into one of the four topics. More recent logs are placed lower on each list. In the name of being open I am including the mistakes as well.

Mechanics:

Audio:

AI:

Misc:

License:

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 United States License.



==========================================================

The Original description has been left in order to explain some of the background and reasons that this project was started.

==========================================================

In these images are born the spark of an idea. An idea that began with a child's imagination and a certain movie I saw in the 1980's. This movie left me with many questions such as "What is a robot... really?"

In my 8 year old excitement, my parents purchased a "robot" from radio shack which I received that Christmas.

It was a simple device, and indeed could not do much of anything. I tore it apart, much to the shock and horror of my parents! I had to see if I could improve it. The casing was empty save for a few circuit boards and a motor. I was disappointed. There had to be more to robotics.

Over the years I have seen many devices that people have claimed to be a robot, and most of them appeared to be nothing more than fancy remote controlled toys. These devices are fun, but do they represent what a robot actually is? Do they represent what a robot can actually be?

I began looking at artificial intelligence. Most of these systems are fairly complicated software that runs on high end hardware. This equipment is outside the price range of most, including myself. Is there a way to simplify this? Is there a way to make the systems more economical for the average hacker or maker?

Like most of my projects, I began looking at life as the model. First, how does a single cell organism respond to stimuli? Second, how does a more complex organism respond? How do animals, including humans, learn? Do animals remember their actions that worked and those that do not? What about evolution, can this concept be implemented into the learning system to allow the robot to grow?

If this is the case, how should it start? Most animals have a base set of instinctual behaviors to fall back on. The baby deer can walk almost immediately after birth, the piglet knows where to go for food, humans know to cry when something is wrong.

Like a newborn learning that it has hands and feet, PAL will be simplistic in its early responses. As time goes on and more situations are explored and discovered, PAL will learn to adapt and overcome these challenges.

There also has to be a motivation for PAL to do something. Food gathering? Information acquisition? These too will be part of the system. In the great words of one of my favorite robots, Need Input! PAL will crave to explore and discover new situations, and also learn where to find food (recharge the batteries).

Emotions, responses, thinking, learning, and remembering are a few of the goals of this project. PAL will expand and grow as my understanding of the concepts expand and grow. Like the learning system flow chart in the logs, things will be changing and moving towards the end goal of building a completely autonomous self programming machine.

Maybe one day such a machine can help those who are in need, perhaps talk to people or listen. Such a robot could help students learn about design and programming beyond a simple scripted solution to a problem.

I am keeping everything open source, so that as the project grows, others may attempt to blaze their own trail into what it means for a robot to learn and grow beyond being a fancy remote control toy.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 United States License.

To make things easier to read, I am breaking the project into different "projects". Please see the instructions for links to each section.

More to come! :)