Anyone own an I-Sobot?

I just bought an I-sobot from amazon for 79$ shipped and am planning on interfacing it with an arduino. Its a pretty neat little (I mean little) biped. 17 metal gear servos, IR reciever and remote, 3 AAA rechargables all included. Well worth the price IMHO. Anyway, Im compiling my resources on hacking the device and was wondering if anyone else has any interest in helping out/going along for the ride. As far as I know, its never been hacked really (Im excluding robodance) Just in case your kid needs another Christmas present ;) http://www.amazon.com/Tomy-7365-I-SOBOT-Robot/dp/B000US3SVA/ref=pd_bbs_sr_1?ie=UTF8&s=toys-and-games&qid=1229486751&sr=8-1

Heres the resources Ive compiled so far:

2 separate foreign disections http://translate.google.com/translate?u=http%3A%2F%2Frobot.watch.impress.co.jp%2Fcda%2Fcolumn%2F2007%2F11%2F08%2F731.html&langpair=ja%7Cen&hl=en&ie=UTF-8 http://i-sobothacking.blogspot.com/2007/12/i-sobot-controller-overview.html

Info on IR protocol http://profmason.com/?paged=2

Ive read through it all quite a bit so if youre lazy but interested, Ill do my best to answer ?'s

I really want to buy one and hack it. I just don't have enough money to buy one. :(

Hey, that does look pretty cheap for a little robot. tempting, tempting...

So its completely servo driven? Metal gears are good, ive killed poor little plastic servos before.

Anyway, if its all servos, are you talking about gutting all the electronics and replacing it with a decidedly arduino version? Theres the servo library you could use so it wouldnt even be that bad, although, im pretty sure you would be a few pins short. Damn arduino and its lack of pins, timers and memory! (or should i say atmega...)

I know at least one person who would jump at such a cheap robot. Also, how little is little exactly?

Theres the servo library you could use so it wouldnt even be that bad

I think you would find it a challenge to control all those servos using any of the currently available Arduino code. The hardware library in 0012 only supports 2 servos and the software libraries would struggle to cope. The ServoTimer2 library ( see posts starting [u]here[/u] )) handles 8 servos, and it would be possible to modify for more. But to get reasonable performance it should probably need to be changed to use timer1. I would consider making that mod if I can find the time and someone twisted my arm. But first, please verify that the servos are driven using the standard 50ms frames with 1-2ms pulses.

i read somewhere that the software servo library could support more servos than that. but no matter. you could always use multiple arduinos :wink:

as for the signalling, i really cant see why they wouldnt be standard. just makes more work for everyone…

if i had one, id test it, but i dont.
im sure someone will (or you could, you know)

Yes, there is actually no limit on the number of servos you can control using the software library, but that library requires the sketch to explicitly service the servos and that won't be easy to when there are a dozen or so to worry about. Even three or four servos can be tricky to handle using the software library if there are sensors and calculations to do at the same time.

I have seen a number of low cost toys use non standard servos. The translated document linked above has a picure of a waveform that looks like a standard servo signal, but it also talks about serial communication and shows four wires coming out of the servo. Perhaps someone that understands japanese can translate the servo info in that writeup.

I think one of the bigger humanoid robots has an i2c-like scheme (maybe even i2c) per servo, and the servo had its own command electronics. With that, the brain just has to request a given angle for each servo, and they would manage themselves at a known pace, and then signal back when they had arrived at their commanded angles. That’s why these things end up costing about $1K instead of $100.

In a quick google, it shows that they use an ATmega128 (not 168) for the servo controls in a ROBONOVA-1. I don’t think that includes the rest of the higher-level brain features.

What Halley and mem are saying is right. You unfortunately cannot use any type of servo library with the isobot. Like alot of similar robots, each servo has a separate controller that can decode a signal common to the segment (right arm, left arm, right leg, left leg). From those few who have come before me, it seems that the servos are controlled serially at 2400 baud 8N1. An 8 byte instruction includes one byte per servo (5 max for legs). The servo controllers are responsible for knowing their byte, getting there, and staying there.

For this reason, and the fact that there are no comparable hobby servos made near this size, I’d like to keep the serial protocol and the rest of the hardware except the control board. Also should be noted that it is 3.3v serial not 5v, not sure about inversion.

If I cant interface directly with the servos, or maybe as a first step, Id like to try recording some of the basic commands by IR reciever/transmitter combo. Anyone have a good general IR recording code. I saw the one in the playground

Looked at the serial protocol again. I thought that the two different dissection sites were saying different things but they actually confirm each other. Depending on the way you look at it, there is either a 1st byte header, 5 servos commands, a checksum then an 8th byte ender or there is a 2 byte header, 5 servo bytes then the checksum. It can be either because the ender/1st header byte is always 255/0xFF. Hence serial protocol is pretty well figured out.

Two quick questions, is it possible to have 4 software serial pins running consecutively? Ive never needed to find out. Can standard arduino’s run 3.3v serial in some way or does this require a “pro” version designed to run at 3.3v?

is it possible to have 4 software serial pins running consecutively? Not sure what you mean by that question. The arduino only runs one piece of software code at a time. But you can have multiple pins for software serial if you want, with each pin driven in sequence.

There are a number of ways to handle 3.3v lines on a 5v arduino, that should'n't be a problem. If you just outputting to the servos you can use dropping resistors. For bidirectional communication you can by inexpensive level transmitters or make them yourself with a FET and a few resistors. See this thread for more info: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1225292345/8

thanks mem, that answers my questions. If software serial is called four times in a row, for 8 bytes each time, at 2400 baud, the max servo refresh rate should be a little under 10 times per second neglecting code execution time and any other code that might be in the program (sensors, decision making...). I wonder if thats acceptable. The initial servo library needed hobby servos to be refreshed every 50ms, twice as often. It might depend on how each servo's controller IC works (whether it takes care of refreshing last command) That will be on the list of things to check out.

On another note, my i-sobot came today!!! Unfortunately its a "do not open till Christmas" thing. Oh well, Ill be out of town till then anyway visiting the gf.

Sorry to dig up an old thread but I need some more input. My isobot is coming back from tomy (shoulder servo needed repair/replacement). All was well handled, just kind of a bummer. Now i think I am going to buy another arduino board to use in the isobot project and I would like a recommendation based on these facts: 1. Isobot runs off of 3 1.2v nimh batteries 2. uses 3.3v logic for serial servos 3. Bulk (both weight and size) are large factors 4. I have only 5v sensors and equipment 5. I plan on buying an ftdi usb converter board anyway

My two boards that I have been thinking about are the 3.3v pro mini and the ardupilot board. Ardupilot because I also would like to make a uav (I will at some point probably buy it). Basically how well can a 5v board run off 3 nimhs?

Well the all the servos in say the left leg are chained thru just one serial line and basically the stock controller throws a byte string down the chain and the corresponding servos do there thing. you actually need 5 for the isobot 2 arms 2 legs and the head servo.

you might want to check out another users topic where he already created a library for the isobot codes

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1237771631