I find myself every now and again making and updating a "wish list" for robotics related stuff. Sometimes its items I want to buy (EZ-Robot was on my list for a while) or find, sometimes it's things I want to make, often its things I would have to invent or build.
As I was updating my list I started to wonder what other folks here wish they had?
At the top of my list I keep wishing I would stumble upon a robot like Atom from "Real Steel" that is in the trash that I simply need to recharge and voilà I'd have an awesome life size humanoid robot for FREE! But in lieu of that fantasy, here are some of my real wish list items:
Hardware:
opto-isolater board to safely interface experimental items to I/o lines
multi-interface board for multiple touch sensors from 1 I/o line
multi-led controller board for multiple LED's from 1 I/o line
plug-n-play battery monitor for any battery to any micro
Software:
In ARC a feature to add custom controls (specifically, under Add Controls, there would be a "My Controls" where I could create and edit custom controls and save them for future use. Like if I create custom settings for an i2c device I could add it as a control with a icon, specific options and so forth. With EZ-Cloud I could even share it and popular ones might make their way into standard ARC releases?)
In ARC a custom "home screen" for robots with visible LCD screens running the ARC this could let you set your own background, animation and visual feedback for sensor data or software conditions if desired.
General event memory (log every time you said "Do x")
General prediction function (based on event memory, every time you said ("Do x" you most likely also ask for "Do y", the robot could then ask you "would you like me to also do y", based a general prediction function.
That's my current wish/todo list. What's on your wish list?
Upgrade to ARC Pro
Get access to the latest features and updates with ARC Early Access edition. You'll have everything that's needed to unleash your robot's potential!
Touch sensors could probably be done from the same controller.
Plug and play battery monitor, the tutorial I have done for a battery monitor is pretty straight forward and can be used on any battery type with minimal changes. To cover every battery type as a simple plug and play module would be incredibly difficult and would still require some setting up, modification of the circuit (if needed) and script is very simple, fully explained and would probably be just as quick.
I'm not quite sure what custom controls you would need to add. Anything that can be supported by ARC is generally added to ARC pretty soon after it is requested. Can you give some examples of what you would want? If you are asking for having specifics set up in current controls such as the BlinkM control you can easily import these in to any project if you have a project where it is set up.
The custom home screen sounds a lot like the skin idea which was brought up a few weeks ago and dismissed. That said, you can easily build a HTML or flash based interface which can get sensor readings etc. If you look on my Jarvis project you will see I have added an overlay to camera images which displays battery level, ping distance, light level, sound level etc. All of this is usable outside of ARC with a few options and a bit of code
General memory, easy, just add a counter script. To all voice commands, or any commands/actions/events have a variable for instance $dancecount. As part of the script run for the voice command "dance" you just need to add in the command $dancecount++ and it will increase it by 1. With the EZ-Cloud V2's data storage (coming soon) it can be saved and pulled as and when needed.
Most, if not all of your wishlist is already doable. Some would require a lot of code in EZ-Script but it's doable.
What's on my wishlist? Nothing
So there was the idea of a "Skin" for the ARC but it was shot down, too bad. I think it would be pretty cool.
The custom controls is for customer added features. For example, if you can communicate with some built in 12c devices you should be able to communicate with any i2c device in theory, correct? Or the AD ports for sensors. Lets say I want to interface to an LM35 temperature sensor (which I can without the customer control feature I'm talking about), but it would be handy if I could add it as custom control with icon and adjustable properties. Then be able to share it with the community so you could download it, add it your custom library and then have an icon to the temperature sensor, set the port, plug it in and you'd have temperature readings.
Same could be said for other servo or motor controls. A couple are supported, but there are TONs on the market, right? So if I want to interface to one I likely need to create a custom serial script (which I could share by itself) but I think it would be cool to add it as a custom control.
Most Wanted features for Robot
Say "Activate Robot, Please."
Turn on System- "Systems starting now"
Modes: AUTONYMOUS Mode
COMMAND Mode
SECURITY Mode
CHAT Mode
FUN mode
LEARN Mode
TELEOP Mode
Features:
1. Smart Navigation and Obstical Avoidence.
2. TRAIN ROBOT in LEARN mode with Re-Enforced Learning. Tell it something and it will learn a fact or movement. When it does or says something wrong, say "no" and it will forget what it just learned.
3. In Chat Mode, it will Store information on the HD and retrieves it. If it doesn't find the answer, it will search the Net, having a real chat engine inside.
4. Using the RSS and NET, it will:
Give News,Weather,Time,Date,Day of week,
Wikipedia, Wolfram Alpha, Horoscope,
Thought for today, Today in History,
Joke for the day,Bible Study
5. Fun Programs include:
Matadore,Shell Game,Verbal Chess
House Detective where Robot is Inspector Clueso.
Compass where QRobot tells you which way is North, etc.
Word Math and number math
Clock Program where he will time with click click.
Search and Find Missions-ie; "Can you find the Red Ball?".
6. Teleop Mode-self Explained.
7. Vision:
recognizes colors, shapes, objects,faces,movement,light.
Separates foreground from background and knows that
people closest to him is important. Knows that someone
that is close AND is talking is more important.
8. Sound:
Can localize and follow sound.
9. When introduced to a person, he will ask for their
birthday and will remember for Horoscope, Birthday wish
or tell them what sunsign they are.
10.Can use OCR for reading newspaper and signs.
11.Use Calendar program to remind you to take meds, or
appointments, birthdays, aniversaries,etc.
12.Can get and recieve emails for you.
13.Can give messages to and from people in a family circle.
Sort of an Electronic Cork Bulletin Board.
14.Can check status of voltage, etc.
15.Have emotions
16.Demonstrate A.I. and Emergent behavior.
17.Maintain a Shopping list to help you remember what you
Need at the grocery store.
18.Have a data base of Learned Objects, Facts,Faces,Events.
19.Can follow light or be scared of the dark.
20. I am not a very good programmer. But, I know HOW to make the robot have more A.I. I have the concept down and can share it with you. It would go something like this:
The Robot would be a state machine.....(To be placed inside of Navigation subroutine)
Initialize
Set ConfidenceLevel to 3
#a group of any actions could be more or less than 16 but I have actions (0-15)
Actions:
0=sleep
1=Forward
2=Backward
3=TurnLeft
4=TurnRight
5=Spin Around
6=playExplore
7=LookCenter
8=LookLeft
9=LookRight
10=LookUp
11=LookDown
12=GiveTimeDateDay
13=checkSonars
14=Check4Lifeforms (ScanPIR)
15=Laugh
While navigating
Generate Unique Random Number (RN) (0-15)
choose action (that random number)
Read LastMove
if last move=bad then (confidence level=confidenceLevel -1)
if last move=good then (confidence level equal ConfidenceLevel +1)
if ConfidenceLevel more than 3 then confidenceLevel=3
if ConfidenceLevel less than 0 then confidenceLevel=zero
if confidenceLevel greater than Zero then confidenceLevel=go
if confidenceLevel =zero then goback and generate New RN
read status of sonars
if status= good then confidenceLevel =(confidenceLevel+1)
if status=good then preform Action
if status=bad then confidencelevel=(confidenceLevel-1)
if status=bad then goback and generate new RN
let lastmove=newmove
save status
save lastmove
We would also listen for the word "No!"
if we heard that, Confidencelevel would shrink to Zero
also we listen for the word "GOOD!"
if we heard that, confidencelevel would be equal to 3
This is a very CRUDE representation of this Algorythm, but,
By doing this, the qbo could be trained and have More accuracy and Learning. he would be smarter.
He will know Good from Bad. Bad would be like running into something. Good would be clear path, etc.
Hope you understand what I am trying to accomplish. If I were a programmer, it would have already been done.
This is loosely based on David Heirserman's book Build your own self-programming robot.
**This is where the robot has free agency given a particular situation, you don't tell him WHAT to do, he just knows that he MUST do something and he chooses for himself. That is if he is NOT in the Command mode.**
21.Also, it would seem that having all of that stuff in the brain program or control program scrolling on the screen at one time could be made to have a simple windows with menus. It is not essential to see that stuff unless we are troubleshooting.
1. We have a lot of ways for object avoidance. By smart navigation, what do you mean? The latest of my simple ping roam scripts has advanced navigation based on previous moves so it doesn't constantly roam in circles or back and forth.
2. Learning facts is almost pointless if connected to the internet. Using APIs it already knows just about everything (I'm working on some tutorials for these APIs). How do you envisage it learning moves though?
4. RSS is already a feature available with at least 2 RSS scripts in the forums which can be used to retrieve pretty much anything. Again, APIs for Wikipedia, Wolfram etc. can be used (although Wolfram is very poor currently so is at the bottom of my list to look at).
5. No idea what most of those games are...
6. Already available with the object avoidance or a slight adaptation (changing a 0 to a 1) of the ping roam code (which will be improved in the next version).
7. Wait for the kinect support and I am sure this will all be taken care of. Half of it already is in the camera control (some may require custom xmls).
8. Already available.
9. Should be a simple EZ-Script to ask and store that information however would require kinect (or better camera) support for being able to identify the person.
11. Already available through scripts - Jarvis reminds me to wake up, leave for work, have dinner, have a shower, go to bed and any appointments I have for that day. I'll be sharing the scripts when it's all tested thoroughly and I can stop adding to it.
12. HTTPGet and APIs again make this achievable right now.
13. Check the Notify My Android tutorial, it can be adjusted to use different API keys to notify different android devices.
14. Already available - Check the battery monitor script and circuit I have provided, it's very clear and easy to follow.
15. Melvin has emotions. More on that once it's all finalised.
17. Again, available. Jarvis makes my shopping list which is shared over my phone, my tablet and online. I have been hesitant to let him actually order anything yet in case of bugs and false positives.
19. Already available through photocells or light dependant resistors and the ADC ports. Scripts would be simple to make for this as it would be very similar to the Scardey Cat examples I used as part of the introduction to scripting.
Pretty much all of it is already available, you just need to make it
I also look forward to your tutorials on API.
The games are not written yet, just ideas.
On number 8, you have Melvin being able to localize sound and move into the direction of it? I would like to see your script.
I had gotten sort of comfortable with the EZB scripting. But, I have put it aside for now. I am working on "Sunshine". She is an Omnibot2000. She will have two EZBs and I will be getting back to the scripting later. The programming part is what I love the most, but I am at best entry level. So, I am happy when I see guys like you develop stuff. Most of my want list came from Aiko Project. This man has a "Brain" program,but he won't share it with anyone. The design of his robot is not that great,but the brain program is really good. I suggest you go and have a look. If you search hard enough, you will find his brain program video. The brain has not changed much over the years. But it makes a good program to demonstrate what we can do and gives us ideas on what to do with our own robots. D.J. has done many similar things.
As soon as I get "Sunshine" complete , I will be diving into the programming aspect of things. This is expected around NOV2013. The EZB is the Absolute BEST of it's kind and Has been for quite some time.
Melvin is a Strange name. It is the name of a Weggie. That used to bother me. But, I changed my name to Mel. It seems more friendly and less Knappy.
Sincerely,
Mel
Melvin doesn't follow sound, the sound control is native to ARC though, it picks up left and right sound levels, this can then be used to find the direction.
Thanks,
Mel
"In ARC a feature to add custom controls (specifically, under Add Controls, there would be a "My Controls" where I could create and edit custom controls and save them for future use. Like if I create custom settings for an i2c device I could add it as a control with a icon, specific options and so forth. With EZ-Cloud I could even share it and popular ones might make their way into standard ARC releases?)"
I agree this would be great for controlling device that has an SDK. USB rocket launchers, home automation controllers, etc...
Last year, there was talk of being able to run VB Script or C# script from within EZ Script controls, but the last postings I can find on it are users asking if it is working yet, so I don't think it ever got implemented, but that would meet the need I think of being able to integrate ARC to virtually anything.
Alan