Robbie's computer is still broken so I
was able to catch up on some tasks I never had time for.
The potentiometer were never very
accurate I have designed magnetic encoders as a replacement they are
more accurate and and just plug in the the existing structure they
will be fitted on the next rebuild.
The overall control was a very hard to
maintain and expand natural language is not very good with robot
control some verbs are shown as nouns thus wont be interpreted as
commands. In NLTK you can define what words are verbs or nouns but
maintaining the files is troublesome, I tried pattern_en but it
suffers from the same limitations. I also tried WIT a online language
processor the learning curve is too steep and I wanted a local
solution. Robbie's chat engine on the other hand works well.
I never really looked into pyaiml's
capabilities but it can run system programs with command line args.
For testing I reduced the loaded aimls to two one for commands the
other for general response.
Of course that just puts me back to
where it was before but with a lot more potential. Pyaiml will throw
a error message for a unknown command I made it so it will append the
command to a aiml file I only have to add the meaning later I can
automate this but for now I want control over
it, this sort of gives me a learning robot.
One of the
intriguing possibilities is to query Knowrob ontologies.
For
now I can add the name of a person from the face recognition node.
Next
task is to make a semantic map and name the objects so when asked his
location Robbie will answer “near the desk in the garage” not x,y,z.
All
of Robbie's physical task are now controlled through behaviour trees
program with action servers any task can be pre empted and resumed
if there is a fault or error condition. The behaviour tree also
monitors and controls Robbie emotions tasks will give pleasure doing
nothing will result in boredom, when boredom reaches a certain level
Robbie will do a random task that varies from uttering a quip using a
Markovian chains, moving his head or arms to driving around in
circles.
Using
simulators like Rviz and Gazebo has made these tasks much easier.