Most people view the aibo as a cute little companion - or at least popular media lead us to believe this -, which people can adopt at their local Sony retailer. They become their pet, sometimes even their child... With the popularity they have, they definitely conquered the market of household robotics. Truth is, even with their astronomic price (at least, for a pet), they won't always be as obedient you'd like them to be. Owners can guide its learning by spending a lot of time with them and giving it a lot of attention, but the software engineers made it whimsical... and they're always the ones who have the last word. Using the currently available tools, everybody can do it's part to make Aibo do innovative things.
Some technically-oriented people just can't resist. Some other will just notice that the Aibo's hardware could do a lot more than what it does already with Sony's software, and will want to be part of this evolution. How would you like your aibo to fetch your slippers on a single voice command, and be as happy as Rover was when he finally understood what to do to "fetch!"? We're not there yet, but with the proper support from Sony this wouldn't take long to be possible.
Anyways, I know a lot of people that don't need to be given any reason to program an aibo; these persons can skip ahead to the next section.
If there is a product currently on the market that I could really describe by "state of the art", that would be the Aibo. From a technical eye, the first contact shows you the machine is a marvel of engineering.
Both the software and hardware design have been made modular, using layered approach. This means that whatever your contribution to an Aibo project, you can do your job without having to understand the details of the work of every other people in the project. This is one of the keys to a successful project, and is one of the signs that shows how much effort Sony put on the Open-R platform with the Apertos / Aperios / Muse Operating Systems projects since 1988.
As of this writing, there is just a couple of things that seems to plague the Aibo: Sony's strictness makes up most of those problems. I won't go in length here with the trouble it can be to obtain a particular product if you're not in the 4-5 countries they selected, but I will talk about the lack of support Sony gives to potential software developers.
Sony have been claiming for a number of years that 3rd party developers will be supported to develop new software for the Aibo. Alas, the current support is rather limited. An explanation seems to be given here, on feer.com:
Aibo has potential to be a standard platform for developing robot applications, much as the PC is a standard for computers. This gives Sony the opportunity to licence the rights to programming for Aibo to third-party software and hardware manufacturers, as many companies also do for video-game machines. Amagai says Sony will tread warily here, though, since the company wishes to maintain Aibo's image as a virtual pet, and not a workhorse or technoslave. http://www.feer.com/2000/0011_23/p042innov.html
Either way the purpose of this article is to show how can an aibo be programmed to respond to your commands, so let's get started.
This article assumes that you already possess some basic programming skills using any other computer language. If you never programmed a computer before (including the use of Javascript, Applescript, Basic, perl and others), you'll definitely find the learning curve steeper. I would suggest starting with another language first, since the Aibo doesn't give out much information when something in your program is wrong.
You will find this article pretty much oriented towards the ERS-210; as of this writing, the ERS-110 is less and less supported, and programming tools for the ERS-220/311/312 are not available yet. I will try to update this article as I have more information available.
Total cost: between 600$ and 900$ Support from Sony: Best Complexity: Easy Flexibiliy: Medium Aibo Models: ERS-210
The Aibo Master Studio (AMS) software is a graphical programming tool that allows someone to create new "behaviours" and "actions" for the Aibo. A "behaviour" is a set of responses the Aibo will have to a stimulus; an "action" is a timed choregraphy the Aibo can execute. By combining Behaviors and Actions, you can have your Aibo wait for commands (that would be either voice commands or touching his sensors), and have the aibo react to those. This will be the easiest way of programming your Aibo.
The description I will give here will be limited to a quick survey of what it can do and what you need to do it.
To program an Aibo using the Aibo Master Studio, you will need the Aibo Master Studio software on your PC (500$), and a Sony memory stick reader/writer (100$). If you want to transmit directly your programs to the Aibo without using a memory stick writer, you can install wireless LAN cards on both the Aibo (200$) and your PC (100$), and wirelessly transmit the new behaviours/actions to the Aibo. In either case, you will need at least one "Programming Memory Stick" (Sony part number ERA-MS008), with one of those coming in the Aibo Master Studio box.
For those who never used one, a memory stick writer is as easy to use as a diskette drive. Just put a memory stick in the drive, open the associated drive on you computer, modify your files, wait for the "write" light to turn off, and remove the memory stick. Aibo-Ware memory sticks are not any more fragile than regular memory sticks, as long as you're using Sony-brand drives. The AMS will further facilitate this by saving its files directly to the memory stick, so you don't even have to know what files are stored on the stick.
The program is separated in two main aplications: - the Behavior Arranger which is the graphical programming tool, and - the Action Composer which allows the user to create new actions for use by the Behaviour Arranger when you program your aibo. The AMS and Programming Memory Stick also provide some default actions, which are practically the same actions as are found on Aibo Life and Hello Aibo.
Using this model of programming, you will be somewhat limited to what the tool allows you to do.
AMS is perfectly suited for somebody who wants to show off his Aibo, and demonstrate that the robot can do things it is not preprogrammed to do. Using the Action Composer you could choregraph the sequence of moves the Aibo has to learn to do a handstand, and using the Behavior Arranger you can ask your aibo to sit idly and wait for a tap on the back to do his handstand. Note that the "Preview Window" will not be able to give you any help on whether your choregraph will work or will crash on it's back while trying it: this software does not take into account real-life factors such as gravity, friction on the floor, and so on.
It is much less adapted to somebody who wants to try his hand at recognizing the face of his owner, or other complex tasks. A rule of hand would be that if you need to have a only handful of variables and calculations to do in your program, AMS would be sufficient. If not, you would definitely need something else.
I would easily imagine writing a program so your Aibo plays a mean but simple game against you, but it would be impossible to program it to hunt down your cat in the house (unless you paint it pink).
Refer to Sony's AMS documentation for details on how to use both tools. Sony will fully support this development tool.
Cost: approximately 134$ Support from Sony: Limited Complexity: Medium Flexibiliy: Little Aibo Models: ERS-210
R-Code is a scripting language that Sony created as an intermediate language generated by the Aibo Master Studio (see the previous section). This language expresses the same thing as AMS's Behavior Arranger: using R-Code, you can program your Aibo to react a certain way to what happens around him. R-Code does not have any instruction to create new Actions, so only the default actions will be useable when programming R-Code. It is possible though to write an R-Code program that uses custom actions created by the AMS or any other application that can create actions.
Sony released the R-Code language specification publicly, and allows users to create and disctibute their own R-Code programs even if they are not created by AMS. Take note that Sony's support on the R-Code language is limited to the information on their website, and will not answer questions related to it.
R-Code programming is subject to the same limitations as the AMS: only simple calculations and a relatively small number of variables are allowed.
To write an R-Code program and execute it on your Aibo, you will need an ERA-MS008 Programming Memory Stick (PMS) (34$), and a Sony memory stick reader/writer (100$). The lower cost for this approach makes it an attractive entry-level programming kit for the Aibo.
R-Code is a simple programming language. It recognises basic commands one per line, with each keyword separated by semicolumns (":"). In the tradition of computer education, here's a minimal program that I will call "Hello, world!":
// "Hello, world!" Aibo program sample // Christian Meunier, for Aibolifestyle.com PLAY:ACTION:STAND WAIT PLAY:MWCID:250 WAIT
This program will make the Aibo stand, sit, then wave to you making some sounds and a wink.
To install and run, copy the lines to a file named R-CODE.R in the /OPEN-R/APP/PC/AMS directory of a PMS. Put the PMS in the Aibo, and turn on. You should see it come alive with the sequence stand-sit-wave.
The above program demonstrates that:
In the file /OPEN-R/APP/PC/AMS/ACTION.AMS, you'll find friendly names for some of the actions you can use in the PLAY:ACTION command. It can also help you guess the MWCID numbers for some other actions.
Wiggling the ears of the Aibo: I noticed that when moving the Aibo's ears with MWCID 1989 (right ear fast) or 1994 (left ear fast), it's the WAIT instruction that follows that dictates how many times the Aibo will move its ears. For example WAIT:500 will move the ears twice, while WAIT by itself will repeat indefinitely.
R-Code is fragile in the sense that if there is a single instruction that is not formatted properly, the Aibo will not execute a single command and you will have to correct the program and start over. In that case, the boot sequence is normal (the aibo makes its startup sound then stretches), but just stays laid down with power on. There is not much indication on where the error was found, so you must program carefully. The R-Code interpreter creates a file named ERROR.LOG in the same directory as the R-CODE.R file, containing a very brief message describing the error in the R-code file.
Another situation you'll see sometimes: you try a program, then the aibo stops, makes a faint nagging tune, then shuts down. If you try to turn it back on, the boot sequence does not start and the Aibo just plays a short bit of Bach's "toccata fugue" then shuts off. Don't worry: it's just the hardware's way of telling you the battery is empty. If you want to verify this, you can remove the Aibo's front limbs to expose the LCD watch of the Aibo's computer, and check the battery level by pressing Mode a couple of times. This exact thing can also happen if you try to power up the Aibo while the robot it tilted or upside-down.
At the time of this writing, finding the language reference to the R-Code language is not an easy task by itself. On Sony's website, the language reference is hidden in the Aibo Master Studio FAQs. Current directions are :
This should take you to a file named "rcode210-cmdref-20010626.txt", which has the following header at the top:
=========================================================================== R-Code for ERS-210 Copyright (C) 2000 Sony Corporation All Rights Reserved. ===========================================================================Sony's websites are constantly changing, so those directions may not be valid when you try. If you launch a search on Google ( http://www.google.com ) with the text "List of R-Code Commands by Function" (leave the quotes in the search), you should find the document wherever it moved.
As I began my research on Aibo development, I knew instinctively the developers at Sony were using something more powerful than Aibo Master Studio, and that for the time they were working on the Aibo platform they had a documented API. Knowing that the best way of programming is by using a supported way, I set out to contact Sony and ask for the Aibo's specifications.
I presented myself to Sony as a software professional that would like to take on software development for the Aibo as a hobby. From the communication below, we can easily see that they have a software development kit for that can be provided to some people but I wasn't the kind of people they were looking for. They also acknowledge that the programming specifications they released (the R-Code language) is not powerful enough to create more interesting aplications for the Aibo, and they do not want to release (yet?) more complete specifications. This is why you can see some references on the web about the "not-so-open" OPEN-R.
Here are the communications I had on this with John, a senior software engineer at Sony Entertainment Robots America.
> From: Christian Meunier > Sent: Wednesday, September 26, 2001 4:53 AM > To: aibodeveloper@am.sony.com > Subject: aibo specifications available? > > > I would like to prepare to be a 3rd-party software developer for the aibo > platform. I would like to know how to get access to aibo specifications, if > they are available, and know if there are associated costs/restrictions. > > I am aware of the existence of Sony's "Aibo master studio" application > (which I have not tried yet), but I am afraid it could be too high-level for > the kind of applications i'm interested in. > > C. > > [I just noticed there was an email address specifically for aibo developers; > this is an email I sent recently to ERA.OFFICE@AM.SONY.COM and did not have > a response yet.] > From: ******, John > Sent: Wednesday, September 26, 2001 2:02 PM > To: 'Christian Meunier'; aibodeveloper@am.sony.com > Subject: RE: aibo specifications available? > > > Hi Christian, > > Thanks for your interest in the AIBO platform! We're happy that you're > excited about the possibilities for Sony's Entertainment Robot. > > Can you tell us a little bit more about your background? Are you with a > company, or are you a student, or some other situation? > > As you probably know, we currently do not have a software development kit > (SDK) publicly available for AIBO. However, as you stated, AIBO Master > Studio is available and it allows users to create new motions, sounds, and > programs for their AIBO to follow. I'm a little curious why you think AIBO > Master Studio is too high-level? What kinds of routines do you want to > create for AIBO? > > Thanks for your interest; if you send us more information about your > background and your ideas for AIBO, we can find out if there is room for > collaboration. > > Thanks again, and best regards, > > John *. ****** > Sr. Software Development Engineer > Sony Entertainment Robot America > ***********@am.sony.com > From: Christian Meunier > Sent: Wednesday, September 26, 2001 7:54 PM > To: ******, John > Subject: RE: aibo specifications available? > > > Hi John! > > Thanks for your response; nowadays it's good to receive a message from a > human instead of a precanned message by a PR team. > > Here's some background about me, as you inquired. As per academics, i hold > a master's degree in computer engineering from **************** > ******************. During my master's, i spent a bit of time in a robotics > laboratory before joining a group for automated software testing. I > currently work as a project engineer in an aeronautics company (*** > ***********), where i lead a small team of software developers that develop > testing tools ***************************************. > > I'm mostly inquiring about aibo specs so i can develop applications on my > spare time, and eventually market them if they are suitable to that. Some > applications i'd like to investigate are advanced voice recognition, complex > mapping, and aibo development tools. AMS seems to rely on scripting > languages, and I'm not sure that that scripting languages would be > sufficient for all those more complex tasks. > > Regards, > C. > From: ******, John > Sent: Friday, September 28, 2001 1:44 PM > To: 'Christian Meunier' > Cc: 'aibodeveloper@am.sony.com' > Subject: RE: aibo specifications available? > > > Hi Christian, > > I'm very sorry, but we do not have anything publicly available that would > fit your needs. Although our application, AIBO Master Studio (together with > the scripting language named R-CODE) allows users to create new programs for > AIBO, it does not expose the kinds of functionalities you seem to need. > > I'll be happy to keep your name on file, in case we have such an opportunity > to release some software development tools in the future. I'll be happy to > contact you then. > > Sorry for the bad news, and wish you the best of luck with your research. > > Best regards, > > John *. ****** > Sr. Software Development Engineer > Sony Entertainment Robot America > ***********@am.sony.com > From: Christian Meunier > Sent: Sunday, September 30, 2001 4:46 PM > To: ******, John > Cc: 'aibodeveloper@am.sony.com' > Subject: RE: aibo specifications available? > > > Hi John, > > Thanks for your offer; I would gladly be on a waiting list in the > eventuality you release development tools that would suit my > needs. If this is a mailing list that could include perdiodic > announcements, please use "meunierc@********" instead of the > current one to releave my personal email address of unwanted solicitation. > > Your last message perplexes me, though. I have seen a number of > groups who have access to something called an "Open-R API", and > are able to develop "object modules" to create new behaviors. > Does this mean that you have the development tools I seek but > reserve them for specific purposes, like academic research or > high-exposure events (ex. RoboCup) for the Aibo Platform? What > if the results of my efforts were to guarantee some exposure for > the Aibo Platform? > > I assume that by saying "we do not have anything publicly > available", you are speaking on behalf of the whole of Sony > Corporation. Could there be another source of (non r-code based) > development tools for the Aibo somewhere, that i don't know of yet? > > Cheers, > C.
From that point on, I have never received word from Sony. I guess that I have crossed the limit of what they were willing to disclose publicly, and preferred not to give any more information on what their plans were.
The conclusions that I draw from this discussion (and some research) are:
From additional research, it seems that the people who actually receive a development kit for the Aibo must sign a non-disclosure agreement. All the time I was researching this, I never came across a company that made a reference to being able to develop Aibo applications; from this I would be prone to think that Sony does not give commercial licenses to the Aibo development kit.
I sincerely hope that Sony will set to open their programming specifications to the widest possible audience. As much cheaper alternatives come in the market (see Tiger's I-Cybie, which can be reprogrammed by changing the software on it's flash memory card), this will be more and more important. Eventually, the simple number of different applications that can be run on the robot (as in "my robot can do more things than yours!") will determine who wins; anyone who isn't convinced ought to look at the war that is being fought between PalmOS and Windows CE. And personnaly, I want to see Aibo win this one.
John's last mail ended with a comment wishing me "the best of luck with [my] research.". As I learn new things about the Aibo's architecture, I'll try to help as much as I can.
Cost: 10'000$ including 4 Aibos, research purposes only (Robocup) Support from Sony: Personnalized; Research only? Complexity: High Flexibiliy: High Aibo Models: ERS-2100(sic) only. Assumed also for ERS-110/111, ERS-210/220, ERS-311/312.
The OPEN-R API is an Object-Oriented, C++ library used to program the Aibo and create a customized application on a memory stick. It has not yet been released publicly, and communications with Sony indicate that they might plan to release those specifications, but not necessarily. The only known product is the "RoboCup Package 2000" provided for entry in the Robocup Sony Legged Robot League (participants must be universities commited to enter the Robocup competition), and Sony must be able to use the resulting Intellectual Properties for free. This kit costs about 10'000$ USD, comes with 4 Aibos, version ERS-2100. For an obscure reason (to me), the ERS-210 is not allowed in the competitions, but seems visually indistinguishable from the ERS-2100.
This is the most powerful way of programming an Aibo. Seemingly, this is the tool that has been used to create all existing Aibo-ware, including Aibo Life, Hello Aibo, Navigator, and the R-Code interpreter in the Programming Memory Sticks.
Support seems to be very personalized. There is a password-protected website dedicated to support developers using the Open-R API, but I know little of what happens once you get inside.
As far as I could find out, development using the Open-R API is made using a MIPS cross-compiler that creates programs running on the MIPS R4000 CPU of the Aibo.
The software architecture seems to be based on the Aperios/Apertos/Muse "reflective" Operation System, for which there is some scientific literature available. The basic principle behind the operating system is a series of "objects", contained in the *.BIN files you can see on your memory sticks, that each handle part of the robot's behavior. Each module communicates with other modules loaded in memory, following rules described in the *.CFG files on the stick.
The ideal programming kit, though not released by Sony, would allow modifying any of the predefined objects (*.BIN) and to add new behaviors on top of it.
Cost: 450$ Support from Sony: Best Complexity: Easy Flexibiliy: Medium Aibo Models: ERS-110/111
Though not described here, if you want to program an ERS-110/111, the Aibo Performer Kit will allow you to do it.
Interview with Sony http://www.feer.com/2000/0011_23/p042innov.html Robocup: "By the year 2050, develop a team of fully autonomous humanoid robots that can win against the human world soccer champions" http://www.robocup.org/ Robocup Sony Legged Robot League (application form) http://www.robocup.org/games/01Seattle/cfa2001legged.html http://www.robocup.org/games/02Fukuoka/cfa2002legged.html Personal communications Personal communications between ******, John (senior software developer, Sony ERA), and Christian Meunier (Aibolifestyle.com collaborator) Sony R-CODE reference http://www.us.aibo.com/ams/faq/rcode210-cmdref-20010626.txt Sony Apertos research project page http://www.csl.sony.co.jp/project/Apertos/ Sony Robot Box (includes pictures and movies of Aibos in Robocup competitions) http://www.sony.co.jp/en/SonyInfo/dream/ http://www.sony.co.jp/en/SonyInfo/dream/robotbox/index.html AiboPet's Aibohack web site http://www.aibohack.com (closed during copyright negociations with Sony)
AMS Aibo Master Studio. Sony's development tool that allows editing actions and behaviours. API Application Programmer's Interface. For a programmer, this is the set of functions (or building blocks) that can be used. CISC Complex Instruction Set Computer. One of the two main philosophies when building a CPU: provide many instructions, each able to do complex things. See RISC. CPU Central Processing Unit. The brain of a computer. MIPS used to mean "Million Instructions Per Second". Name of a CPU developed by MIPS Computer Systems, acquired by Silicon Graphics. RISC Reduced Instruction Set Computer. One of the two main philosophies when building a CPU: provide only a few instructions, each very fast. See CISC.
Due to the nature of this article, there is potentially inaccurate information provided herein; best effort have been made to provide accurate information. Only you should be responsible for any consequence of using the information in this article.
Christian Meunier, for aibolifestyle.com. 2001-11-11. -- Copyright (c) 2001, aibolifestyle.com. All rights reserved.