What should I make it's "brain" out of?

I've just recently become interested in robotics. Went to a friends house, and he showed me some video-clips of very advanced robots, and also built a simple robot with Lego mindstorm. Anyway, I got hooked, and now want to build one myself. The one thing I'm wondering about now, is what I should use to control it? Lego mindstorm naturally comes to my mind, but I don't feel like learning a Lego-language (or whatever they use). What I think would be fun, was to use a board from Soekris. This one for example:

formatting link
That would be cool, cause having a full Linux operating system at my disposal would give me lot's of freedom. I could choose nearly any programming-language and would have access to several hundred libraries/programs. Internet-access through wlan would also be nice :)

The other option I've thought of so far, is using a Palm Tungsten T as it's "brain". I haven't done much reasearch on how the hotsync-port on the Palms work, but from how much extra-equipment you can buy, that connects through it, I guess it's possible to get detailed information about it. Hopefully without paying PalmOne for it.

Both these options would give me the benefit of using C++ which I already know. Going for the Soekris-option would even give me the benefit of using high-level script-languages like Perl/Python for trying out things "quick and dirty".

The third option I can think of, is buying a ATMEL AT90S8515 (or similiar) CPU. Some years ago we did som assembly-programming for that CPU at school.

So what do you guys use/recommend? I think I'll go for the Soekris-solution, since I know Linux very well, but I would like to hear what you guys thought.

Best regards Helge Øyvind Hoel, Norway

Reply to
Helge Øyvind Hoel
Loading thread data ...

I'm using a OOpic which i bought at

formatting link
I've got the oopic-r which is a very easy to start board. Simple programming language in syntact style you choose (basis, C of java), easy connection to PC (rs232) and easy connection to servo's etc. Includes about 30 I/O ports including 8 A/D convertors. Very much samples (code and technical) for interfacing with sensors.

Big problem with PC boards like the soekris or via mini-itx or whatever is the lak of i/o possibilties and the big power consumption.

Peter

Reply to
Peter

No doubt that is a very cool looking little system.

But let me ask you this: Where is the connection for the motors? Where do you hook up the IR sensors? How many sonar ports does it have? Where do you hook up the quadrature decoders?

Does Linux have any support for those hardware features?

Put another way, it's neat in the same way an airplane motor would be neat on a bicycle. On a bike are two fittings which connect perfectly to one (human) engine, and one padded engine mount. If you want to put an aircraft engine on it... you'll have lots of power, but it won't go anywhere without lots of interfacing, and it won't look like a bike when you're done.

There are lots of little computers made which work better for robotic controllers.

Reply to
Randy M. Dumse

Guess you got a point. Isn't mini-ITX the "full"-fledged computers with (physical) small motherboards, used in the shuttle (and others) products? If so I think the Soekris uses a lot less power than that one. It's run by

5V DC at least, using ~ 11 Watt if I don't remember wrong. But since I'm new to this, I don't know if 11 Watt is a lot or not for robot-building. Lack of I/O could of course be a problem. It got at least one (possible with two) standard serial (COM) ports. It also supports both a mini-PCI and a standard PCI-slot. I don't know shi*t about PCI-boards, but I figure some time into the future, when I get skills for it, it might be very well possible to pull my own PCI-board to use for I/O extensions? What kind of, and how many I/O ports I'll need, I don't know much about yet. I'm sure gonna start out with a simple robot. So in the beginning, this won't be a big problem I guess. But if I'm buying the Soekris, I'll hope to use it in projects further into the future. Some of the big reasons for why I want a full Linux-system on it, is that a lot of things can be done real simple. For example I can use the Festival-program to give the robot speech-abilities with minimal effort. I have a full System-logger for logging every possible error I might be interested in, and so on. But I understand that power-consumption and I/O ports might be a problem. Some good information in helping me choosing a controller-unit would be much appreciated. It must be programmed in C/C++. I don't feel like learning/programming Basic.
Reply to
Helge Øyvind Hoel

It depends on what you want to do with them.

For simple robots I agree. For more complex robots with vision, planning, and neural networking, more horsepower is required.

There are many ways to get the peripheral support needed for robotics.

For example, you can add an Iso-Pod.

Or you could do what I'm doing, and build a USB-based board that handles servo, PWM, digital I/O, and ADC. With the FTDI chips this isn't even particularly difficult.

-- D. Jay Newman

formatting link

Reply to
D. Jay Newman

The Soekris boards are nice, indeed. I've been thinking about getting one to use as a firewall :-)

But as Randy mentioned, while that board is great for running Unix, you'll need to add other circuitry to do common robot interfacing like A/D converters, PWM outputs for interfacing to motor drivers, etc.

Well, since you are already familiar with the AVRs, I'll mention that my MAVRIC or MAVRIC-II might be a good controller for you (see the URL in my signature). My boards use the ATmega128 processor which should not be unfamiliar to you if you have used the AT90S8515. You can program in C or C++ using the GNU tools that you mentioned you are already familiar with, and the AVR architecture is pretty uniform across the whole product line - once you know how to utilize one AVR, you pretty much know how to use them all.

Personally, if I were going to use a solution like the Soekris in a robot, it would be in combination with a microcontroller. You'll either need to supplement the Soekris board anyway for driving motors (generating precise PWM signals for the motor driver), reading analog sensors (A/D conversions), etc. You'll be hard pressed to do these things in Linux or Unix without some supplemental microcontrollers or dedicated co-processor boards. At least, that will be the case on relatively "standard" PC hardware, which I think the Soekris boards are.

-Brian

-- Brian Dean, snipped-for-privacy@bdmicro.com BDMICRO - Maker of the MAVRIC ATmega128 Dev Board

formatting link

Reply to
Brian Dean

Reply to
Peter

I have also been looking at Mini-ITX systems and now Nano-ITX systems (12x12cm) boards. I think these will offer the best interfacing and horsepower available for a good robot. It already has USB ports for interfacing e.g. standard web-cameras for vision (today you can even get Creative webcameras with integrated motors to adjust the "eyeballs"), sound card is integrated for speech recognition and speech (or other sound playback), an usb based gps can be attached, serial or usb based interface for controlling motors and sensors. And a close to 1 GHz CPU that could handle most of this. They even have CompactFlash IDE adapters that would allow you to boot the OS and run the controller software from. Most also allow you to connect a wireless lan module that will enable your robot to access the internet or draw CPU horsepower from other computers around it (for advanced processing and running agents).

Now the thing I wonder about is how much power these consumer. Someone said around 15 watt for a good Mini-ITX board, but I am unsure what kind of battery would be needed to operate a robot based on this platform, and have it run for at least some hours without recharging.

I think the real challenge is in integrating some kind of intelligence with a module for vision so that it can see its surroundings. And of course keeping the weight down so that robot is able to move around at all. :-)

However I would like to know if anyone has been using any good USB based interfaces for controlling stepmotors and connecting miscellaneous sensors.

Best regards.

Reply to
Jeceel

Helge, no one ever stops with just one robot, around here. So, if you're new to the game, you might start by thinking small, and using your first robot as a learning experience, and then design big/bigger/whatever on your 2nd robot.

The vast majority of personal or hobby robots use small microcontrollers like the PIC, OOPic, Basic Stamp, AtmelAVR, and

68HC11 and its derivatives. Most of these processors have C compilers available, but do not use an OS, per se.

Very few hobby robots use something as large as a miniATX or other PC-knockoff board. Those are fine for the proper applications, but you'll find just 4-8 Kbytes of code can make quite a sophisticated little bot. Later on, when you figure out what you actually might need

512 KB for, then you can migrate up.

have fun,

- dan michaels

formatting link
==========================

Reply to
dan michaels

A lot of this depends on how much memory one has. I think that a 1 GHz

1 gigabyte M10000 may take 30 watts or so.

However, the speed and the memory make it useful for some types of robots.

Serial ports are OK. With the FTDI chips it is very easy to make USB I/O.

I prefer Java, but I am using that now with my Systronix JStik.

I will be using a Mini-ITX system because I can do things that I can't do on a smaller processor.

-- D. Jay Newman

Reply to
D. Jay Newman

I'm using a PCM-4825 (AMD 586 with CRT/LCD controllers, HDD FDD, COM: LPT: ports etc, a fully fledged PC). This draws about 15W.

Power is a problem. I'm using 2off 12v 2.8Ah batteries to power it + everything else. My rover robot runs for about 20-25 mins before it needs a recharge. Just long enough to see if my latest tweaks work, but that's about all.

As you say, it does have the advantage that it can run Linux etc, so the development tools are good.

Mike

Reply to
Mike

Dan Michaels wrote: "The vast majority of personal or hobby robots use small microcontrollers like the PIC, OOPic, Basic Stamp, AtmelAVR, and

68HC11 and its derivatives. Most of these processors have C compilers available, but do not use an OS, per se."

I have started with OOpic and my biggest limitation in building a smarter robot (with vision, speech, etc) is time. I have not reached the limitations of the OOpic and am still playing with sensors, servo's and motors. It's hard enough to write algoritms so that the robot can follow light, bodyheat and doesn't run into things.

I'm also playing with webcams, stereo vision and thus objectdetection and movement. I do this with my normal PC.

Both projects are running parallel and are not even close to finishing. In the end i think they will come together (or not but who cares:). Think that i'll build a PC with some form of mini-ITX hooked up with 2 camera's, flash disk, GPS and WLAN. This PC like thing will be connected with the OOpic. PC will be the big brain and the OOpic will be the smaller brain for running servo's, engines, sonar, IR detectors, etc.

This is just one possible solution, the OOpic can be replaced by any other PIC or MCU or whatever you can call these microcontroleers. The mini-itx can be replaced with another processorboard with enough power and extensibility for speech and vision.

Peter

Reply to
Peter

Yeah, this sounds like a good solution, as I would normally think that separating these systems would ensure a safer operation of the motoring. It wouldnt be nice if your robot tipped over the moment the main CPU was busy with some processing (or an OS-lockup was encountered).

I feel the main attraction for me about the Mini-ITX (or indeed the Nano-ITX which is even smaller) is that I can program in a higher level programming language that offer full Object Oriented programming. In many cases I can use the programming knowledge I have today instead of spending months to become good at another language. To create some sort of "intelligent" reasoning based on vision, sound etc, you need to work in a OOP domain for it to become structured.

My main concern is that the language I have been working with for the last 5 years is Java, and it seems it does not coexist well with realtime systems. At least if you want to run it on a Windows platform which has a core which steal the CPU suddenly for some seconds essentially locking all programs from operating. Maybe the Linux platform is better for this, but again then I am afraid I wont have the necessary libraries and support for the wide number of devices available for simple windows compatible USB devices today. I certainly do not want to spend months making device drivers for linux. I think that time is spent better in the complexities of vision anlysis and such.

I guess several fields of expertise is needed for a project like this to work.

Best

Reply to
Jeceel

I've been watching this thread for a few days now. It has answered quite a few questions for me :)

I have an old 486 Toshiba Satellite which I plant to use as a brain but I've got no CD-ROM drive on it to install Linux from.

What Linux do you use for your machines? Can old 486 machines be used efficiently? I have no other ports on that laptop except serial and parallel (as well as PCMCIA 1)

thanks

Reply to
Beagle2

I'm running tomsrtbt 2.0.103. Do a search on Google. Mine boots from a Diskonchip and then runs from ramdisk. I put updates onto the roverbot using an IR link. It was bit of a pain getting Linux on, but now it's there, updates are just a matter of replacing programs on the Diskonchip.

You will get a lot of people telling you to use PICs etc, but they have no real number crunching power. They are fine for rangefinding and motor control, but when it comes to "Is that a rabbit I'm looking at or is it a sitting cat ?" they don't stand a chance. Mind you, I'm still working on this, so maybe I'll run out of CPU power - but I doubt it. A 486 is fine, plenty of processor power there. After the boot process, my 586 rarely peaks over 60% cpu utilisation. Don't get me wrong, you will need PICs, but the "brain" has got to be a PC (or better).

My PC (PCM 4825) has a PC104 interface and there are circuits on the WWW for interfaces that can be used to get data in/out of your PC to your PICs, e.g.

formatting link
If all you have is a COM port or an LPT port, I highly recommend "PC Interfaces under Windows" ISBN 0 905 705 65 3. Although it is Windows based, there are plenty of circuits in there, and it's the principles that count.

Have fun

Reply to
Mike

Mike,

Thanks. The reason why I want to go with linux is that I can have more control over the OS. Also I have a feeling that Win9x would take up a lot of resources.

Thank you for the reply..

Reply to
Beagle2

If Linux is your main goal, and easier to attach lots of I/O platform, you could look at the SH series. There are eval kits that could get you started for a few hundred pounds, where board has Flash, RAM, Ethernet, Serial, buttons LEDs, IRDA port, plenty of expansion timers etc...

In particular the Renesas EDOSK7705.

For more infor see also

See for the SH7705 spec

See for a UK distributor

More bang for your buck, smaller platform than a PC, easier to add I/O circuitry when you need it.

If your looking at a 'brains' for a robot, putting something on that uses flash and RAM drives is more mechanical reliable than a PC. This sort of board is also cheaper than most PC104 offerings of the same sort.

Alternatively you can still use Linux embedded on a host of processors, or even as your development host the GNU compiler has LOTS of processor support, from 8bit to 64bit and all sorts of OS or no target OS support. [then again I ought to know that]

If you were looking Winxx you could only seriously look at the Windows CE embedded offering, which is still very resource hungry, and often still expects a screen of some sort.

Reply to
Paul Carpenter

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.