Here's a quick blog post to help poeple get started using an AIML based InMoov in MyRobotLab...
To keep things simple this will go over downloading the "latest build" , cloning the pyrobotlab github and launching the Harry.py script
Some key features of this are that each InMoov gesture is defined in a separate file (checked into the pyrobotlib project) and that the spoken responses and actions are managed by ProgramAB and defined by the chat bot named "harry" ...
Step 1.
download latest myrobotlab build and do the typical "install all" for the services. hopefully that's all worky
Step 2.
clone the pyrobotlab repository with the example "harry" chat bot.
git clone https://github.com/MyRobotLab/pyrobotlab.git
Step 3
find the file in the pyrobotlab github /home/kwatters/Harry.py and edit the "aimlPath" and "gesturesPath" variable to make sure it's pointing to where you've cloned the pyrobotlab project.
update the left/rigth ports setting in harry.py and add any servo min/max settings as you normally would.
Step 4
run the harry.py script.
Notes:
ProgramAB expects to find aiml files in the proper location so that i can load the bot.
Assuming you've installed MyRobotLab in the "C:\MyRobotLab" directory for these instructions
Normally MyRobotLab when it installs the ProgramAB service , program ab will install programAB stuff into the following directory:
c:\MyRobotLab\develop\ProgramAB\
It has 1 subdirectory where the bots are stored
c:\MyRobotLab\develop\ProgramAB\bots
Each bot's brain has it's own subdirectory. the default ones are listed below
c:\MyRobotLab\develop\ProgramAB\bots\alice2
c:\MyRobotLab\develop\ProgramAB\bots\currentevents
c:\MyRobotLab\develop\ProgramAB\bots\jokebot
c:\MyRobotLab\develop\ProgramAB\bots\wndef
Admitedly, you probably only care about the "alice2" bot..
each bot has it's set of "aiml" files.
Those are expected to be in the following directory
c:\MyRobotLab\develop\ProgramAB\bots\<bot_name>\aiml
Replace "<bot_name>" with the name of the chat bot that you want to make available.
ok.. now lets say your "ProgramAB" directory is stored somewhere else. for example.. if it's in the pyrobotlab project.
Lets say you cloned "pyrobotlab" into a director like "C:\pyrobotlab" ... In order to tell ProgramAB that it should look in a different directory you can use the ProgramAB.setPath(path) method.
so you could update the aimlPath in the harry.py script to say the following:
aimlPath = "c:/pyrobotlab/home/kwatters/harry"
aimlBotName = "harry"
aimlUserName = "Kevin"
harry = Runtime.createAndStart("harry", "ProgramAB")
harry.setPath(aimlPath)
harry.startSession(aimlUserName, aimlBotName)
If you look at the directory structure of the c:/pyrobotlab/home/kwatters/harry folder you'll see 2 subdrectories.
c:/pyrobotlab/home/kwatters/harry/bots/
and
c:/pyrobotlab/home/kwatters/harry/gestures
the "bots/harry/aiml" folder has the aiml
the "gestures" folder has the gesture python files.
In this case we're replacing the normal default directory of "c:\MyRobotLab\develop\ProgramAB" with "c:\pyrobotlab\home\kwatters\harry"
this is done with the "harry.setPath(aimlPath)" command...
Thanks for the comunity, it's
Thanks for the comunity, it's a great job ! i look at this with attention. I will try to make a ready to start package for users, with other stuff.
Maybe I add your recomendation : strandardize by angle. So do I need to edit all gestures or I must wait some Inmoov service modification ?
Thanks Kevin for writing this
Thanks Kevin for writing this post!
I now got it working properly, what need to do now is to modify some stuff to avoid double speaking as I mentionned to you on the chabox.
Thanks again for the great work!
Problem trying to run Harry.py script
Hello, I am having a problem with kwatters Harry.py script. When I run it this is the error that I get
ear.addListener("publishText", python.name, "heard");
Traceback (most recent call last): File string, line 60, in moduleNameError: name python is not defined at org.python.core.Py.NameError(Py.java:284) at org.python.core.PyFrame.getname(PyFrame.java:257) at org.python.pycode._pyx3.f$0(string:98) at org.python.pycode._pyx3.call_function(string) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyCode.call(PyCode.java:18) at org.python.core.Py.runCode(Py.java:1386) at org.python.core.Py.exec(Py.java:1430) at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:267) at org.myrobotlab.service.Python$PIThread.run(Python.java:177)------
harry.py
I cant launch the hary servico also, i guess the path for the programAB is not correct but i cant seem to understand where to configure it!!
Can you help me?
AttributeError: 'org.myrobotlab.service.ProgramAB' object has no attribute 'setPath'
Latest build
The Harry.py script only works with the latest build. it does NOT work with 1.0.1xx builds.
Latest Build is here : http://mrl-bucket-01.s3.amazonaws.com/current/develop/myrobotlab.jar
Also, available from the link in the shoutbox
Good luck.
comment out that line?
you can comment out that line. or replace it with :
ear.addListener("publishText", "python", "heard")
Odd that there is a semicolon at the end of that line. That's not valid python syntax.
Also, your issue seems to indicate that python isn't running as a service. Are you sure you've got everything installed correctly?
I suspect there's some issue with how your running the script, or how you installed the services or somethjing like that.
comment out that line?
you can comment out that line. or replace it with :
ear.addListener("publishText", "python", "heard")
Odd that there is a semicolon at the end of that line. That's not valid python syntax.
Also, your issue seems to indicate that python isn't running as a service. Are you sure you've got everything installed correctly?
I suspect there's some issue with how your running the script, or how you installed the services or somethjing like that.
reply
But isnt the 1.0.119 the latest build, what u mean by doesnt work with 1.0.xx :)
i think my problem is the path bor the ABprogram
also ive been seeing, that acapela doesnt work in linux... maybe thats the problem im using ubunto atm