Asked
— Edited
This thread contains the more recent information about EZ-AI.
For information about EZ-AI visit http://www.ez-ai.net
And visit the plugin page at https://www.ez-robot.com/EZ-Builder/Plugins/view/123
Thanks for your work on this..
He is working on a project that revolves around speech recognition and databases on the Android. When he gets done, I am going to buy him a few dinners and pick his brain.
I am interested in your application, but I need time to understand.
I 3rd that.
You are offering something I want, but I am not on your level of pc communication.
I am building a new bot that I want to have more communication and awareness, like you are doing.
Thank you for your work.
Steve S
If you have already installed EZ-AI prior to the date of this message, you have one of two options
Option 1.
You will need 2 files to run a patch to do this for you.
you will need to grab these two files and place them in the correct location.
PopulateActivityTable.BAT can be placed in the C:\EZ-AI directory
SetupActivityTable.SQL can be placed in the C:\EZ-AI\Install directory.
Once these two files are in place, start the PopulateActivityTable.BAT by double clicking on it. Your Activity table will be populated with the the values that are listed in Option 2.
Option 2
An alternative to doing this process is to manually make these entries using the EZ-AI interface.
Check Dates 1440 1 120
Timers 1440 10 120
News 1440 14 120
Weather 60 14 120
Traffic 60 16 120
Reminders 1440 1 120
Rhymes 10 0 6
Songs 5 1 120
I want to use a smart phone for my robots brain.
I'm I doing something wrong or am I missing something?
Thank you.
Are you saying that ARC is launching ez-ai?
Do you have team viewer installed? If so, I can connect and see what is happening.
Merne, I want to thank you for allowing me to see what was happening. I also think I will take you up on that offer from last night. It will let me focus more on programming.
I should have a new version out this evening.
Thank you again David for your awesome database and your help configuring it.
There will be a small patch to the database and a new executable. I will get with you this evening. After we know this fixed the issue, I will make changes to the install.
Thank you for helping to find these.
As soon as possible, I will be using this on an inmoov and an xlr1. My wife and daughter are actually getting interested in ez-robot because of what EZ-AI adds to ARC. I have been able to show how this can be useful to them. This may open the purse strings a bit more
Source code for EZ-AI
Add screen to see ActivityLog data and allow the user to clear the log for certain users or truncate the log
Add screen to see SongLog data and allow the user to clear the log for certain users or truncate the log
Add screen to see RhymeLog data and allow the user to clear the log for certain users or truncate the log
Change usp_GetNextActivity to account for songs being disabled in ARC
Redesign the FamilyRelationship screen to make it more usable.
Find logo and image for EZ-AI
Add help screen with version and contact information
Add screen to allow users to input data into the TimerEvent table to allow keyboard entry to set timed events for themselves or others. Its easier than doing this via voice commands but voice commands in ARC will still be possible.
Allow more than 50 characters for the Reminder.Text field and TimerEvent timer description fields.
Here is a video of associative memory running on our Ai core, its pretty useful.
Tony
This is one of the great things about ARC being a PC based application instead being compiled and pushed to a controller. Being able to access multiple websites to harvest data gives the app so much "smarter".
Thanks for the recommendation. It is a great one.
start.csail.mit.edu/index.php
The great thing here is that the (answer) data comes back in a form that is easy to parse.
Because our Ai is Dragon DNS speech recognition based, I can ask for anything in speech (when in dictate mode) and the Ai attempts to find the answer via a smart parser. Doing this with Windows speech recognition (engine 6) will not be so easy as its dictation mode (for me anyway) does not work so good.
Our Ai also uses Freebase which is a cut down version of Wikipedia for knowledge based systems.
https://www.freebase.com/
Hope this helps.
Tony
Don't want to hijack the thread, but question about using Dragon DNS. Do you have a Nuance developer license, or have you found another way to tap into Dragon Dictate without using their API?
I would LOVE to use Dragon on my EZ-B robots, but I doubt it is worth having DJ pay for Nuance developer licenses which would only be used by a small percentage of users, and he has enough on his development plate to worry about...
Alan
Patch 1.0.0.1
These items have been addressed/added.
Added screen to see ActivityLog data and allow the user to clear the log for certain users or truncate the log
Added screen to see SongLog data and allow the user to clear the log for certain users or truncate the log
Added screen to see RhymeLog data and allow the user to clear the log for certain users or truncate the log
Changed usp_GetNextActivity to account for songs being disabled in ARC (see the sample project).
I put in an icon and image for EZ-AI and listed the version on the intro screen.
Made change to allow for up to 4000 characters for the TimerEvent name field which is used when reminding a user of something.
Added a screen to allow users to input data into the TimerEvent table.
Added a help screen which has some use information on it at the bottom along with install instructions. I will be spending some time on actual instructions in the near future.
I have also updated the souce code zip file and EZ-AI.ZIP on cochranrobotics.com, and updated the ARC project to handle these changes.
I will definitely check this out. Thanks so much for pointing me in this direction.
On freebase, I dont know if you are using their API's or not. I have decided to tackle this after March 31'st because they are discontinuing the API's at that time and replacing them with something else.
freebase api support
I dont know Googles plans but it looks like they have something in store. Their apps on their site are ending at about this same time.
I will look into SMART more, but for some reason, when I post a query, I am not getting back the results. I am still looking into it with the help of the wonderful people at your local internet.
My dream is for my robot to be like a friend that is fun to be around and educational at the same time.
That would make him great for children.
My sister's grandchildren already love my robot.
Him talking with them about things they love would be even fun for them.
Education could be made so much more fun if their robot friend was teaching them something everyday.
If their faces were trained in RoboRealm avm, and if you had ez-ai installed, you could use a couple of features of ez-ai to do this.
Reminders can be setup to tell or teach them something on a timer. This could be setup to run every minute to every year if you want.
Rhymes can be used to tell or teach them something that would be repeated later after all of these "rhymes" have been told to them. All of these are spoken based on the age of the user.
Songs can be used to play an mp3 or wave file to teach them something that would repeat later after the rest of these "songs" have played. Each song is based on the users age.
Another possibility is to add an event timer which would tell a specific user a message. Once the message is spoken, it won't be repeated.
I want to think of a game to program into ez-ai but haven't come up with a good enough idea yet. The thought is that the same question wouldn't be asked to the same user until all of the possible questions have been ask. I don't know if I want this to be a star wars trivia game or something like a math game. I kind of like the star wars trivia idea but I want it to be more educational.
Robot trivia could be cool though.
Adding an engine like Tony mentioned would be cool for more interaction with the robot.
Another thought I had was to allow the database to store animation names from ARC. This would allow you to specify an animation to run based on the action that is returned from EZ-AI to ARC.
Alan, yes we are a DNS developer and it does cost some money to be one, but you do get great technical help from Nuance. I guess the problem for EZ-Robot users is that it is probably going to cost them a hundred bucks or so to have that option where the Windows speech recognition is free.
Tony
Yeah, I work with Nuance on an enterprise level, and their support is fantastic. I would be willing to pay the extra, but then again, I already have DNS 13. In some ways it is too bad that DNS changed their model when Nuance bought Dragon. They used to be SAPI 5 (until I think version 8). Of course, at that time Windows speech reco was unusably bad....
Alan
Right now the question pool is only 20 questions. I will be adding more questions and adding more games soon.
I also created the screen to add/edit/remove Star Wars trivia questions which is shown on the second video.
This obviously doesn't have to be Star Wars trivia but can be anything that you want in the form of multiple choice or true/false questions. It records how you did on this one "Test" and also calculates the overall percentage of all "Tests". This could be used in schools, especially for children who have special needs and find it more comfortable to be quizzed by a robot instead of by a human. Like other parts of EZ-AI, the questions are not repeated until the user has gone through all of these questions. Right now EZ-AI pulls the next 10 questions from the question pool and uses these for the current game.
Tomorrow I will work on having the game be able to start some sound at the beginning and then do something if the questions answer is wrong or right using the SoundBoard v4 control I think. I will think about adding the option to run an autopossition command value for each item in the database. This will allow different servo movements for everything that comes out of EZ-AI if you want to set that up.
BTW, this was done with under 100 lines of script in ARC but I think I could get it closer to about 75 with a bit of work. I will publish the sample project as soon as I publish a new EZ-AI. The toughest part is going to be the update scripts for anyone who already has this installed, but I have a day and a half before I go out of town and will try to get everything finished up and a new version available. If you want this, please wait until version 1.0.0.2 is available.
i really need to purchase Redgate Database Compare and their data compare products. It will make the process of identifying the changes to the database and what needs to happen in the scripts to build the updates far easier. I use it at work, and now it looks like I will be buying this.
cochranrobotics.com to download it or for a new install. Patch file is close to the top of the page.
The latest sample project with the Star Wars game in it is available
HERE
The pros to buying the SDK that I see are
Example code
Documentation
Ability to redistribute the DNS dll's with EZ-AI meaning that others who use EZ-AI wouldn't need to have DNS installed
The con is that the SDK is $5000.00.
If I could use the professional version
Pros
The cost is about $700
Cons are
No example code
No documentation
Anyone who uses these features would need to also purchase DNS and I don't know if it would have to be the pro version or not at this point.
I am adding a chat bot like ALICE to EZ-AI. DNS will make it much better to use and it would be on your network so it would be much faster and your own.
I will be adding the ability to pass text that is spoken to a variable in ARC. This could be used to do anything in ARC and would complement the speech engine in ARC.
I will be adding the ability to browse web sites and search for data on the Internet about spoken words.
More things will come based on requests.
The purchase of the SDK would require me to start charging for EZ-AI to help cover the cost of the SDK. I would be willing to trade 3d printing or other things that will allow me to continue building robots. The $5K would eat into my funds that I have put back to buy 3D printers and controllers, servos, etc. it would however allow me to distribute this work far easier.
I am looking for the level of interest that there is in this project so that I know which direction I should take this. If you are interested in using EZ-AI, and would be interested in trading for this app, or would be willing to drop say $50.00 to $100 on it, please post. I appreciate it.
I'll chech the script for pushing the questions Monday night. I let another program script that part instead of doing that part of the scripting myself. I'll write it and get it to you on Monday.
Alan
$100 is a bargain for good AI.
We need 50 people who will pay $100 or 100 people willing to pay $50.
I also have the text that is coming back from the chat bot being spoken. I will figure out how to do an sayEZB through the application before releasing it.
I also am trying to use the System.SpeechRecognition object to try to understand what is being said and pass that into the application. This is being a bit of a pain and I need to spend some more time understanding the grammer objects. I choose the system object because it is my understanding that it uses the normal grammer objects from the windows operating system. I had hoped that this would allow a far larger speech library to use, but it is acting like it isn't loading the OS grammer objects. I may end up going with the Microsoft.SpeechRecognition object because it is easier to deploy with your application but I would need to figure out how to load a good grammer library.
I am still considering the DNS Developer kit. I just find it hard to drop the money on it. Also, I will see if the google API is available or if it is only for android.
On the android front, I just spoke to my son about how they are programming their app (using an Android and speech recognition to query a database). They have just started working on it and probably wont be done until June. I will probably wait until they learn from their programming efforts before I jump on it. One cool thing that they are planning on doing is using the GPU on the android device for the query functions. If they pull it off, that would be the route I would be going down. This will keep the CPU on the android available for normal functions.
There is an EZ-AI window that will popup and show you the confidence level and what it thinks you said. You will see the information that comes back from the chatbot in the window also. The chatbot will end when you tell it goodbye.
As this would be your own chatbot(s) you would be able to add new responses in the form of AIML. There are some AIML editors out there that are about as simple as Excel to use. Because this chatbot would reside on your network or even on the machine that your robot is running on, there are no issues with network latency or with someone elses site being unavailable due to low wifi signal in an area or any other network connectivity issues.
I will polish it up a bit tonight and post a video of it working.
The current AIML files for robot responses that are loaded are
AI.aiml
Biography.aiml
Blackjack.aiml
Bot.aiml
Botmaster.aiml
Computers.aiml
Date.aiml
Default.aiml
Emotion.aiml
Food.aiml
History.aiml
Inquiry.aiml
Integer.aiml
Interjection.aiml
IU.aiml
Knowledge.aiml
Literature.aiml
Luckyslots.aiml
Money.aiml
Movies.aiml
Multiple.aiml
Music.aiml
Parts.aiml
Philosophy.aiml
Predicates.aiml
Reduce.aiml
Reductions.aiml
Religion.aiml
Salutations.aiml
Science.aiml
Spam.aiml
Sports.aiml
Stack.aiml
Stories.aiml
That.aiml
update.aiml
Wordplay.aiml
Yours can be very different and can also have information added as you see fit through the UI that comes with the chatbot.
Until then...
Steve.
The chatbot piece of this install is a pain to write an install document for. I am going to go through it and install it on a non dev machine before I would recommend you downloading it. Just so you can see what I am looking at... This isnt complete but gives you an idea of what you're in for.
Steps to install the chatbot
To use the chatbot you will need Program-o which requires that you have a MySQL Instance installed. MySQL can be downloaded from MySQL. It is advisable that you get PHPAdmin for MySQL from phpMyAdmin but it isn't essential.
Follow these instructions for enabling IIS (the webserver that is in windows) http://www.howtogeek.com/112455/how-to-install-iis-8-on-windows-8/ You will come back to configure IIS for PHP and for your website after the program-o install. For now, just have it installed and running.
Install MySQL using the options left in this document below. I have removed the ones you do not want to choose. Screen shots of each step of the install can be found at http://dev.mysql.com/doc/refman/5.6/en/mysql-installer-gui.html
--------------------------------------------------------------------------------------------
# Upload the files to your server, to the directory of your choice.
step 2 - Create the Database
--------------------------------------------------------------------------------------------
This step will vary, depending on whether you're installing locally or remotely, and also on
where you host your remote installation.
For local installation, access your local MySQL database server through the tool of your choice
(e.g. the MySQL Toolkit, phpMyAdmin, etc.), create an empty database and note the name; then create
a user/password for that database with full permissions.
For remote database creation, it's highly recommended to contact your hosting provider for details.
Often times you will need to log on to a "Dashboard" or "Control Panel" page in order to create
the remote database, and there are literally dozens of different versions, each with their own way
of doing things, so trying to outline remote database creation here would be near impossible.
Please note that we STRONGLY suggest the use of phpMyAdmin for monitoring, maintaining and working
with your database IN ADDITION to the admin pages. The vast majority of hosting providers
offer phpMyAdmin as a part of your database package, so contact them if you're unsure about
whether you have it. For local installations of phpMyAdmin, visit http://www.phpmyadmin.net
for detailed information on installing and usint this very powerful and easy to use database
management tool.
MySQL Installer simplifies the installation and updating process for your MySQL products on Microsoft Windows. From this central application, you can view, remove, update, and reconfigure the existing MySQL products on your system. MySQL Installer can also install plugins, documentation, tutorials, and example databases. The MySQL Installer is only available for Microsoft Windows, and includes both GUI and command-line interfaces.
The supported products include:
MySQL server (one or multiple versions)
MySQL Workbench
MySQL Connectors (.Net / Python / ODBC / Java / C / C++)
MySQL Notifier
MySQL for Excel
MySQL for Visual Studio
MySQL Utilities and MySQL Fabric
MySQL Samples and Examples
MySQL Documentation
MySQL Installer is also installed and remains on the system as its own application
Installer package types
Full: Bundles all of the MySQL products (including the MySQL server). The file' size is over 200MB, and its name has the form mysql-installer-community-VERSION.N.msi where VERSION is the MySQL Server version number such as 5.6 and N is the package number, which begins at 0.
Installer editions
Community edition: Downloadable at http://dev.mysql.com/downloads/installer/. It installs the community edition of all MySQL products.
MySQL Installer is compatible with pre-existing installations, and adds them to its list of installed components. While the standard MySQL Installer is bundled with a specific version of MySQL Server, a single MySQL Installer instance can install and manage multiple MySQL Server versions. For example, a single MySQL Installer instance can install (and update) versions 5.5, 5.6, and 5.7 on the host.
Note
A single host can not have both community and commercial editions of MySQL Server installed. For example, if you want both MySQL Server 5.5 and 5.6 installed on a single host, then both must be the same edition.
MySQL Installer handles the initial configuration and set up of the applications. For example:
1. It creates initial MySQL Server connections in MySQL Workbench.
2. It creates the configuration file (my.ini) that is used to configure the MySQL Server. The values written to this file are influenced by choices you make during the installation process.
3. It can optionally import example databases.
4. It can optionally create MySQL Server user accounts with configurable permissions based on general roles, such as DB Administrator, DB Designer, and Backup Admin. It optionally creates a Windows user named MysqlSyswith limited privileges, which would then run the MySQL Server.
User accounts may also be added and configured in MySQL Workbench.
5. If the "Advanced Configuration" option is checked, then the Logging Options are also configured. This includes defining file paths for the error log, general log, slow query log (including the configuration of seconds it requires to execute a query), and the binary log.
MySQL Installer can optionally check for updated components and download them for you.
***Add instructions for configuring IIS to allow PHP***
step 3 - Run the installer
--------------------------------------------------------------------------------------------
All that's required is that you point any major web browser to your newly created
Program O directory (e.g. http://www.example.com/ProgramO/) and the install
script will do the rest. Just follow the prompts, and supply the necessary
information in the forms provided.
step 4 - Upload the AIML files
--------------------------------------------------------------------------------------------
To perform this action when the installation is complete, go to the admin page
(e.g. http://www.example.com/ProgramO/admin/) and log in with the admin credentials
you provided during the installation process. Then select "Upload AIML" from
the left nav menu and follow the prompts.
You are doing some really great work here, your EZ-AI is getting more powerful every day!
Tony
Cheers
Richard
The only thing left to write up is how to setup the chatbot to run in IIS. IIS is a bit of a pain.
Thank you for the compliment. It will take some time to get anywhere close to what yours is, but I have some time. My robot parts will not show up for a few months so I am focusing on EZ-AI.
I think the next thing that I am going to work on is reading UPC codes to identify items with UPC codes. There are some international upc code databases and I am not sure if I will house these in the local database or if I will use one of the sites on the internet to do lookups. I plan on working on this over the weekend.
en.wikipedia.org/wiki/Skannerz
Tony
I will post the video here and on cochranrobotics.com.
EZ-Builder
My sample project
MSSQL server
MySQL
Program-o chatbot
Python
php
IIS and configuring it to use php
EZ-AI
It goes through the configuration of each program. There is a lot that makes EZ-AI work. I will put out a new zip with a couple of fixes tonight or tomorrow. I would wait until I tell you these fixes are in EZ-AI before attempting the install.
thank you.
use this link when installing PHP. I will update the link on cochranrobotics to point to this. you want to click Install PHP 5.3.5 on this page after IIS is installed.
EZ-AI \U [the upc code]
It will return the product description back to ARC in the $RobotAnswer variable.
There will be a minimal amount of setup that you will need to do to get this working. I will post a video and an install for 1.0.0.3 this weekend after testing on multiple items.
Good news, it is working. Bad news, the v4 camera isnt high enough definition to give good results. My laptop camera works good so, you might need to use a USB camera if you want to use this.
The other bad news is that even though the database that is being used for this has over 20 million items, it only detected 1 out of 5 items that I tried so I will shelve this for a bit and try to find a better conglomerate list of items for my area. This would probably work great in Europe. I will put a line in the config file to allow you to specify which database you want to hit. This one was good because it allowed me to use JSON to access it. I probably wont have time to look at it more until this weekend. I will wait to publish the exe with it until later on in the weekend.
EZ-Builder
My sample project
MSSQL server
MySQL
Program-o chatbot
Python
php
IIS and configuring it to use php
Roborealm
Configuration of EZ-AI for your environment
EZ-AI
It goes through the configuration of each program. There is a lot that makes EZ-AI work. There is a new zip file containing version 1.0.0.3 which includes the UPC Reader. There is a new install video including Roborealm and configuring your API key code for the UPC search module.
As mentioned earlier, the UPC reader through roborealm doesn't work well at all with the EZ-Robot V4 camera due to resolution of the camera. I have tested with my laptop camera and it works well.
If you have tried the install and need any help, please let me know. There really isnt any patch needed to go from 1.0.0.2 to 1.0.0.3. just copy the files with the latest date to your folder (except the ez-ai.config file). Make a change to your EZ-AI.Config file to include the added lines from the one that is in the zip and watch about the the new install video from 1:30:00 to about 1:32:35 to find out how to get your own API key code for the UPC search module.
Thank you for the updates. I had some time on my hands today, so I thought I would follow your video tutorial to try and install everything necessary to install EZ-AI. I did however run in to a couple of problems.
I'm trying it on a 64 bit machine with only 4 G ram, so I selected the 32 bit instal for MySQL as you suggested and it wouldn't except it so was unable to complete the download. I tried again using the 64 bit download and it worked.
When trying to select "custom user" on MySQL, it will not accept my username of password, so I could only use "Standard System Account" option.
Final issue which is where I'm stuck now and can't go any further is with MySQL again. When I expand to the MySQL notifier, the menu you have in the video is different to mine, as I don't have the option for "Configure instance".
Any ideas to why this is buddy?
Steve.
MySQL isnt what I am the most familiar with. Let me do a bit of digging.
http://dev.mysql.com/doc/workbench/en/wb-installing.html
The standalone download for MySQL Workbench is available at http://dev.mysql.com/downloads/tools/workbench/.
MySQL Workbench can be installed using the Windows Installer (.msi) installation package. The MSI package bears the name mysql-workbench-community-version-winarch.msi, where version indicates the MySQL Workbench version number, and arch the build architecture (either win32 or winx64).
To install MySQL Workbench, right-click the MSI file and select the Install item from the pop-up menu, or double-click the file.
In the Setup Type window you may choose a Complete or Custom installation. To use all features of MySQL Workbench choose the Complete option.
Unless you choose otherwise, MySQL Workbench is installed in C:\%PROGRAMFILES%\MySQL\MySQL Workbench 6.2 edition_type\, where %PROGRAMFILES% is the default directory for programs for your locale. The %PROGRAMFILES% directory is defined as C:\Program Files\ on most systems.
If you would like me to skype and use team viewer to help you get everything setup, send an email to d.cochran@cox.net. You are the second install outside of my own tests so it might be easier. I would need your skype ID and team viewer ID along with the password you have setup in team viewer.
I am also looking at the Skype api to allow the robot to become a telepresence robot.
EZ-AI now has all of the cities of the United States memorized and knows how to get to them. You can type in to and from addresses anywhere in the word, or speak cities in the United states and It will give you driving instructions (which you can request to be printed). You speak the name of your from city and state, and then your destination city and state, and then "Get Directions" and EZ-AI will get directions for you and pass them to ARC. Once the directions have been retrieved, you can also say Print Directions and EZ-AI will send these directions to your default printer.
Here is a complete list of the functions available through EZ-AI.
/I open the EZ-AI interface.
/P use the email checker process which tells you how many new emails you have since it last checked.
/D uses the database to store or retrieve data from it. This is used by EZ-AI for many of its abilities.
/R use to get an RSS feed, parse it and return the results back to ARC
/C use the chatbot
/W use the Wikipedia (smart) query.
/U use the UPC code search.
/B Gets verses of the Bible for you upon request
/M gives you driving directions. Only United States cities are populated at this time. You can key in any addresses regardless of country.
I will start working on the Skype interface next. I will have the next version available for download after I attempt to add the Skype feature.
The download now is up to 6.71 meg because of the need to script out all of the inserts for over 80K cities.
Here is the new usage information. I added a couple of features to the /B and /M options
Usage:
Just starting EZ-AI will take you to an outdated help file. I will be working on correcting that. To use EZ-AI you need to pass parameters into it. These are as follows:
/I open the EX-AI interface.
/P use the email checker process which tells you how many new emails you have since it last checked.
The EZ-AI configuration file has EmailServer, UserName, Password, and LastTimeEmailChecked values that will need to be configured to use this feature.
/D uses the database to store or retrieve data from it.
Please see the Example Project for examples of how to use this feature.
/R use to get an RSS feed, parse it and return the results back to ARC
Please see the Example Project for examples of how to use this feature
/C use the chatbot
This requires Program-O to be installed to use this feature. It requires that you install IIS, MySQL, PHP and Python. Saying Goodbye will close the chat.
/W use the Wikipedia (start.csail.mit.edu) query.
Just speak the question and Wikipedia will be searched for information on the topic EZ-AI understood you speak. Saying Goodbye will close the wikipedia search.
/U use the UPC code search.
The EZ-AI configuration file has a UPCServer value which needs to be changed to your APIKeyCode from EANData.com. Saying Goodbye will close the UPC code search.
/B Gets verses of the bible for you upon request
This has 3 modes.
/B normal will use the normal interface
/B daily will get the daily verse from the Bible.
/B random will get a random verse from the Bible.
After saying the Book Chapter and Verses you would say read verses to pass the variable back to ARC.
After getting the verses, you can say Print Verses to print out the verses that you just retrieved.
If you make a mistake or EZ-AI misunderstands what you requested, you can say Make Correction and the form will be cleared and you can start over.
Saying Goodbye will close the Bible search.
/M gives you driving directions from Google Maps. There is an extensive list of cities that are populated in the cities table in the database.
EZ-AI configuration file has a DefaultContenant value which is used to limit the cities to a specific continent.
EZ-AI configuration file has a HomeAddress value which allows you to say home to populate the field with this value.
EZ-AI configuration file has a EZRobotAddress value which allows you to say EZ Robot to populate the field with EZ-Robots address.
EZ-AI configuration file has a GoogleMapsAPIKeycode which needs to be modified with your own Google developer APIKeyCode
Saying Goodbye will close the Directions search.
Saying Get Directions will send these directions to ARC. After the directions are retrieved, saying Print Directions will print these directions to your default printer.
If you make a mistake or EZ-AI misunderstands what you requested, you can say Make Correction and the form will be cleared and you can start over.
/S launches skype. Their API isn't worth messing with.
I am working on another feature to allow the robot to be a telepresence robot through Skype.
Please download the Example Project to see uses of these in scripts.
Because EZ-AI uses a local chatbot which is running off of a database, I am able to pull the phrases that can be said from that database (the AIML) as the program loads. This has taken the accuracy of the speech from about 10% to about 90% and still allows you to ask anything of the robot that you could before. Because each person has their own chatbot the speech for each persons install is going to be different so making a static list is impossible. This solution loads that persons AIML and makes it far more reliable. Because this comes from the actual AIML table for your chatbot, it gives the most usability and highest results possible. It does take a bit of time for the information to load from the database, but this is far less frustrating than the robot misunderstanding everything that was being said. It also saves me about $5,000 right now on the DNS developer license. I am sure that will come one day, but this just drastically improved EZ-AI.
I will be adding more social media feeds but Social Media is an amazing way to get help to people in need. I have seen this first hand when people posted that they were trapped in a house after a tornado event a couple of years ago. I should have this out in a couple of days. I would recommend that you call this with something like "ROBOT I HAVE AN EMERGENCY" so that it isn't triggered by accident. You could also then have the robot ask if this is an emergency and wait for confirmation before calling the EZ-AI with the /E switch. EZ-AI will take over asking what type of emergency it is. If there is no response within 15 seconds, the robot will post the item from the database that is called EMERGENCY and the text that you have provided for this record.
This feature takes quite a bit to get setup on Facebooks side. For right now, I am going to just put the application out with this feature in it and will document the facebook setup in the near future. It involves allowing EZ-AI to have permissions to post to your wall, and requires your userid (a number that the facebook api uses) along with some other small bits of non password/user data. EZ-AI won't be able to log in as you to facebook but has certain rights that you give it to post to your wall.
I think I will put out a video tomorrow.
Someday a robot Lassie will be getting help for her owner.
Here is a video of the Bible search, Driving Directions and Emergency Facebook post, along with a few ideas of what I would like to incorporate next.
Your GPS could be anything that supports NMEA 0183. I specifically grab the GPGGA (fix) data (which only happens when you have a fix or good point) of this layout and convert it to deg min sec format. NMEA 0183 is a common format but not every vendor supplies the data the same. If you are in the market for a GPS for this, it was programmed using a Garmin. I can't promise that it will work with every GPS. Yours would need to be able to be seen as a com port which sometimes requires a driver, and sometimes requires a special cable.
The data is updatable at specifiable intervals. EZ-AI queries the data from the GPS every second no matter what. How often the map and how often the data is sent back to ARC is configurable in the EZ-AI.app.config file.
This will be in release 1.0.0.5. It is the first step toward outdoor navigation.
There are some that have asked for a similar thing in the use of robotic lawn mowers and the like. The data that is passed back can be used by ARC to tell how close you are to your property line and then make the robot turn to a new direction.
If the com port can't be communicated with, there will be no data passed back to ARC at this time. If your robot quits getting updates, its probably because the batteries in your GPS have died. I would take this into account in your script that is checking for the variable so that the robot won't go rogue.
Using this method for GPS coords allows you to use a device that has a good GPS antenna and could (if your GPS has an external antenna port) allow you to place the antenna in a location that is optimal to see GPS satellites. This would improve the level of accuracy of the GPS and would probably be more likely to experience less interference from other robot components. It could also allow you to see more satellites and thus get a more accurate determination of your robots location.
The GPS that I am ordering also comes with compass and Barometric pressure to measure altitude. I dont know if I will worry much about altitude but getting the data from the compass could be useful.
I am planning on adding features to the Emergency Social media post and the Map Directions parts to allow them to get the current location of the robot. This should be useful with future endeavors including navigation and allowing your location to be pinpointed if the event of an emergency. These features will also be available in the 1.0.0.5 release of EZ-AI.
So, version 1.0.0.5 will have:
The beginnings of the Outdoor module (GPS navigation). Currently it will track where you are and update a map. It also passes this information back to ARC.
The ability to say "Current Location" for the address in the directions module if the GPS can get a fix on your location
The ability to say "Current Location" for the emergency facebook notify to post your lat long coords at the time that you request help. I will look at geocoding this to try to get an address as people are not familiar with lat long coords as a rule.
And possibly the ability to search for recipes and ingredients, along with making shopping lists. I haven't started this one yet so, I don't know how difficult it is going to be. You will be able to print these like you can print map directions or Bible verses.
I should be getting my parts for the internal computer early next week. I will record the setup again while setting up that computer. There are a couple of other pieces that you will need to do that are not in the current video. Following the current video will get you about 99% of the way there, but wont tell you where to go get your API keys for some of the web based stuff.
http://youtu.be/i-Tu4hiKdXg
Our Ai also every week downloads all the television programmes and their synopsis and this can be called up on screen. I can ask about any programme (its synopsis), when it is on and ask for it to remind me an hour before the programme starts. My Ai also knows what I like, so on a daily basis it recommends programmes that it thinks I may like. I am a Scifi fan so I get a lot of Scifi recommendations and lots of times I would have missed these shows without the Ai. The next cool thing for the EZ:1 and EZ:2 robots is if you have booked a reminder of a show then the robot will go to the TV room 10 minutes before the programme starts, turn on the television (if its off), then change to the correct channel and set the volume to your preference. Finally it will look for you to give the vocal reminder, assuming that you are not in the TV room!
Tony
BTW, I am finishing up the cooking one today (baring any unforeseen issues). If you don't have something like this yet, let me know and I will pass along what I have done. BigOven has a pretty simple API. It would be worth looking into.
Keep the ideas coming. I want to build this out as far as I can. I am sure that as soon as the parts start coming in for the robot build, this programming effort will diminish greatly. After the InMoov is built though...
Again, thanks for the ideas. Keep em coming.
The TV/Radio control bit is just an IR emulator that learns the control function codes from the original remote controller and just repeats it when instructed by the PIC.
Tony
On the TV/Radio control, thats cool. I will probably add this in the future. It is something else that would just add more functionality and make the robot(s) that much more amazing.
Thanks so Much Tony.
I now have a huge illuminating magnifying glass for my electronics work, many years of working with fine electronics and SMT have taken their toll!
Its very cool for a household robot to control lighting, appliances etc, even from just a security point of view where the robot detects movement in the middle of the night then brings that areas lighting on. If its me getting a glass of water then thats helpful, but burglars get a bit of a shock as our robots are also linked to the house burglar system. So if the robot is not happy with the situation (or detects an attack) then all lights internal and external come on together with alarm sirens!
My whole house is X10 controlled and it has worked perfectly for over 10 years now. But as I said earlier people say they have problems with it in the US. I could hack another more modern power line injection appliance control system, which I may need in the future to look at.
Tony
SingularYieldUnit
TotalCalories
TotalFat
CaloriesFromFat
TotalFatPct
SatFat
SatFatPct
MonoFat
PolyFat
TransFat
Cholesterol
CholesterolPct
Sodium
SodiumPct
Potassium
PotassiumPct
TotalCarbs
TotalCarbsPct
DietaryFiber
DietaryFiberPct
Sugar
Protein
ProteinPct
For those with dietary concerns (which includes everyone in my family now...) this information could be quite beneficial. The cost to me is a monthly fee of $200.00. If you want the ability to see this information about a recipe from EZ-AI, I would have to charge something. I dont know how I would go about doing that at this time, but I assume that I will come across more of these as I add more features. For right now, I am bypassing the Nutritional information and just populating everything with 0's.
Please let me know if you would be interested in being able to see this type of information if you are going to use EZ-AI. Once I know the numbers, I will be able to figure out how I would handle it.
Who knows, I am pretty pumped up. I might record a video tonight. The recipe engine is pretty cool and it has room to grow with additional features to be added in the future like being able to search for a recipe that has a specific food item in it. I am still thinking about how I would implement that.
I couldn't resist. Here is a video of the recipe portion of EZ-AI. I think it's pretty cool. Now it I could just get it to cook for me...
I promise you that if you put the AI in your InMoov, you will get very inspired again. A robot that has access to information, even if it isn't a ton of information is a very exciting thing. As more things are added and as they have more information or learn things it gets more exciting. I cant wait to start my InMoov. It is going to be an amazing project and something that I will be happy to show around town.
Then I printed the left hand. After that I printed my own humanoid robot to have fun with.
I will be adding your AI and X10 works fine here in the USA.
I never had any problems with it.
My robot turning lights on and off would be helpful.
Walking in the dark causes accidents.
If you need any help getting it setup, let me know. The power of the internet, along with TeamViewer and Skype is a wonderful thing. It will take some of the headache out of the install and will let me see what I need to modify on the install for others.
As suggested to Rich, I would wait until 1.0.0.5 is released. It will save you from having to do a patch to get the new features. Also, I will have another install under my belt when my parts get here for the onboard computer. The install will be fresh in my mind, making it less likely that I forget something if I help install yours.
On the note of my wife, I think she will like the recipe engine. It is something that she will find useful. The more we add things like this, the more globally accepted the robots get.
If you have a GPS attached to your computer...
1.0.0.5 includes an outdoor (GPS) mode that tracks where you are on a map. Along with this, the GPS cords are passed back to ARC in the $RobotAnswer variable.
It also allows you to say "Current Location" for an address line in the Directions module, along with posting your location in the Emergency module. What gets posted in the Directions and Emergency modules are the closest street address to your location.
Its a pretty cool update and probably the last (except for bug fixes) that I will do for a while. I am working on something else for EZ-AI that will take a while to code. Also, I have an InMoov to get built.
The first post of this thread has been updated with the latest information about EZ-AI.
Once I run through the video I'll probably have a few questions, can't wait to see this up and running here.
Her Ball
I have put the latest files out. I will probably not be able to fix the emergency and Navigation pieces until tomorrow.
everything looks Amazing! Does it work with the EZB 3? And, I cannot find a link to download the program. All Links are 404 error.
I just put a new version out that handles the GPS better. It allows you to adjust the location that google maps displays or uses based on your location. The world isnt flat but displaying maps is so datum has to be used to have accurate readings. The GPS returns the right location but the flat world of maps doesn't quite get it.
There are a couple of values in the ez-ai.exe.config file that are used to allow you to adjust for your geographic location. Some GPS units will allow you to make the setting in the GPS unit. The puck that I picked up doesn't allow this, so I added the ability to make these adjustments outside of the GPS unit.
Trying the download now. I will let you know if I have any issues.
Also, because it communicates with ARC, any supported EZ-B will work.
@MovieMaker,
Please try the download again and let me know the results. Look in my profile and send me an email if you have any issues with the download. I can send them to you.
I will post a new version of EZ-AI on 3/8 probably. It includes these things.
EZ-AI Product Enhancements
General
If ARC isn’t started, warn the user instead of erroring out
Handle all errors more gracefully
Make all screens resizable
Make fields adjust in size based on the size of the window.
RSS Feed
Make a table that allows the user to put in phonetically correct pronunciations of words.
Build screen that allows the user to enter this data.
Outdoor Mode
Navigation module that allows a user to get directions and then navigate to the location based on google API walking directions
Thread getting the map and running timer
Skype
i am using VSee as it is free and works great.
Cookbook
Make the number of recipes returned a user definable variable.
Thanks,
mel
This allows you to do the same things as the directions switch does, but it does it using walking directions. The lat/lng points for the route are stored in table in the database called NavigationRoute. There are two usp's that can be called in ARC for navigation purposes. They are UpdateNavigationRoute and GetNextNavPoint. So the way this works, as follows.
In ARC you would use EZ-AI /D using the GetNextNavPoint stored proc, which would return to you the next point that you need to achieve to ARC.
You would store this value in a variable in ARC.
You would then launch EZ-AI /O which would start returning the current lat/lng for where the robot currently is.
You would do whatever you need to do in ARC to drive your robot to that lat/lng
once there, you would call EZ-AI /D and use UpdateNavigationRoute
you would use EZ-AI /D and call the GetNextNavPoint stored proc, which would return to you the next point that you need to achieve.
repeat.
This will allow you robot get directions to a location, and then navigate to that location. While I have tested the code, I wont be thoroughly testing this until my robot is complete. This will be included in the next release, along with some other things that I will document in the first post of this thread.
EZ-AI Product Enhancements
General
If ARC isn’t started, you are warn the user instead of erroring out
Handles all errors more gracefully
Made all screens resizable
Made fields adjust in size based on the size of the window.
RSS Feed
EZ-AI has a new table that allows the user to put in phonetically correct pronunciations of words.
Added a screen that allows the user to enter this data.
Outdoor Navigation Mode
Called by using /NAV switch.
Navigation module that allows a user to get directions and then navigate to the location based on google API walking directions.
Outdoor mode
The map gets updated in a different thread making the screen more responsive.
Skype
i am using VSee as it is free and works great. Skype works also. If you setup VSee on your computers, you can set the robot to autoanswer if a specific user calls it. This is how I am using it currently.
Cookbook
The number of recipes returned is now a user definable variable in the EZ-AI.exe.Config file.
To install the patch, upzip the the Install and Patch folders of the download to your C:\EZ-AI folder. Navigate to C:\EZ-AI\Patch and run the SetupDatabase.Bat file. The new application files will be copied over the old ones and the database will be updated with the new objects needed for this version of EZ-AI. You will also see an EZ-AI1006.exe.config file that contains any new keys that need to be added to the EZ-AI.exe.config file for your installation.
New keys added with 1.0.0.6 are
<add key ="LatitudeShift" value="-.00018"/>
<add key ="LongitudeShift" value=".000334"/>
<add key ="DefaultMapZoom" value ="17"/>
<add key ="RecipesReturned" value="20"/>
All of these can be adjusted by you for your install. RecipesReturned is used to determine how many recipes are returned when using the Cookbook module. DefaultMapZoom value is a range from 1 to 20, with 1 being the widest zoom and 20 being the most narrow zoom. The LatitudeShift and LongitudeShift should be adjusted by you depending on where you are in the world. If you live at the intersection of the prime meridian and the equator, your values will be 0 and 0 on each of these. The values in the file are for Oklahoma City, Oklahoma in the USA. You should use the /O option and say Current Address (if you are at home) to see what address these values have you placed at. Adjust these values to fit your needs.
- will move more to the South or West. + values will move more to the North or East.
Also, there is a value in the config
. Please set this to 0 or your application will break. This is something I am working on.Code:
Fantastic work BTW.
I could do this or continue work on my associative learning module. It would take questions that were asked to the robot from the wikipedia engine, parse the results for nouns, and then perform searches for these words to multiple internet sources, which would then be parsed for obvious nouns and continue the process. It would do these searches when the robot isn't actively being used. I am not sure how this information would then be implemented into EZ-AI yet but getting this part completed with a decent parser would take some time.
What do you think? Should I put adding new features on hold to make a learning robot, or are there some other features that you would like added?
This goes back to an old thread where someone asked if a camera could be used to measure distance.
From there, I will explore the RoboRealm API a bit more to see what is possible.
I am working on cleaning up the interface and testing the calculations more. I am also working on ways to speed up this process as the current process takes about 8 seconds to run. 5 of these seconds is spent making sure to give time to both RoboRealm instances (1 for each eye) to recognize the object. This is as fast as my setup will run. I am making these wait times configurable as each computer will be different. Mine is an I7 with 32gb ram and raided SSD drives. I think this is about the quickest configuration that I can imagine without spending $5K on a computer for your robot. Ping sensors would be faster but only able to find objects at a limited distance. I have tested this at 10.5 feet. I plan on testing at greater distances when the robot is complete and I can take it outside.
Props to my son who was able to come up with the calculations for the estimated distance. I need to pass some of my EZ-Robot stuff off to him and get him hooked, but I don't want to interfere with him finishing school or his new career.
I will include this in the next version of EZ-AI which will pass this distance back to ARC in the $RobotAnswer variable.
I also am going to start working on the ability to measure the distance using calculus based on the height of the camera, the identified floor from roborealm and the identified objects intersection point with the floor. It will use the angle of the camera also when the object is in the center of the camera frame. This will only require one camera.
The thing that I have to overcome is the height of the object. For example, if you recognize the face of someone, I will have to find the first pixel in that same column of pixels that matches the pixels at the bottom of the image to identify where the base of the object is. This part isn't hard to do, but takes time.
In otherwords, it may be a while before I release these features.
All of EZ-AI is programmed in C#. I was a programmer for 20 years and got burned out on learning new languages or learning new frameworks every year, so I moved to management. The program would be faster in C++ but I just don't have it in me to refresh my C++ skill set. It has been too long since I have messed with it. I like kicking new features out more quickly and find C# to be a good language to do this.
My goal is to have those who are building robots like InMoov to sit up and take notice of EZ-Robot. What is possible with these tools completely blows away anything else that is out for it. By taking a platform that has a lot of attention on it, and making something that is far more advanced than anything else out for that platform, EZ-Robot will get a lot of attention. I want all of our robots to be able to use the features and most of EZ-AI will always be free. There are some modules that I will charge for but everything that has been released up to 1.0.1.0 will be free. That is about 4 more releases from now. I don't know exactly what will be added in those.
I know that I will add a basic learning module at some point before 1.0.1.0. A more advanced learning module will be being developed for a long time and I am sure that I will end up charging for that. There is a lot of work that goes into making something like I want to do, including using Data Cubes as opposed to using just tables. This requires a full blown license of SQL Server which I would have to charge for, but associating information to other information would allow robots to become much more intelligent. The amount of storage and the speed of the storage would also require that a dedicated server be installed. This would also cost someone more cash, along with the server licenses and all of the other expenses such as power, cooling.... This will be designed for use by companies instead of individuals, but a limited free version will be available that uses data tables. It will still learn, but the sources that it uses to learn from will me more limited and more common sources. It will also have a more limited ability to associate information to other information but some association will be possible.
Tony
Thanks for the kind words. They mean a lot.
Tony
David, couple of things I am wondering. I run MS SQL server 2005 on a dedicated server where I keep all my databases. I also run an IIS 7.5 webserver and connect to it for my DNN sites (sql databases). What I am after is;
any problems running your database on SQL Server 2005? Shouldn't be but just checking.
Also I would like the ability to install EZ-AI on a different drive other than C:\. I see you are pushing this through the pipeline quickly but how about giving us a custom install option?
So I run a rack of Wintel servers with some virtual Linux security servers in my house. All the physical servers running 2008(R3). So I think I might fire up a virtual server and put your program on there to access it through the network. Have you had the opportunity to test this on various OS'? 2008(R3) by chance?
Really appreciate your knowledge and sharing this program.
I agree about running from a different drive letter or different path all together. Right now, this is setup to run from C:\EZ-AI. This would require an install application which is on my todo list.
As far as running on different server platforms...
Merne is running this on Windows 7 without any issue. I am running on Windows 8.1 without any issues. Merne is running with IIS7 and the only issue he had was that he had to set the application pool execution authority to run as his account. Windows 8 doesn't have this issue.
I dont see a reason why it wouldnt run on server 2008. The only thing that I can think of that might be affected is the System.SpeachRecognition stuff, but I am pretty sure that 2008 R3 has it in there.
If you would like to setup a VM with 2008 on it, and put TeamViewer on it, I would be happy to perform the install and see if there are any issues with your config.
I see that you have the MendelMax 1.5. These guys are about 10 miles from my house. Great group of guys and a gal at the front desk. We also have a 1.5 at the makergroup that I am a member of. Its rock solid. Just creeping and found that. Good choice.
In the end I would like this on a dedicated server. That would be the best solution.
Thanks
Thanks pacowang
The only part that I see you having issues with in running it on its own server is the outdoor navigation mode. It needs to use the GPS which is client based and the server to store the route in the database. If you have wifi connection still while outside, you wouldn't have an issue. If you built a tunnel from your cellphone which is attached to the robot and your home network, that too could eliminate the issue. Just thinking out loud about running EZ-AI database off of a dedicated server. It would be easy though to have a local database that was replicated from the server, and I could handle the System.Data.SqlClient.Connection in a try/catch to first try the server location and then the client location for a database....
I somehow missed this enormous thread. This is amazing what you are building, and how you are extending the reach of EZB. I have a kickstarter campaign that utilizes the EZB v4 and could greatly benefit from some parts of your AI. When you have a few minutes, I'd like to share with you the product privately. You may have some ideas on how EZ-AI might be best implemented into my prototype. What's the best way to reach you live? Skype?
Thanks in advance.
I hope this means amazing things for EZ-AI. So far what it does is really cool. I look forward to it being something that is absolutely amazing.
This will allow me to focus more on the things like developing an install and getting things ready for marketing.
I can only think the sky's the limit with additional help. I have a few ideas about what we talked about. I'll shoot you an email over the weekend!
Talk to you soon Will
The new house is full of boxes but working on getting the office together this weekend . I should have my Mac Pro ( running windows ) up and running soon. I'm off to Los Angeles Sunday thru Thursday. So let's try to install shortly after that.
In designing the limited self learning module, and in conversations with the other programmer, we have a couple of ideas but I don't know which way we want to go with this yet, so I am throwing it out for suggestions. First, the self learning module will work like this. When someone asks the Web Query section of EZ-AI a question like say "Who is George Washington?" the web query will return something like "George Washington was the first President of the United States of America." We would store this information and then parse it, and submit searches on the important words in the return. This would be done at night or when the robot isn't actively being used by allowing the user to pass a variable to EZ-AI to tell it to start learning. This parsing would find President United States and America. It would then perform searches for these words or phrases. The results of these searches would be stored and more searches would be performed based on these results. The end result would be that the robot would then know that George Washington is a leader who had ties to all of the other Presidents of the United States of America. This would allow the robot to be much smarter and gather more information about the topics that interest a user so that future searches for information and related topics could come from the database instead of the internet.
Here is where the question comes in. If this information were shared from all of the users into one centralized database, the data would be able to grow more complete and more quickly. If after your robot performed these searches, it synced its data to a central database, and was allowed to get data from this centralized database, it would allow your robot to have massive amounts of information. It would also store the questions and responses that you got back from the questions you asked. This part could be a bit of a concern for some. User information wouldn't be gathered as to who asked what question, but some like their privacy and I understand that this could make some uneasy. Not syncing data to a centralized location wouldn't mean that you couldn't use EZ-AI. You just wouldn't call the sync process.
Your thoughts or concerns here would be greatly appreciated as I do want to know them. I don't want to put something out that would make others uncomfortable. Please share...
You pose an interesting dilemma. With all the virtual assistant's popping up i.e. Siri, Cortana, never ending JARVIS, ect . . . I personally do not want the dependency of a "Central Collective Database". Although it poses the ability to learn a vast amount of general knowledge I would rather have my own offline assistant that learns a personal skill set from me since it is there to serve me. I would not mind the ability to download a "specialized packet(s) of knowledge" from a central collective server occasionally based on an immediate need or desire.
It's a problem for me to call this a "Cloud" since I have been flying for 30 years and never have flown into or by a data cloud.
Just my thoughts
Seriously, I think it's the future of robotics. One for central database.
The sync of this data would probably be handled through XML files. The knowledge that hasn't yet been shared would be exported to an XML file, and then FTP'ed to the central server, which would import the data when it saw a new XML file. Nightly, a dump of its knowledge would be made to an XML file, which would then be downloaded to the clients at their request. The EZ-AI client on your computer would load this data into its database when it saw a new XML file and the robot was in learning mode.
On another note, the other developer has experience using OpenCV which could be used to replace RoboRealm. This wouldn't happen anytime soon. I think it would be at least a year out before OpenCV would be incorporated and RoboRealm would be replaced. It would offer us some more abilities with the camera and would make it possible to fully control the camera functions from within EZ-AI.
The other developer is about to start classes on Machine Learning and AI platform development. He is very excited to use this project as a platform for his school projects. This helps him and helps EZ-AI a lot. He will be able to push the capabilities of EZ-AI far more than my business application type skillset. I am so happy to have him onboard. In six months, EZ-AI will have far more capabilities and would be able to make decisions based on the data that it has. I am studying up on Deep Learning and Neural Network programming and trying to decide where and how this should be implemented. It is a very interesting subject and we can leverage of of some work already in a framework called EnCog. It will get us going forward pretty quickly, but understanding something well enough to program for it takes time. Patience is a virtue that I sometimes don't have enough of. It's time to start learning about patience again...
If anyone is able to upload XML data files of "Knowledge" what would need be security measures to ensure that the files are not compromised in some fashion. And I know that is a very broad statement. Who would be the end controller of this collected database?
I see you are feeling this out and I get it. Given your position and profession I know you will be looking deeply into the security side of this.
I like the EZ-Robot approach. Everything they host for public consumption is in small bite size custom pieces, searchable for a given solution. Again I realize this is a different animal it does pose many questions.
I am a realist. With this IOT being the new buzz word I see lots of problems that will offset the usability of everything connected. I am huge on security. Any open system is a security problem and always will be.
I am a fan of closed and secured systems (even with these there is always a threat but more manageable). If anything I would see a subscription service vetted by person or organization where there is a clear chain of command and accountability.
I cannot count the times a Microsoft Update did one of my systems in.
Long ago I used to frequent a restaurant when we had some downtime in Arizona. When you walked into this establishment the owners had a very vocal Parrot to greet you. It was fun because the bird would pickup things quickly. Lots of different types of people frequented that place and lots of different types taught the Parrot many words. After a time they got rid of the parrot because he started cussing to much for the kids that came in.
Just a thought
You bring up good points and it is something that I have considered but not shared simply because sharing the security model would compromise it. Here is what I can tell you without going too deep into it.
The database has the ability to hold encrypted values. We will be implementing a serial key when the knowledge base starts up. The application will be the only thing that can upload data to the ftp server. Also, the XML file will have information in it that will be used to validate that it is authentic from a valid user and a valid encrypted value is included. The encrypted value will be generated every time a xml file is created based on a hash key that will also be encrypted. We will be obfuscating the code starting with version 1.0.1.0. and only be releasing release exe instead of the debug exe at that point. Xml files can be zipped and that zip can be password protected.
Information that is added to the knowledge base will have a reliability rating system. Myself and my other employee will have the ability to validate that data is accurate and promote it to the distribution level. More than one source providing a certain number of the same key words would also increase the rating. A certain number of these xml files from different sources containing the same information about a topic will promote a piece of information's rating. Only after a certain rating is at a certain number will the information be pushed to a client.
Language filters will be in place that will block profanity from entering the system on two levels, one at the client and one at the server. A separate FTP server and database will exist for customers who need their data isolated. These will be paying customers who will have their own method of validating the data before allowing it to be pushed to other branches. This will be worked out with the customers as to the level of security they require. Setting up a securID server is simple and if the customer wants to go to that level of authorization, I would do that for a fee. This would provide 2 factor authentication. This along with what is described above would provide more security than is currently required by banks.
I do appreciate your thought and hope that you will continue to post them. I dont have all of the answers by any means and if you see a flaw in what I have posted, please point it out because I may not have considered it yet.
thanks!
It's a hard but satisfying road from home-brew to commercial. I look forward to seeing this project grow.
I totally agree about going commercial. I have worked for a few commercial software companies in the past as a programmer. Long nights and little sleep were the norm. It is very exciting but so exhausting.
We will be working on the following things for the 1.0.0.8
We will be writing an install application which will allow you to place EZ-AI in a user definable folder.
We will be introducing the knowledge base system (Not Cloud based at this time).
This versions code will have some cleanup and duplicate code in the project will be reduced by refactoring. For example, calls to the ARC TCP server to set the Robot Answer variable will be all run from a single class. Calls to internet based information will all be made from a single class. We will be combining some of the screens like the Driving Directions screen and the Walking directions screen. There are some other things but you get the idea. We will also be moving everything to a framework that is much newer and easier for other developers to understand what is going on in the code, along with commenting a lot of the code that I put together in an attempt to get "usefulness" out quickly.
For version 1.0.0.9 we will add the cloud based knowledge base and security.
Because EZ-AI is pretty self confined and uses a TCP server to communicate with ARC, it wouldn't be too difficult to open this application up to other software platforms. I am exploring the options that some other platforms have. It might also be used by things not related to robotics at all. I dont know at this point, but having the ability to allow the user to choose which platform that they want to use and the application interface through a TCP server seems like a good fit for the EZ-AI. We are also looking at making a linux version of EZ-AI using Microsoft's implementation of .NET for linux.
I will be reworking my website and it will include a forum for specifically EZ-AI questions and answers. I feel bad about using EZ-Robots forum for this anyway. I just have to work on it before 1.0.1.0 comes out.
As you can see, we are gearing up to add more programmers as needed. I know quite a few who work on a contractual basis and I want to be able to bring them in to do work when needed. To cut costs due to development time, we are getting a few items in place. These will reduce the time needed for development and implementing things and will allow a new developer to come in and pickup where another developer left off. All of this will make for faster turnaround on modifications and new features. It also sets us up for the future development efforts with some of the things I have mentioned before.
I can say that EZ-AI is starting to get a lot of attention. I am in conversations with people almost daily now about what it does and what the plans are for it. Some of the people on this forum have been very helpful and I dont want to mention names but just know that you are appreciated. There are some other things that I can't talk about or won't talk about out of respect for others in this community and others. Just know that the ball has started rolling down hill with EZ-AI and it is gaining momentum. Its very exciting and I look forward to getting past the boring housework that needs to be done before we can really get rolling.
Just so that everyone knows, nobody asked me to do this and I am just doing it so that this post doesn't keep popping back up to the top of the forums. As new releases come out, I will make a new post about those releases on the EZ-Robot forum, but will let the forum at CochranRobotics.com be used for the other types of discussions.
Thanks again
Richard
There's also a very detailed 1.5 hour long installation instruction video
I spent the whole day yesterday installing (and re-installing some components) with only partial success
RoboRealm and AVM Module RoboRealm site
.NET Framework 4.5.1 .NET Framework download
MSSQL Server Express SQL Express download
MYSQL MySQL Download
EZ-AI EZ-AI Download
Enable IIS on Windows - Instructions to enable IIS
Setup PHP on IIS - PHP for IIS download
Some installs will require that you install .NET framwork 3.5 prior to being able to install MSSQL. This is on Windows 7 and Windows 2008 servers. Enable 3.5.1 instructions
From there I can get the install completed in about an hour.
Tony, what issues did you run into with the install? By the way, I just enabled your account. If you want, I can connect with Team Viewer and see if I can figure out what is causing issues.
I initially went through the install step by step following the video (did not install the roborealm stuff). I got up to setting the Ez-AI Interface onto the desktop. There I got errors loading "robot". I then did uninstalls and reinstalls and the whole thing is now even more broken
I'm pretty sure I followed you video exactly and everything seemed to be working out OK, except:
1. I found that 'robot' was listed under system databases in the M SQL Server Management studio and I was able to query the database and search the tables. (BTW I could not find Australia in the countries!)
But, when I looked for the robot user under security, it was not there. I did enter robot/r0b0t as a user during the setup
In MySQL Workbench, robot is there and has all the Privileges
2. When starting to run items in the Ez-AI Interface, I got the 'robot' errors, so triple checked the editing of the config file according to your video. All OK
3. I uninstalled & reinstalled MySQL Server. When I ran MySQL Installer it reported everything set up except MySQL Server which I could only partially reconfigure. Under Accounts and Roles I was only able to enter my root password, it did not allow me to enter any MySQL User Accounts! (see attached pic). Under Windows Service/Custom User it did not allow me to enter my Admin user for the PC! (see next attached pic) I could only continue if I use Standard System Account
I tried uninstalling everything "SQL' but get back into the same situation
Unless I can totally wipe SQL from this PC it looks like I'll have to try another PC
Just to note, when I tried the instal a couple of weeks back you may recall I had a couple of issues. What Tony mentioned about only being able to use the standard account option was one of the same problems I ran in to. I tried every variation of my password (caps on, caps off, cap on first letter ect) but no dice. When I get some spare time I will try again and maybe take you up on your offer to give you a shout if I get stuck.
If you would like me to connect and fix, let me know.
Code:
run this script after you run the SetupDatabase.Bat file. This can be run by launching SQL Server Management Studio and at the login choose Windows Authentication from the third dropdown and then click Connect.
From there, choose New Query in the menu bar. Paste in the above code and then click Execute.
I am modifying the install script and the ez-ai.zip right now to fix this.
I found Australia in the script that generates the cities table and in my cities table. There are 2064 cities listed in Australia. The list I have (mind you, I am in the US and we are really good at thinking we are the center of the universe for some strange reason) has the Continent_name as Oceania.
In your EZ-AI.exe.config file, you would put Oceania as your DefaultContenant value.
<add key="DefaultContenant" value="North America"/>
changed to
<add key="DefaultContenant" value="Oceania"/>
This is after we get you working and all.
On your MySQL install question, the field that you are on is your windows username and password. This would be for an Administrative account on your computer. You could run it as a system account and be fine I think. The install where I decided this was necessary was a bit strange as it was on a machine that I have many things running including TV, Phone System and fax server. I wouldnt be surprised if the system account didnt have necessary permissions on this box due to these other installs.
I even managed to verbally get and print directions from my home to another destination!
Ez-AI already has many useful functions and it works within ARC. I see that it has tremendous potential to make our robots more interesting and useful.
The new SetupDatabase batch file works well now. There are a few programs to install and configure but it's not a difficult as it sounds. I found your install video clear and easy to follow. You provide instruction on configuring each program as well as working links to download them from. You also provided fast email support when something did not work. Now that the batch file is fixed there should be no problem with installation.
There’s no reason why everybody can’t install and give Ez-AI a try, if I can do it, so could everybody else!
I have placed the install instructions on its own page. I probably should have done this to start out.
Thanks!
Code:
I need ID and the password from Team Viewer.
Cheers
Richard
EZ-AI.exe
The application has been refactored to make future development efforts easier to program.
UPC codes
The bug in the UPC code which caused an error to popup when scanning the barcode too many times has been corrected
Email
The email module has been rewritten to handle Gmail, Yahoo, MSN and Live accounts. It also has more features.
EZ-AI.exe /P CheckEmail will now return the number of new emails that you have since the last check from EZ-AI.
EZ-AI.exe /P EmailInfo will return the sender and the subject of of these emails
EZ-AI.exe /P # will return the body of the email that is requested. For example, if you had 4 emails and you used the EmailInfo switch to then get the sender and subject information, and you wanted to have the 3rd email from this list passed back to you, you would use EZ-AI.exe /P 3 If you then wanted the 2nd email from this list to be passed back, you would use EZ-AI.exe /P 2
Entertainment
There is a new feature that will get Movie and TV show overview information from themoviedb.org. You launch this by calling EZ-AI.exe /ENT
The most popular shows and movies will appear in lists on the right side of the form. Saying More Movies or More Shows or More Movies will load the next list of movies and shows. Saying Previous Movies or Previous Shows will take you back to the previous list of movies and shows. Saying Choose Show [the show name here] will load send the show overview back to ARC and display it on the screen. Saying Choose Movie [the movie name here] will do the same for movie overviews. This will be expanded on in the future, but this is working well so I thought I would kick it out to you all.
I have pushed these updates out to cochranrobotics.com/EZ-Robot-Plugins
While you're there, if you haven't done so, register on the site to see the community forums. Also, if you have registered, introduce yourself. It would be great for others to see who all is a member of that forum. Only about 10% of the registered users are on the forums right now.
Thanks
David
I've just posted a question in the "Installation"'thread on your forum. I'm currently in the middle of the install but having a couple of problems.
Thanks
David
Also I sent a request to be added to your forum, but did not receive a response. Maybe I just need to go and try to log on?!
Thanks in advance.
The v4 camera works with Roborealm. There is a video on cochranrobotics.com that shows how to setup ARC and Roborealm to work together.
Hey, keep us informed of what you discover using Roborealm with ARC/EZ-B. I downloaded Roborealm myself a couple of days ago to use with EZ-AI and haven't had a chance to have a good look at it. I'm not even sure what it can do (except for Face Rec of of course).
AVM Module
Some other cool things
reading digital displays
Shape matching
Obsticle avoidance
Counting dice
Hand Gestures
I am not trying to sell you on anything, but it would be worth looking at.
Open EZ-Robot and make sure that the TCP Server Settings has Enable Server for EZ_B Board 0 checked under Connection settings, settings... Click save to make sure it sticks
In RoboRealm click on the search tab on the top left. Type HTTP in the search box and choose Read_HTTP by double clicking on it. Follow the video to add the url to the ARC Custom HTTP Server you setup.
In roborealm, on the left side click Search. AVM and then double click AVM Navigator. Train an object (your face using the interface for AVM) and give it a name.
Then
Type EZ in the search text box right below the tabs. You will see EZRobot_Variables come up. Double click it and then add it. From the RoboRealm Variables double click NV_ARR_OBJ_NAME. It will move this over to the Send to EZRobot side. Click OK.
Now in ARC, you will see the recognized object show up under the Variable Watcher as $RR_NV_ARR_OBJ_NAME[0]
Certainly expands and accelerates the development of EZB
Coolness!
Changes to this version include
..Ability to find stores in your area and navigate to those locations.
..Self learning module that allows the robot to go gather information on topics when the robot is not in use. Be careful.. Too much knowledge can slow down your database.
..Associative knowledge which ties knowledge gathered above to other information that the robot knows about.
..song and artist information
..Movement of the configuration information to a table which uses a standard EZ-AI screen for updating or changing this information.
..A natural language processor which is currently used with the Self Learning module. There are future plans for this.
..The ability to run EZ-AI from a directory other than C:\EZ-AI
..A couple of bug fixes for the chatbot feature.
There are a couple of items that I want to add and then I will be finished working on this for a while other than to fix bugs. I am about to get all of my parts for my inmoov and my time and energy will be going into building him.
The first post of this stream has been updated with all of the new features.
When we get these updated versions do we just install over previous versions? Also is there anything else to do when we update other than EZAI?
Not only is there a very complicated nlp that has been added, but also a knowledge engine which adds another database that has to be configured correctly. There is also a pretty large underlying change that if not done correctly would render ez-ai useless.
Once I get past this one, the other releases will be pretty small and much easier to perform. I can do a couple of installs a day to get everyone up to the current version. I also want to make sure the data you have entered isn't wiped out.
I hope you get your InMoov up and running soon.
There are a lot of things that have to be done just right with this one. Also, this one requires that you get a Google api. If you dont get your own, odds are that you will affect every other user including me.
Any one step isn't hard, but seriously, there is over 230 meg worth of new stuff. The previous version was below 20 meg.
The installer will get you through most of the EZ-AI installation. You will still need to follow most of the installation video. I will be making a new install video in the next couple of days. I dont have time to do it right now, but I will get to it. This time I promise to capture the screen instead of record the screen which will make things a lot more visibly clear.
Let me know if I should just wait on the update . I certainly can demo with the version I have now.
I am more than happy to connect to your computer and setup everything for you. I have done this for 5 others already and I actually like it. The largest issue with doing it this way is that there is very little transfer of knowledge. EZ-AI has a lot in there and I really need to do a video of the current version and how everything works. I plan on doing this over the next week or so and will make small videos showing how each feature works.
Let me know if you would like me to set it up for you. You just need to download and install team viewer 10.
I would like for someone to create a Super AI and EQ and put it all on a stand alone firmware that would run itself.
That is probably not far away.
thanks!
Having databases to store things (which is the real power behind an AI) makes deployments more difficult. There are options for non-free databases which would allow silent installs, but the goal was to make EZ-AI as low cost as possible without sacrificing functionality. Deployments require scripts to be run on the databases to add new databases, tables and stored procedures. This can be scripted but because the database can be on any machine on your network, the scripts would have to be made at the time they were executed. This adds a completely different level of complexity but something that could definitely be done.
I wish I didn't have to work so that I could focus solely on EZ-AI, but unfortunately I haven't won the lottery yet. Seeing as how I don't play the lottery, the odds of winning become very low and I doubt that this will change anytime soon.
The offer always stands for the install to be done by me. Some have performed the install without my help. These have mainly been people who are in the same field of work as I am and have a good understanding of what is happening with EZ-AI. For those who are uncomfortable doing this, let me know and I will be happy to do the install for you.
The "Run WinDows Services as Custom User" under MySQL Installer 5.6.25
reject my regular laptop authentication admin username / password.
message say: The user doesn't have the minimum rights required to start the service.
Any idea how to fix this issue?
What should I check?
Tanks for your support
Gilles
What time will be convenient to connect?
regards
David, is there an "ideal" system to set everything up on? I'm planning on having a stand-alone install (in my B9 robot).
Would an Acer Iconia W3 (running Windows 8.1, Intel Atom Z2760 @1.8 Ghz, 2GB RAM, 64GB microcard storage) have enough oomph?
My next choice would be an ASUS X200CA notebook (WIn 8.1, Celeron Core 2 @ 1.5 GHZ, 4GB RAM, 250 GB storage).
After that, it's haul out the *big* laptop.
Thanks!
I am going through a rewrite of EZ-AI right now which makes it not only much easier to use, but much better at understanding dictated text. It uses some external services now that cost money to use but provide a much better experience due to their ability to understand and categorize dictated text much better than what Windows has to offer, even in Windows 10. Windows 10 makes things better but it is still a long way behind what is possible with these other services.
My hope is to have the plugin out shortly. There are some other things that will need to be completed prior to making this publicly available like billing and other business type things, but it is still in the works.
The install of the old version was not fun at all and I found that everyone's computer that it was installed on required some sort of special process which was different from everyone else's computer. The server and plugin option is much better for you and also for us.
I'll wait for the new version. I have a couple micro-computers I can use for a server, so I'm all set. (I also purchased RoboRealm)
Here is a link to the more recent information about EZ-AI.
http://www.ez-robot.com/Community/Forum/Thread?threadId=8342
I also updated the first post to include this link.
I find your work absolutely great. And I would also EZ-AI like to try, but I have some concerns that I am so overwhelmed because my english skills are almost 0, and also from the program I have hardly spoken, but I'm learning every day something.
Before I venture to it, I have 2 questions: can the Speech continues to take place via the ECB (SayEZB)?
The robot can also be understood as before German and answers if I have the appropriate language packs installed on the computer?
Greetings from Germany
Sven
To answer your questions...
1. yes, the app passes what it says back to a variable in ARC, which then is dependent on a script to either use say or ezbsay to say the text.
2. I didn't setup globalization so this version is only english.
BUT...
I would wait before installing this. I am working on another version of this that runs as a plugin in ARC and uses a lot more advanced speech recognition and language classification. It also greatly reduces dependencies on heavy database systems.
This version was more to prove that there was a need for this type of product and to prove that it could be done. I am working to make it much more eloquent in the way that it functions.
This thread will explain most of what I am doing. http://www.ez-robot.com/Community/Forum/Thread?threadId=8342