Linux + Robots = Fun?

So I found a copy of Robot magazine at the PX here in Iraq :smiley:
And that led me to LM. Now I’m so excited about robots that I can’t sleep.
I haven’t used Windows in years, because it keeps breaking and I’m afraid of getting cut… So I’m looking for some Linux + Robot advice.
I have done C and Java programming, and am currently working on an embedded Linux project (ARM).
What robot kit would you guys suggest that will work nicely with Linux, and be either C (preferably) or Java programmable? I would like a kit to start with, just so I know I have everything I need.

Thanks in advance!

I really can’t offer much help in this area since I never used the Linux OS.
What I can tell you is if you plan to use the basic atom or the basic atom pro or the SSC32, the software used to develop sequences or code is windows based.

The question is if Linux has a windows emulator that can run windows apps? I haven’t a clue.

Most of the kits we sell requires windows for one reason or another. All kits with servos use the SSC-32 servo controller. This is used with RIOS or SEQ if you don’t want to write a PC application from scratch. Many of the kits use a Bot Board with an Atom microcontroller to send commands to the SSC-32. The programming environment is windows based. Also for the 3DOF hexapods we wrote a windows application that actually writes your Atom code for you. So without knowing which robot kit you are most interested in it’s difficult to know how to help. If your interest is in programming and you want the robot to be PC based, then you can control the SSC-32 from the PC utilizing your program via a DB9 serial cable, a USB to serial cable, or any LAN or bluetooth device capable of providing serial coms to a device. Hope this helps, stay safe!

Thanks for the info. I have the KB9202 board from kwikbyte that I am learning embedded Linux with. (Sorry I can’t post the link until I make a real post :wink:)
Well I am most interested in the bipeds, however, I want to start with something like a 4WD rover, or perhaps a quadrapod.
I think I would lean towards controlling the SSC-32 over a serial connection.
Of course I would like to add some sensors to my bot at some point, and I see that most of your sensors are plug and play compatible with the bot board. What type of interface is this?

Thanks again for the info!

I’m not an expert on talking to the Bot Board via bidirectional serial with a PC. Other here can help with that. Suffice it to say it is certainly “doable”. You can download the manuals for the SSC-32 and the Bot Board, as well as the Atom programming guide. So download and read up. :wink:

The manuals are found in either the product “more info” link or from the information section of the website. Good luck with the project. :smiley:

Hi ?,

Here’s a Kwikbyte link: kwikbyte.com/KB9202.html

Quite a board for a small 'Bot! You haven’t said what language on Linux you intend to write your code in.

The LM PowerPod program as mentioned generates an Atom BASIC program, you’ll need LM’s 'bot board and an Atom uP to run it. Probably a better way to start off if you’re doing complex IK on a Hexapod/Tetrapod then getting it ALL working at once (hardware, processor, software). Might be OK for a wheeled 'bot.

The SSC-32 controls well over a serial link. Send a message like “#1P1500”, and servo #1 goes to 1500 (center). There is a simulator program example with the PowerPod files for the PC that simulates the PS2 joystick controller. The generated code for the Atom 'bot board can be built for this “PC” example. That’ll tell you all you need to know.

Sensors? I2C interfaces, some analog. Look up spec’s for sensor(s) of interest.

HTH

Alan KM6VV
P.S. Keep your head down over there!

Already have been downloading and reading them :smiley:
Once I make up my mind what I want I will post here to get some feedback. As this will be my first bot I’d like to hear what other people think of the plan and to make sure I have everything I need to get started.

Thanks!

Thanks for the reply KM6VV, I already had this board (been working with BusyBox Linux), so I figured it would put it to good use if I made a bot out of it :stuck_out_tongue:
I want to use C or C++ I guess if I am controlling the servo controller over serial :bulb: I could use PERL, I’ve done plenty of PERL programming, so actually that is sounding like a better idea right now than trying to get back into C. And if I go with the A4WD1 Robot, I could use the Sabertooth 2x10 motor controller, that takes serial input.
I really don’t want to have to use windows (or wine on linux) to do anything. I think I learn more, and it seems more fulfilling (I think is what I’m trying to say) if I do all the work myself rather than use a program to make the program for me.
I started reading about I2C last night. I’ll go back and download those sensor data sheets.

Now you’ve got me started! I just checked out the Devantec SRF-04 and SRF-08 (does LM carry '08?), and also LM’s Accelerometer based on the ADXL322. The Ultrasonic sensor requires timing the return ping, and the Accl requires two channels of analog.

PERL scripts, I’m told are useful, but you’ll probably need/want some FP calcs, if your processor and language can afford them. I’m a long-time fan of ‘C’, and have a working (first steps!) hexapod 'Bot (Shelob) running a PIC with Hitech’s ‘C’ compiler.

There’s a lot to be learned by studying existing 'bot code! Yes, learning is one of the goals!

Alan KM6VV

I think I should try to keep it simple to start with so I can concentrate on individual parts. I can see right now that I will get carried away pretty quickly!
As much as I like perl, you are right about C, I should probably concentrate on C, it’ll be much more useful in the long term.
What specific board are you using? If you don’t mind my asking.

It’s the “Quick Flash” board, as discussed in the PICBOOK:

picbook.com/

The board is available for $15 USD. Book discusses the 18F452, but I run the 18F4620 in the boards I have. Plan is to be able to use multiple processors, and connect via I2C. A kit of most parts (no uP or LCD) is available from DigiKey. Book is good, but examples are in ASM.

“SIMPLE” would be to just go and buy the Atom BASIC 'Bot board, But I can tell you want to learn more and prefer ‘C’. ;>)

MicroChip has an only slightly limited C compiler that you can download.

Alan KM6VV

Ohhh I should have specified, keep the hardware simple to start with to keep the programming technically simple to start. =P
I like the multiprocessor idea, I was reading in that Robot magazine about the “Propeller” chips, where the author used the individual processors to farm out the processing for different sensors. Makes sense.
But again, I need to start technically simple. Also, the Propeller uses a ‘C’-like language, not C.
How are you controlling your servos with that board? Are you actually signaling a servo controller board? Or do you use the D-A on that board? (I looked at the Qwikflash on the link, I’m assuming thats a similar board to what you actually have?)

As you dig deeper into the prop you find it’s necessary to program some things in assembly. :open_mouth:

Yes, by all means start simple! Get some successes first!

The Propeller chip sounds interesting, but multi-processor interactions are probably not the best place to start! ;>) And I make it a requirement to stay very ‘C’; and thus portable to other platforms (I’m thinking ARM7 here). I think LM’s new Atom Pro IDE can do C?

I am NOT running multiple processors at the current time, I’m just planning for it by allowing stacked boards with a convenient I2C interface.

For controlling servos, I use the SSC32, although I HAVE driven R/C servos and stepper motors directly from it. Currently it is commanded via RS-232, although I’d like to use I2C. I also wish it had an ISP connector. Maybe in the next revision? ;>)

Yes, same board, you can download the manual, code, schematics, even assembly notes. It’s an easy board to assemble, anyway. Nice little LCD, ISP connector, RS-232 connector, even some prototype area. Built in A/D, D/A pot, shaft encoder, EEPROM, etc.

Alan KM6VV

If you purchase a kit without electronics, then any of the LM kits would work. You could then add your own MCU such as ARM, PIC, AVR, or whatever else you want to use, since all of those are programmable in C.

You can use the SSC-32 servo controller with ANY MCU that has a UART, since it takes standard ASCII text commands over an RS-232C or TTL level serial port.

You will lose all advantage from software created by Lynxmotion though, since all of that is strictly Windows based. You could program the Atom PRO in C, but you would still have to use the Windows IDE to do that.

I am in the process of learning how to program PICs and ARM7 MCUs now, and will likely be using both of those on my WALTER robot, which is currently running with a Basic ATOM on a Mini ABB., I am partial to the NXP LPC-2000 series MCUs such as the Olimex LPC-2148 boards I have, when it comes to ARM7 MCUs. The LPC-2148 has a really nice feature set, 512K Flash, 42K RAM, 2x I2C, 2x SPI, and more.

The only catch when it comes to ARM7 and similar MCUs is finding an acceptable development environment. I am going to be using Rowley Associates Crossworks for ARM, which is available for both Windows and Linux. I have the Linux version running under Debian Etch right now. Rowley Associates has excellent support too, and you can get a 30 day evaluation license.

Linux based boards are typically going to be more expensive, but there are are some reasonably priced one for the capabilities you get. For Linux, you want an ARM9 or other Linux capable board with ample Flash and RAM. There is the Atmel NGW100 Network Gateway kit (Mouser, Digi-Key, Newark), which sells for under $100.00 and runs Linux with kernel 2.6.x. For a little more money there is also the iMX21 COG, which uses a Freescale i.MX21 ARM9 MCU. I have become a little partial to the Freescale ARM9 MCUs lately.

Going with a Linux based controller for your robotics work gains you a LOT too. You have many different languages, both compiled and interpreted (Python is a favorite of mine). You may have a little trouble finding sensor controllers that can be used with Linux though, but there are some solutions to this available. I2C and SPI are twp things you should definitely learn about, and there are quite a few I2C based sensors and SPI based chips available that would work with any Linux controller having these buses.

8-Dale

Check out this baby for a linux/arm system:
lynxmotion.net/phpbb/viewtopic.php?t=2614

It uses a gumstix.com motherboard.

LM’s dependence on windows is a bit shortsighted IMNSHO, there’s really no excuse for not going cross-platform, especially with technically competent users and embedded systems in the mix.

not so humble opinion? uh huh. why would anybody seriously operating in a slightly above the average consumer toy market divide limited resources to cross develop for the elite fringe when somewhere around 90% of the installed OS are windows based? There’s a marketing decision for you. IMNSHO if the elite are so elite then they are more than capable spinning their own while the folks who just enjoy tinkering sit back and just use the tools that work. :wink:

linuxguy, KM6VV,

Thanks for all the info! I think I have a lot more research to do =P But at least now I know what to look for. I definitely want to use C and Linux, regardless of any perceived “minuses” to going that route, all the “pluses” easily outweigh them.

And I have to agree with lewis, there are a few cross platform tools I’m sure more than a few of you have heard of… Eclipse and GCC. But as long as I can use C to control servo and motor controllers I’m more than happy :smiley:

Thanks again everyone!

two hours later + caffine and I guess my post was a little harsh, however I really read it as a critique on LM that they are not using resources to develop their programs for platforms other than windows based PCs. All of the hardware we buy from LM can be controlled by any program on any platform anybody wants to take the time to write. I all too frequently hear people of the linux-esque mind set give people flak about how they are being neglected while they themselves are free to neglect that people in business need to make money on the products they develop. there are some business models that have allowed a select few companies to be profitable and sink the funds into cross platform support but most of them seem to be software product oriented to begin with and not manufacturing products that have software developed to accessorize them. I personally think that if LM were to suddenly start sinking their time into developing cross platform versions of their programs then all the features and upgrades the folks who currently use their windows based stuff are happily waiting for would be put off for a much longer time.

Anyway, sorry about the rough sounding reply above. :frowning:

I looked into linux a long time back, and what I found is that unless a person is already very knowledgable with linux, linux becomes a project in itself. I’ll follow your progress in developing a working robot setup using linux. Having a small free workable system using linux would be very desirable for those wanting to make a computer based bot. I think the old saying applies that if it is easy and workable, people would already be using it.