Starting my first UGV project - need some starting help

Hello everyone,

I'm trying to start one of my first real Arduino robot project, but need some help.
It will be a unmanned ground vehicle, which I can control with a controller, and with an onboard camera that streams the video to a monitor.

Now this are my questions:

  • Which is the best way to control the robot wireless? Radio Controlled? I think wifi isn't a good solution, because I'm going to use it in the woods with Airsoft games(there is no internet)

  • Is streaming video signals from the camera to a monitor possible? Also, wifi isnt a good solution?

This is the very very first part of this project, I'm justing thinking how I should do it all.

Any help, advice and tips are welcome!

greets,
Tibo

Hi for controlling a robot I would use RC. You could just mount a RC car on the front of your Robot and build your arduino circuit seperatly.
I don`t know how much money you want spend but an Rc car like this should be ok:
http://www.ebay.de/itm/RC-Auto-Amphibienfahrzeug-Land-Wasser-ferngesteuert-/330701815670?pt=DE_AllesfürKind_Spielzeug_FerngesteuertesSpielzeug&var=&hash=item4cff5d3f76#ht_7449wt_1072

Take the hood of the car tight it zip ties to your robot.

Thank you for the advice.

But, how do I make my arduino interact with it, so I can control the rc car with the transmitter?
And what about video streaming?

Do you want arduino to interact with the RC car or with the Remote control of the RC car?

I assume Arduino with the rc car, because I want the possibility to turn the camera.
I don't know what the best solution.

The most important is that I need the possibility to control the rc car, and stream a video to a monitor.

Well you can control the RC with the remote of the RC car and mount the Camera on a Servo to turn it. With the Video streaming im not so sure but maybe you can use a WiFly shield or an Xbee to communicate between two arduinos.

You can already buy RC Cars with video streaming built included. Get one of those, and look at interfacing the Arduino with it.

Okay, but for wifly shield i need wifi, and that is impossible in the woods?
And xbee has probably to less range i think(I need atleast 100m range).

I'll take a look for it tomorrow.
Thanks guys!

The xbee looks interesting, the only limit is the range of 100m...
For the wifly shield, do I need internet for it?

About buying a ready made rc car with camera: I searched for some cars, but the transmit range is not enough.

Maybe it is a good idea to buy a FPV camera that they use with RC aircraft.
It has much more range...

I'll search more now.

EDIT: one more question: if I buy a robot chassis, is it possible to install a receiver on it, and control it with a transmitter?
The same way as RC aircrafts work.

I think this is what I want:

http://www.robotshop.com/dagu-wild-thumper-6wd-all-terrain-chassis-aluminum-34-1.html

Now I don't know which controller to take:

or

http://www.dimensionengineering.com/products/sabertooth2x12rc

Can the sabretooth handel the motors?
Is it possible to let a led go on by pushing a button on a transmitter, because I don't see digital pins, but only pins for servo's?
Also, what does 75:1 or 34:1 gearbox mean?

I'm probably going to buy this robot chassis:
http://www.robotshop.com/dagu-wild-thumper-6wd-all-terrain-chassis-aluminum-34-1.html

There is a 75:1 and 34:1 gear ratio version, which one will be the best? Speed is not very important, but strength and carrying capacity is.
Can someone explain it?

I'd suggest the Sparkfun controller given the minor increase in cost and much larger quantities of features (battery charging, programmable Arduino). Also, the pins aren't really "pins for servos" but rather just handily arranged with a +, -, and signal for each output.

75:1 means that the motor rotates 75 times for each 1 rotation of the output shaft. This would of course be slower but stronger than the 34:1 ratio version.

Chagrin:
I'd suggest the Sparkfun controller given the minor increase in cost and much larger quantities of features (battery charging, programmable Arduino). Also, the pins aren't really "pins for servos" but rather just handily arranged with a +, -, and signal for each output.

75:1 means that the motor rotates 75 times for each 1 rotation of the output shaft. This would of course be slower but stronger than the 34:1 ratio version.

Thanks for clearing that up!

I'll go for the sparkfun controller then, and a 75:1 ratio version.

If I want to control a pan/tilt camera on the UGV, will that be possible with a normal 6 channel transmitter like this?:

It will be something like this:

-The right joystick is for going left or right with the UGV(horizontal control)
-The left joystick is for going forward or backward(vertical control)

Now I have only the following left to use:

-The right joystick(vertical control)
-The left joystick(horizontal control)
-Left switch
-Right switch

-So, would it be possible that when I put the left or right switch, the left joystick controls the camera, but doesn't control going left or right anymore?
I assume that the Arduino is the best way to do something like this, but then there is another problem: The Arduino should be able to remote control things on the UGV when the UGV is 500 meters away from me.

I don't want to use the right switch to turn the camera right, and the left switch to turn the camera to the left, because I'll lose the switches for something else then.

Maybe am I thinking to difficult, and is there a much more easy way to control a pan/tilt system?
Or, maybe I should get a transmitter with more channels?

Yes, it would be possible to utilize a switch to tell your Rover that the joysticks (speed and turn signals) control the camera. This would require additional programming on your part; you should look at the example code for the Wild Thumper Controller and make sure you understand it. in the RCMode() function you'll see it reading the speed/turn channels and here is where you'd have it read an additional channel to determine if those readings are for the camera or the wheel motors.

I'd suggest you also set the Rover's speed to zero whenever it detects you've flipped your switch to camera control.

It might be better to have one joystick control the camera position (you may want this one to be non self-centering, if that is an option), and the other control the vehicle motion. Then, pass the signals from the receiver into the Arduino. Have the Arduino decode the signals, and pass them back to the ESC/steering servo, and servos for the pan/tilt (via the servo library); alternatively (and this would possibly be best), use a seperate serial servo-controller (such as from Pololu) commanded by the Arduino. Wire the output of the receiver channel for one of the switches to the Arduino as well. Use this as a "menu" function; add some kind of OSD video overlay controller, and pass the camera feed thru it before you pass it to the on-board transmitter. On this feed you could overlay things like compass readings, other sensor readings, perhaps GPS (might not work well in the woods?) - and also a menu; flip the button, get a menu, select the options with the joystick(s) and switche(s), exit back, continue on. This way, the number of possibilities (servos, "channels", etc) is almost unlimited.

Thank you very much for explaining that!

So this is basically how it will work:

Transmitter sends signal to receiver>> signal arrives at receiver >> servo cable from receiver to the Arduino >> Arduino serial cable to servocontroller >> servocontroller controls the servo's that I want.

I don't understand how the receiver can tell the Arduino to interact with the servocontroller.

I've got a few questions about it:

-Is the Wild Thumper Motorcontroller also a servocontroller? I can see it has outputs for servo's on it. Altough, I don't know if it is possible to control the servo-outputs with RC receiver?
-How can I connect a servo cable, from the receiver, to the Arduino?
-I'll use the Wild Thumper 15A motor controller, and it has an onboard Arduino(ATmega168) on it. So that means that I'll have to connect the Arduino from the motorcontroller to the servocontroller, to send the serial signals. I don't see a useable serial output on the motorcontroller? Maybe the USB?

Probably I'm not understanding it all.

Again, thanks for helping me!

Here is the Wild Thumper motorcontroller:
http://www.robotshop.com/dagu-wild-thumper-dual-15a-motor-robot-controller.html

TiboJ:
Thank you very much for explaining that!

So this is basically how it will work:

Transmitter sends signal to receiver>> signal arrives at receiver >> servo cable from receiver to the Arduino >> Arduino serial cable to servocontroller >> servocontroller controls the servo's that I want.

Pretty much; note that I was thinking of something like the servo controller Pololu sells, which typically communicate using TTL serial (thus, you would use something like a software serial connection, or an Arduino that provided more than one hardware serial port).

TiboJ:
I don't understand how the receiver can tell the Arduino to interact with the servocontroller.

Well - you have to decode the servo commands from the receiver; I know there are people who have done this (there may even be a library available). Essentially, you are converting the PPM signal from the receiver servo channels into a numeric value.

TiboJ:
I've got a few questions about it:

-Is the Wild Thumper Motorcontroller also a servocontroller? I can see it has outputs for servo's on it. Altough, I don't know if it is possible to control the servo-outputs with RC receiver?

Looks that way to me; I think only the high-current DC motor outputs can be controlled by RC control, but I haven't looked at the manual (just basing this on what I read at the link and the image). You might be able to control the servo outputs via I2C or some other manner (meaning you might be able to connect this board to an Arduino using I2C for control of the servos). Note that it has a 168 on board, so it is essentially a basic Arduino itself.

TiboJ:
-How can I connect a servo cable, from the receiver, to the Arduino?

You could use a stripped servo extension cable; you would only need to connect the ground and signal lines (not the power); run the signal line to a digital input (then use/build PPM interpretation code to decode the signal).

TiboJ:
-I'll use the Wild Thumper 15A motor controller, and it has an onboard Arduino(ATmega168) on it. So that means that I'll have to connect the Arduino from the motorcontroller to the servocontroller, to send the serial signals. I don't see a useable serial output on the motorcontroller? Maybe the USB?

I believe that the motor controller is meant as a standalone device, meant to be controlled by some other means, whether an RC system or another microcontroller; while it might have spare code-space to be used as an integrated robot controller, the 168 is kinda limiting. While it doesn't have another serial port (no 168 or 328 based Arduino has more than one, which is "dedicated" to the USB connection), you can use a software serial port connection (via the digital pins - which on this controller are part of the servo pin block) to whatever serial device you want.

That said - since this controller is an "all-in-one" device - if you can live with the limitations of the 168 (memory, I mean) on board, then it probably has everything you need. I don't know if you get the source code to the software on it, but if you do, that code already is set up to decode the steering control inputs from an RC receiver, it looks like; so you could either modify it, or they may include/show how to use it with extra RC channels (each which would take up a spot on the servo output block, of course). If that is the case, then you have just about everything you need.

Unfortunately, I think the 168 might be too limited to allow you to implement anything like the OSD menu-type system for video like I noted earlier, unless you are able to write some very tight code; I really don't know. You would need both that tight code, and some kind of OSD board that used TTL serial or such for commands to draw the characters, with pass-thru for the video (camera->OSD->video transmitter).

Probably I'm not understanding it all.

Again, thanks for helping me!

Here is the Wild Thumper motorcontroller:
http://www.robotshop.com/dagu-wild-thumper-dual-15a-motor-robot-controller.html
[/quote]

I just looked at the Wild Thumper code and manual; it is very basic, easy to read - you should be able to use it to read extra channels if you want (it is only set up currently for two channels, but adding channels should be easy). The code doesn't look very big, so adding the OSD stuff might be doable. You could also use a separate Arduino if you wanted, and use it via I2C or serial TTL (and a software serial library) to act as the OSD piece. This is actually a nice bit of kit for a robot controller (though a bit pricey - you are essentially paying for the h-bridge).

Thanks for explaining again!

Pretty much; note that I was thinking of something like the servo controller Pololu sells, which typically communicate using TTL serial (thus, you would use something like a software serial connection, or an Arduino that provided more than one hardware serial port).

Good idea! I've also found a library for it:
http://arduino.cc/hu/Reference/SoftwareSerial

Well - you have to decode the servo commands from the receiver; I know there are people who have done this (there may even be a library available). Essentially, you are converting the PPM signal from the receiver servo channels into a numeric value.

I'll take a look at this, and search for some tutorials/library's.

Unfortunately, I think the 168 might be too limited to allow you to implement anything like the OSD menu-type system for video like I noted earlier, unless you are able to write some very tight code; I really don't know. You would need both that tight code, and some kind of OSD board that used TTL serial or such for commands to draw the characters, with pass-thru for the video (camera->OSD->video transmitter).

I think that is a limitation for me, the code is probably going to be big, so the 168 might have to less memory.
I'll think about it, and otherwise, there is an alternative:
http://www.dimensionengineering.com/products/sabertooth2x12rc

Should 2x12A be enough, as each motor requires 5.5A( 3 x 5.5A = 16.5A)?