Arduino and complex robots? Possible?

Hi people, I'm new here. I'm still not quite convinced of the Arduino. I want to build a larger robot that moves outdoors and collects sensor data . I'm want to control the robot remotely through a user interface.

1 Have you ever built or planned a large robot with many functions? 2 What are the functions of your robot? 3 Which modules or hardware did you use? 4 Who actually uses the Arduino? I read that most designers use it. Is that true? What are you doing?

I would be very grateful for answers.

Greetings Dennis

Hi, Dennis, what experience have you had with robotics, programming and electronics. We need to know so that we can advise you where to start.

Thanks Tom......... :)

Hi TomGeorge!

thx for your interest. well I'am an interface designer. I have discovered the physical computing world for me. displaying and controlling throuh a display is really exiting. I programm quiet well in Java and I have began learning C++ . The two languages are quiet similar. After studying different Arduino books I have a good basic understanding of Arduino programming and elektronics.

As mentioned my goal is to build a larger robot, which drives remotely around by a user interface and collects sensor data. I would like to know what people are building with the Arduino, I mean larger and more complex robots. What hardware are they using?

I want to build a larger robot that moves outdoors

Wheeled, tracked, or biped? On grass, dirt, or asphalt? Level or sloped? Steps?

About the only real difference between a small robot for indoor use and a large robot for outdoor use that I can see is that the outdoor version probably won't encounter carpet.

Well, that and it will be heavier, need more torque, and blow through batteries faster.

What do you call large? I mean : I don't think the size of the robot is a limiting factor to use arduino or not. What is limiting is the number of pins and special function pins. But then there are plenty of ways around that like using multiple arduino's breakput boards I2C ....

Anyway my lawn mowing robot is completely autonomous (not yet auto recharge but that is comming) is about 130 cm long and 70 cm wide. Which is in Arduino world a "large robot" It also has some nice features: to name some 6 motors ( 4WD + 2 grass cutting motors) Autonomous and RC controlled driving. Full web interface and logging GPS direction sensor heat sensor on each motor Bumper sensors Current usage sensors

Best regards Jantje

Arduino is limited in complexity, but not in size. The limits happen as you try to add more and more peripherals onto your robot. Two things can happen. 1, you run out of pins to connect things too, and 2, you run out of free processing time so your timing gets more and more off, possibly causing problems. Both are easy to work around if you plan ahead and write good code. As for interfacing, a lot of that can be handled offsite from the robot, in your interface, and then communicated to the robot through something simple like a serial interface. The only thing I would not recommend trying is images and video. The Arduino just doesn't have enough memory or processing power to do anything useful with those unless it is a very small image over a very long period of time. Images are just too much data at once.

A microcontroller like an Arduino is your interface to the sensors/motors/etc. On a large project you should think of it as a peripheral device which should be controlled by a microprocessor-based system like a Raspberry Pi.

Chagrin: A microcontroller like an Arduino is your interface to the sensors/motors/etc. On a large project you should think of it as a peripheral device which should be controlled by a microprocessor-based system like a Raspberry Pi.

Is this a commonly accepted rule?

Jantje:

Chagrin: A microcontroller like an Arduino is your interface to the sensors/motors/etc. On a large project you should think of it as a peripheral device which should be controlled by a microprocessor-based system like a Raspberry Pi.

Is this a commonly accepted rule?

Depends on the complexity. But maybe I am not common. The usual rule in industry is to buy what you need and minimize the number of devices as possible/practical. Micro-controllers and Microprocessors are basically the same thing. The first just has useful peripherals to interact with the real world in real time that the second doesn't, but usually gives up stuff like processing power or advanced math functions. There is a different complexity to networking multiple devices together for communication. Also, using a single device is required for real-time applications (say motor controllers). Millisecond latency that is standard to most PC OS's (which the Raspberry pi uses) is not acceptable if you are trying to control a CNC mill. That being said, you can get real-time processing on the Raspberry Pi, it is just more complicated.

If I understand correctly you mean "multi robot project" when you say "large project". In that case I agree. Well I would use a yun but basically that is the same thing. Jantje

I'm not saying that you can't build a pretty complex robot on an Arduino. As an example, the Ardupilot guys have done a really impressive job jamming full autonomous control into an ATMega2560. Personally, though, my programming is very unimpressive and I could never cram so much into so little space, especially with all the time-critical tasks involved. It's from that perspective that I would recommend something like a Pi to act as the brains of the operation.

My point of view is that adding a external processor like the pi or yun adds complexity. Most people have a realy hard time to understand the concept of asynchronous processes and how to communicate between them.

On the other hand the mega 2560 is more than big enough for some serious autonomous robot projects where the communication with the external world is limited. (I mean don't run a heavy web site on it) For instance: I'm currently working on a full autonomous mow robot. It is 70 cm wide about 100cm long and ways more than 20 kg. I still need to program the functionality "go to the recharger" but all other functionality is there and even though I use way to much memory due to some bugs I only have 16% of the program space used and 89% of the memory space. So plenty of room left.

I don't know how much space ardupilot takes but I have found someone building a clone using a 644p with only 64K of program space and 2K of memory (which is 1/4th of what the 2560 has ). Where did you get your information they had to "jamm" it in a ATMega3560?

The bugs cost me memory only and lots of it. Due to the bug I can only run on 9800 BAUD. as I send about 800 bytes and 1 byte +-= 1 ms to send at this rate I use a buffer of 800 bytes. Because there are 3 serial ports that is 3*800=2400 bytes of the 7301 bytes I'm using.