Software Engineering RS Media

127 posts / 0 new
Last post
The Cylon
The Cylon's picture
Software Engineering RS Media

If we don't already have a single document (a.k.a pdf or html) with RS media, directory layouts (for SD), file formats (e.g. .bcn, .sh) a set of simple test case files, etc. then we should make one. There is a lot of good information in these threads, but its distributed and that makes it not practical. Also there is some o good information on RS.TK.

I'm interested in helping develop new software GUI clients, and command line clients for the RS Media that will be more platform independent(i.e. runs on Linux, Mac OSX, Solaris, AIX,a nd Windows) but to do that we need to have a baseline document that provides as muchaccurate and up-to-date detail as we have available for the RS Media with respect to the Media Suite and its interaction with the RS Media.

Is there such a document already?, Or are the cumulative threads on this message board the best we can do? From reading the threads I know Nocturnal and a couple of others have done what looks like most (if not all) of the discovery process already. Certainly enough to produce a base document that we can use to produce a developer's guide to the RS Media.

 

Anyone intrested in doing this? Or has this effort already been done, but not available?

If there is no such document , I'm interested in helping put one together.   Actually we need three high quality documents:

1)  A  complete developers guide to the RS Media

2) A  complete user's guide to the RS Media

3) A tutorial for the RS Media (complete with a few sets of examples)

 

The Manual that comes with RS Media while nice is lacking.

The online help that comes with the Media suite while nice is to say

the least incomplete. 

 

I think we can do better,  any takers?

 

 

 

 

 

 

Dradts
Dradts's picture

There are, as far as I know, two ways of developing "software" for the RSM. The first one goes by writing shell-scripts, the second one is the Sun Robot-JSDK. I guess the second one is more complex and powerful than the shell-scripting, but not everyone has the SDK and also, the current SDK has some bugs and glitches.

So I think we could split point "1" into "1a" and "1b" which could contain information about writing shell scripts for the RSM and about how to write and run Java Applications for it.

Also, a list of available RSM firmwares would be great, with the known differences between these firmware versions. Afaik, the RS Medias which were sold on the Java Developer Conference, have a different firmware than the ones sold earlier by WowWee.

The Cylon
The Cylon's picture

This is essentially   correct.

 

But alot depends on how much we can do with the shell scripts.

For instance: If I compile a small binary (self contained program) and put it on

the SD card and call it from the start up script will it execute?

Which shell commands do we actually have access to as we're

executing stuff off the SD card.

 Also would the RS Media know the difference if we our own version of robo_play, etc?

 

I agree with the 1.a and 1.b division, but if the .sh files we write have access permission to

create sub shells, or child processes, or execute binaries that we have installed on the SD.

Binaries that would get created for the Arm9 processor.

 

I'll start gathering all  of the  various (sometimes conflicting) information from these boards and RS.TK that relates to development,  I'll put a rough outline together

and  that could be part of  a start to this also.

 

I have the capability to compile for my Arm9 in my NXT,   Do you know whether RS Media has the same processor?  Some rumors were a while back thathe did.

 

 

 

Nocturnal
Nocturnal's picture

I suspect documentation along similar lines to what you are suggesting does exist, but I doubt WowWee, Emsoft or Sun will be willing to share them with us.

The Java SDK is not entirely functional, and as yet, there are no patches to correct the issues with it. using the Java SDK is definately more complex than writing shell scripts, but for a lot of things , you'd be better of with the shells scripts (not everything, I can't really think of a good way to create a UI using just shell script).

You can also write programs for the RS Media in C (and presumably C++, but I haven't tried that), but without documentation and header files to link against the existing libraries, you are limited in the functionaly that can be acheived. I have no idea if the toolchain for the NXT would be compatible with the RS Media.

The RS Media neither knows, nor cares (in a certain sense) what programs you call from shell scripts.  If you look, somewhere on the RoboSapien.tk forum, is a post of mine listing all the files on the RS Media, most of the available tools are in /bin or /sbin.

You will probably find a quite a bit of conflicting information in my posts. The newest posts will contain the most accurate information.

 

The Cylon
The Cylon's picture

They are probably unwilling to share possibly because they  haven't worked it out  really themselves.  I appears through documentation that  came with the robot they are really trying to reach a different market than 'robot application developers' :-)

It seems they hope to get to the elusive 'General Mass Market'. Its not clear whether they understand that whatever the sales have been for the robosapien series, they would be considerably larger if they let the development community have 3rd party access.  The developer communities are always better poised to  write the utitilies and applications than the big vendors.

Nocturnal I agree you're right there a lot of barriers. But what the heck.  I have a deep background in  Unix/Linux, C++ and Java, 6800, Z80, Pentinum, AMD, and UltraSparc processors.  So I'm willing to at least have a crack at doing the impossible.

 Maybe we can start with what we know.

Do we know specifically what processor(s) are in  RS MEDIA.   The advertising and rumors are that its a ARM9,  but has anyone actually verified that?  Is it custom?

 Also we know that its running Embedded Linux of some kind.

What services are available at the shell level and kernel level?

Some one said that the sd card is mounted read only. If it can be mounted with rw permissions then. perhaps we can look at the raw materials.

 Arm X processor

Linux (some limited functionality)

1 gig of storage

40 meg of flash? (is that correct) 

A Sd slot

A usb slot.

A Wireless interface 

 

Although I prefer not to start from scratch, we can,   If we know exactly which processor(s) are in the RS media then we can get the instruction set.

 If we know exactly what the implementation of the embedded Linux that's in the RS media then we  can look at writing our own loader,  and  language (if necessary) Although a little ARM9  assembly:

 LDR RO, [R7]

ADD R5,R0, R1

 might be more fun :-)

 I guess the clumbsy point I'm trying to make is if we know what the file format is, and we know what the instruction set is and we know what the boot process for the robot is,

Why do we have to wait on Sun, Wowwee, or anybody else. 

 Now if we can't get definitive information on the exact processor(s)

and if we can't  get exact information about the embedded Linux implmentation

and if there is no way to mount the SD as rw,  then it makes things a little

harder, but not impossible....

 

Nocturnal, I just think that Wowwee is not really marketing to folks like us, and if we

want to take the robot to higher level than its at we'll have to do it without much help from the original vendor.

IMHO  it was ludacris to have Linux and Java on the back end, and  Microsoft and Visual basic on the front end.  If they had made the front end Java from the very beginning the robot would be far more marketable today than it is now.

 

 

Eric Brandt
Eric Brandt's picture

Cylon and Nocturnal:

How can this community help you "take the robot to a higher level than it is"?

Your point about information being scattered is something that could be rectified. And Nocturnal's point that some older posts are less accurate than newer ones -- that suggests that perhaps we should encourage the making of a new factual summation with a central presentation.

Is there some working space we can create that will help you collaborate to create the documentation you envision?

I can imagine creating a dedicated cooperative blog for you -- so you have access to a "private" corner but where other people can still see and contribute to your work.

Thoughts? 

 

Nocturnal
Nocturnal's picture

*Laughs* I have that already Eric. Its called my website.

The Cylon, I don't have time to respond in full to your questions (or your email) right now, but for the moment you might like to look at these pages on my website.

Media Board details

Serial Console access 

The serial howto is a working in progress, but the important details are there. 

roschler
roschler's picture

Nocturnal, The link to "my website" contains the sub-directory "nobosapien" instead of "robosapien".

The Cylon
The Cylon's picture

Nocturnal's presentation on

Media Board details and

Serial Console access are EXCELLENT!

This is exactly the level of detail I'm talking about.  Although I could not access his website though.

So from his presentation we have  at least 2 sections:

Section 1) Mod on creating a serial console access allowing  telnet and possibly

something like uucp, ftp, or a minicom type file transfer

 

Section 2) A Overview of the basic RS Media Mother board and hardware capabilities.

I'm sure Nocturnal's site has other  'mission critical' pieces of information!

 

If not on Nocturnal's site we need:

1) Which shell  the embedded Linux is using (C shell, bash, tcsch, bourne, etc)

2) We need exactly which shell commands are available and switches that

    are actually applicable to the RS Media

3) SD card mountable as  rw

4) assembly level or  C level   API to the RS Media (Interface between Arm9 processor and the hardware and software of the RS Media) This would kind-a-be-like  RS-Media's BIOS layout.

 

5) Detailed memory map of RS Media and how virtual memory / swap (if any) is handled 

6)  Port/ Interrupt  Descriptions if Applicable 

7)  A tool chain that will allow us to develop binaries small enough to work  within

    the  1 gig/40 mb flash constraints 

 Since I can't get to Nocturnal's website, I don't know whether he's already dealt with all of  this or not.

But if we could put together a comprehensive document that includes Nocturnal's (EXCELLENT WORK!) and these items we would have the 'BEGINNINGS'  of a

software engineering document for the RS MEDIA 

This would only be a start to taking this robot to the next level. 

 There are three  important branches in taking the RS MEDIA to the next step 

1) Hardware Mods (Like the one Nocturnal describes for Serial Console Access

   (and standardizing on which approach to the mod will be most accessible) 

2) Software Development

    a) utilities

    b) applications

    c) user interface enhancments

3 ) Making the RS MEDIA  Mac OSX, Linux, and Solaris friendly and communicating that fact to those communities. This step  is important because there are folks in the Mac OSX, Linux, and Solaris/Unix communities that have the software skills to take advantage of the  'properly chosen' Operating System  for  the RS Media

In terms of this community helping and central repository,

It seems to be that a topic dedicated to this subject would be sufficient and a place to store

a comprehensive .pdf and set of html files would be good enough.

 

A likely barometer is how well organized the  NXT documentation and community is.

Robosapien class  robots have to at least achieve that.  I think robosapien has an advantage in that it has the Linux/Java thing going on.  But if we can't seize upon that,  it will loose out in the long run.

    

Robostuff
Robostuff's picture

A very good point.  Mac computer users are of course a different breed, many very software savy, artists, designers etc.  Lego Mindstorms learned there lesson after the outrage with the first version.  The new Mindstorms is now Mac compatible.  I do not as of yet own a Mac but do plan on getting one soon, very user friendly and unconstricting.  I would second that to Wowwee that it would be extraordinarily beneficial to get this matter remedied.  This robot has alot of potential, a hackers dream when properly documented and these issues fleshed out.  I am not complaining however about RS Media, it still is a bargain and something many of us have been waiting years for a robot like him.  When you pack in a humanoid robot, boom blaster with subwoofer, Ipod, color camera, color vision, an endless list, it still is fantastic.  Im just agreeing with the parties here that to keep this robot alive and growing, assistance is needed.  The Java edition was a good start however.

Dradts
Dradts's picture

The worst thing is, that the RS Media cannot even be mounted on the Mac. WoWwee should have designed the RSM so that it can be mounted on every computer as a standard flash drive.

The Cylon
The Cylon's picture

Once we get enough documentation we maybe able to remedy the mac situation.  Is the issue for mac that its not completely recognizing the usb?

 

Anyway for right now the  Mac users and Linux/Unix users can focus on getting the commands .sh .bcn  files onto the SD card and in the right directories.  Once there the RS Media will execute them.

 

Does  A Windows running on Virtual PC on the Mac work?

Yeah, I don't mean to turn this into a  Mac/Linux vs Windows but....

Wowwee would do good to make friends with the Mac and Linux crowds (They're extremely loyal)  On the other hand Microsoft is putting is robot research efforts into its own robot studio (hardware and software).   And while they may court Wowwee initally, as soon as their thing is market ready they will aggressively act in their own best interest!

Whereas the Mac/Linux/Unix community tend to be loyal to software and hardware that works on their platforms, Windows users (excuse the gross generalization) will switch, and they'll switch fast!!!

 

 

Dradts
Dradts's picture

I don't know whether the RSM will be recognized by VirtualPC or by VMWare/Parallels on Intel Macs. But I guess it would work. The Mac also "sees" the RSM. It just seems that OS X does not know what to do with it. The RSM appears under the System Profiler -> USB. I currently don't remember what the device is called there, but I will look that up on the weekend.

The SD-Card way is also ok, but direct USB connection would be just great. 

The Cylon
The Cylon's picture

I have seen the Media Suite working under vmware and Linux, but even when its working....

there are some user interface design challenges that Wowwee is confronted with.  Its hard to make something that satisfies everybody.

 

The user interface that might satisfya noob in the 8yrs to  12yrs age bracket

might not satisfy the seasoned hobbyist in the   40 yrs to 50 yrs  age bracket and so forth.

 That's the same behavior you'll get under Linux.  Linux will obviously recognize that some Usb by some manufacturer has been plugged in but that's as far as it goes.  You'll have  to

write a little driver yourself (and we can if we get enough quality information) about the RS Media hardware.  The fact that the Mac sees it is a good thing.  With a little USB programming (its easier than it sounds)   MacOSX would be in business.  But we need some details on the RS Media side of things.  Some of the information on Nocturnal's site  is extremely useful, but we need more to complete the driver.

 

Robostuff
Robostuff's picture

Wowwee are you reading this?  How about some help?

Dradts
Dradts's picture

Sorry, I have not had the time to check the USB-Mac connection last weekend. I will post my results probably next thursday...

The Cylon
The Cylon's picture

First Rough draft Outline of the proposed document:

 

1) Hardware Details of the RS Media

     1.1  processor

     1.2   memory

     1.3  storage

           1.3.1  internal storage

                    1.3.1.1 file system layout

           1.3.2  external storage

                     1.3.2.1 file system layout 

    1.4   I/O

           1.4.1   camera

           1.4.2  usb

           1.4.3 serial

           1.4.4. audio

 

   1.5  RS Media hardware Limits

           1.5.1  control granularity

            1.5.2 balance

           1.5.3  physics

           1.5.4  power consumption
 

 

2)   Software Environment Details 

    2.1  Operating System

   2.2  Shell

         2.2.1  Shell Commands

   2.3  RS Media Commands

         2.3.1  Command Parameters

  2.4  Java

 2.5  Media Suite

       2.5.1  BodyCon.sh  layout

       2.5.2  Startup sequence layout/parameters

       2.5.3  .sh  layouts and parameters
 

 2.6  Boot Sequence 

2.7  Tool Chain for Linux/Arm9/RsMedia

 Whats missing?

 

If we get this all filled in  Hallelujah!

 

 

         

 

Nocturnal
Nocturnal's picture

The Cylon said:

1.3.2 external storage

1.3.2.1 file system layout

Technically, pretty much anything outside of RAM is external storage (According to my introduction to digital systems lecturer), but I assume you mean the SD card. Since an SD card can have pretty much anything on it (since people can add things to it external to the RS Media), I'm not entirely clear what you are planning on putting in this section.

For that matter, I'm not entirely clear what you would be putting here that would qualify it for the "Hardware" section of your documenation.

The Cylon said:

1.4 I/O

1.4.1 camera

1.4.2 usb

1.4.3 serial

1.4.4. audio

 

Your missing the LCD, SD card and second Serial port.

The Cylon said:

Whats missing?

Your also going to need a section in there on inter board communications, since the "Media Board" does not actually control the body, it sends instructions to the "Main Board" via a serial connection.

The Cylon
The Cylon's picture

The SD card will be dealt with under external storage (1.3.2)

The serial is dealth with under I/O (1.4.3)

 

Thank you I will add the LCD as 1.4.5

 

Here the second rough draft   Outline of the proposed document:

 

1) Hardware Details of the RS Media

1.1 processor

1.2 memory

1.3 storage

1.3.1 internal storage

1.3.1.1 file system layout

1.3.2 external storage

1.3.2.1 file system layout

1.4 I/O

1.4.1 camera

1.4.2 usb

1.4.3 serial

1.4.4. audio

1.4.5 Lcd

 

1.5 RS Media hardware Limits

1.5.1 control granularity

1.5.2 balance

1.5.3 physics

1.5.4 power consumption

 

2) Software Environment Details

2.1 Operating System

2.2 Shell

2.2.1 Shell Commands

2.3 RS Media Commands

2.3.1 Command Parameters

2.4 Java

2.5 Media Suite

2.5.1 BodyCon.sh layout

2.5.2 Startup sequence layout/parameters

2.5.3 .sh layouts and parameters

2.6 Boot Sequence

2.7 Tool Chain for Linux/Arm9/RsMedia

Whats missing?

The Cylon
The Cylon's picture

 

Here's the  third rough draft   Outline of the proposed document:

 

1) Hardware Details of the RS Media

1.1 processor

1.2 memory

 

1.3.2.1 file system layout

1.4 I/O

1.4.1 camera

1.4.2 usb

1.4.3 serial

1.4.4. audio

1.4.5 Lcd

 

1.5 RS Media hardware Limits

1.5.1 control granularity

1.5.2 balance

1.5.3 physics

1.5.4 power consumption

 

2) Software Environment Details

2.1 Operating System

2.2 Shell

2.2.1 Shell Commands

2.3 RS Media Commands

2.3.1 Command Parameters

2.4 Java

2.5 Media Suite

2.5.1 BodyCon   .sh files

        2.5.1  DefaultBcon.sh

       2.5.2   MotorRel.sh

       2.5.3 BasicMove.sh

       2.5.4  wait_rtn.sh

       2.5.5  time_delay.sh 

2.5.2 Startup sequence layout/parameters

2.5.3 .sh layouts and parameters

2.6 Boot Sequence

2.7 Tool Chain for Linux/Arm9/RsMedia

2.8  File System Layout 

       2.8  Internal File System Layout

      2.9  External File System Layout 

Whats missing?

FREEEK
FREEEK's picture

    You have pretty much free time... Do you think someone who's interested in RS Media and/or programming robots is interested in your book chapters ?!? Your discution is now not about RS Media ... is about how to make a book ?!?

 

P.S.: ... forgive me if I'm too stupid to understand what are you doing ... 

Nocturnal
Nocturnal's picture

The idea is to write a document that tells you how to program the RS Media, The Cylon is proposing a structure for the document. Which is generally, not a bad place to start from.

There is nothing about the RS Media (except in abstract), because it hasn't been written yet. 

Robostuff
Robostuff's picture

This is an excellent idea, Wowwee would find helping in this project a wise investment that would draw hackers and more hobbyists

FREEEK
FREEEK's picture

    Nocturnal ... mabey my computer is virusated because all Cyclon's discution refers EXACTLY (not in abstract :) ) about RS Media ... so you do not know what you're talking about?

    ...about the subject (as you said before0 Wow Wee will never give any detailed specification about RS Media programing ... so what (or WHY) are we talking about? 

 

P.S.: Sorry ...  because ... Frown

milw
milw's picture

1.1 Processor - shouldn't it be broken out to 'Processors'? There is the Media Board processor that controls the LCD screen, USB and SD interface; and the Main Board (controller) processor that sends move commands to the motor driver board

Nocturnal
Nocturnal's picture

You were the on who said the discussion had nothing to do with the RS Media FREEK. Abstract because there is nothing specific (yet). I agree WowWee is unlikely to provide the details, that would be why we are talking about writing our own.

The second processor should definately be mentioned somewhere (probably several somewheres), since its the one that actually controls the body.  Which brings me back to the point about the two serial ports, one has the root console on it, the other is used to communicate with the second processor, you can't treat them both the same.

pevansom
pevansom's picture

I like this idea. It will definitely be helpful, and we won't get it from WowWee. I don't think I'm technical enough to be much help though, so I'll just cheer you all on from the sidelines....Yell

 

Nocturnal, the serial ports, are they internal to the robot? How do you get to them? Does the root console mean you have direct access to the underlying Linux?

Nocturnal
Nocturnal's picture

They are internal, and yes root console means you have access to the underlying linux.

This partialy complete howto I am writing describe how to access the root console. 

pevansom
pevansom's picture

Nice, thanks Smile

I've been dying for a way to get at the RS' linux! Yay! 

Robostuff
Robostuff's picture

Thanks for posting the howto Nocturnal, very helpful

The Cylon
The Cylon's picture

Yes this is a documentation effort for people interested in programming the RS media 

Yea the basic idea is that

we start with an outline  and fill in that outline as we get the information.  And provide that information in a central location for anyone to benefit from.

 It would be nice to provide another (more cross platform media suite to the community).

I'm not going to go in the merits of  this platform versus that platform, but I work in a Linux/Solaris/AIX and Mac OSX environment and the RS Media Suite under XP is really out of the question.. And there are  thousands of folks in the same boat I'm in.

 It would be nice to provide a new Open GL -based  Media suite rendering of RS Media that allow the user to add objects to the virtual environment . That way  the user could actually program the RS Media to manipulate the objects in the environment and then have to robot do something a tad more useful.  

Yea the 3d manipulation of RS Media is kewl (but there needs to be objects in that virtual environment for RS to manipulate)  

If we develop an alternative media suite then we could do things  like give the user the ability to add objects to the virtual environment.   for instance another RS media could be added or blocks, cups, balls,  could be added allowing us the really bump up interaction.

 

I'm still working on filling in as much of the outline as I can, and as soon as I get the opportunity to verify everything I'm going to post it.  

I think its better for robosapien in the long run if this kind of information is freely and easily  accesible.

 

Pages