Streaming Video to a Computer

I am a beginner at programming microcontrollers, but I am wanting to build a remotely operated 'rover' of sorts that can stream video to and be controlled by a computer wirelessly. I understand that the arduino itself cannot process/transmit video. Is there an easy way to do all this with a arduino chip? I think I need to use bluetooth as my comm medium, but I'm not sure.

I understand that the arduino itself cannot process/transmit video. Is there an easy way to do all this with a arduino chip?

It appears as though you didn't understand the part about you can not do this.

The Arduino, with suitable add-on wireless devices can be controlled wirelessly. The suitable wireless devices include XBees, RF transmitter/receivers, and bluetooth.

The XBees are simple to configure and use (the Series 1 ones, at least), but they are not cheap.

RF modules can be cheap, but they are one way. They do not implement any sort of protocol for dropped messages.

Bluetooth. What to say about bluetooth? I'll just suggest that you search the forum for blue tooth related issues. It seems like something close to 100% of the people that have blue tooth Arduinos have problems. You might be lucky, and it will work flawlessly.

I'd stick with the XBees. I've had great luck with them.

The Arduino can handle controllin a robot, but not the video.

The video part could probably be done with one of the wireless surveilance video camreas you can buy relatively cheap online.

I don't know the range of these cameras, and i don't know how well they work when transmitting from a moving object like a robot, but i guess you can get answers to that in one of the Robot forums.

I am currently in the process of building such a rover (also called a UGV - unmanned ground vehicle); this platform is going to be large, you probably want something smaller.

In the process of developing this UGV, I was initially considering using a 1/6 scale "monster" truck (some cheapo New Bright toy) - in fact, I had already created the "alpha" test platform several years back - here is a pic:

Here is an article about it:

http://www.phoenixgarage.org/show_article/51

I was planning on using a Basic Stamp 2 board I had (and which you can find articles about on my website - http://www.phoenixgarage.org/); transitioning to the 64-bit Ubuntu platform nixed that in the bud (long story short: Parallax only released a 32-bit static-linked binary of the byte-code "compiler" for Linux - and lost the source code; so you can't use the Basic Stamp 2 in a 64-bit environment) - that led me to the Arduino.

I was initially going to do the following:

  1. Develop the code for the microcontroller to control the steering, drive motors, and pan/tilt servos via commands sent over the serial port.

  2. Once this was working, I was going to transplant the microcontroller to the RC truck, and bench test the truck, pan/tilt, etc - put it "up on blocks" so to speak to keep it from taking off on the bench.

  3. Once that was working correctly, I intended to purchase a pair of these 433 MHz transceivers from Parallax:

http://www.parallax.com/Store/Accessories/CommunicationRF/tabid/161/CategoryID/36/List/0/Level/a/ProductID/582/Default.aspx?SortField=ProductName%2cProductName

They would probably work well with an Arduino, BTW - or you could use something else; you just want it to be two-way (so you can send commands, and receive sensor telemetry data back - I had intended on putting a GPS module on-board as well).

  1. At that point, I was going to sever the physical serial link, and use the transceivers for control; my test application (at that point) was to be either a Python or Perl application communicating with the microcontroller. All the microcontroller was for controlling the RC truck, the pan/tilt servos, and relaying back sensor information, and GPS data as requested.

  2. The color video feed from the 900 MHz camera mounted on the pan-tilt system was to be fed into the control PC via a Hauppauge video capture card. I could monitor this video feed remotely, as well as capture the feed and use it for vision processing routines running on the PC; this coupled with the GPS data, would hopefully allow me to design route-planning software and such.

  3. After the basics were working, I was planning on then transitioning to a larger platform; one based on a PowerWheels vehicle.

Unfortunately or fortunately, however you look at it, this is where things got derailed a bit; a friend of mine asked to help me with the project, I consented, and things got "wild" - we ended up skipping the small system, and purchased the PowerWheels, the PC, etc (he recently left the project, so I am continuing on it) - too much to talk about, but your system should somewhat follow items 1-5 above.

You basically want to hook the Arduino up to a remote controlled vehicle of some sort (or build your rover; but I would advise you to troll some thrift stores looking for a good and working larger RC car like the vehicle I was using, or a tank platform, or something - it will be easier to work with rather than worrying about the mechanical details in addition to the programming and circuit design work you are already going to be doing). Set it up to respond and act on commands sent over a wireless serial connection. Use an inexpensive RF camera for the video feed; you can either choose to just monitor this on a TV monitor, or feed it into a PC (where you can, if you choose, process it further). Send the commands to the Arduino via the PC, ideally via an application that implements a control and telemetry display system.

You should be able to do all this, sans the video part (it would be completely separate), with a regular Arduino - if you do implement a pan/tilt system for the camera, consider using a servo controller (that is what I am doing; its the Pololu micro-servo controller, there are many available) - it will make things easier to work with. You can use bluetooth for the comm medium, or any number of other options are available as well (for the UGV I am working on, the PC will be on-board, and I will communicate with that PC over an encrypted 802.11g link; that PC will communicate with the Arduino via the USB serial link).