Let's Make Robots!

Robot 3 (AGV)

navigate around a route with pre-programmed way points

This is my third robot. It is built on an old R/C car. This robot can navigate around a route with pre-programmed way points using GPS. It is powered by a 6 cell 3000mAh NiMh battery pack and it is using the original motor and transmission from the R/C car. The speed control is a standard ESC for R/C cars with proportional forward and reverse drive.

There are three PIC micro controllers in this robot. One of them, a PIC18F4550 is the main processor. It listens to the data from the GPS receiver and calculates heading and distance to the next waypoint. Then it calculates control-values for the ESC and steering servo and sends them through an UART to a PIC16F886.

This processor (called "PWM and cruise control" in the diagram) receives the control-values from the main processor via interrupt. It also receives speed data from a third PIC. To calculate how to adjust the speed to keep it constant, the processor uses a PD-algorithm (proportional derivative algorithm). 

The third processor (called "speed measuring" in the diagram) measures the speed of the vehicle. It measures the time between two pulses from a hall-effect sensor mounted in the hub for the left front wheel. There are four magnets glued to the inside of the wheel which makes four pulses in one revolution of the wheel. The processor then calculates a value that is proportional to the speed and sends it on a 7-wire parallel-bus to the two other processors.

The speed data on the 7-wire parallel-bus is not used in the main processor now, but I plan to use it to make the robot steer less when it drives fast and steer more when it drives slowly.

There is also a relay that controls the power to the ESC and the steering servo. The relay is controlled by the main navigation PIC. This makes it possible for the navigation PIC to switch off the power to the ESC and the servo when the robot stands still and waits for GPS to receive satellites, or when the robot has completed the pre-programmed mission.

The circuit board containes all three PIC controllers and the RS232 signal converter for communicating with the GPS.

 Hall-effect sensor for measuring speed.

The backside of the front panel. All the wires from the panel have connectors which makes it possible to remove the panel completely from the rest of the robot. 

The GPS receiver with backup battery. This GPS uses an external antenna.

Update 25/4 2011

Previously I forgot to mention anything about the LCD. It is connected to the main navigation MCU and I use it as a part of the HMI (Human Machine Interface), and also for debugging.

The robot is updated in three ways: The battery capacity is increased with new battery packs, the motor is swapped to a more suitable one and the firmware is improved.

The power is delivered from two separate battery packs connected in parallel via two shotkey diodes. Each pack now also has 7 cells instead of 6. The original 20-turn motor died, and is now replaced by a much slower 55-turn "crawler type" motor.

The new firmware makes it possible to walk around the route with the robot and save the waypoints directly into the robot memory. This is also shown in my new video. The cruise control is also improved by adjustment of the P-and D-parts in the control loop.

The "electronics box".

The new 55-turn "crawler type" motor



Update 17/6 2012

I have a couple of ideas on how I wanted to improve this robot. But I have some problems with the GPS receiver, as soon as the robot starts driving it looses its signal. I also want more computer power and more room in the electronics box. So I have decided do build a new robot instead.

I will post this as a new robot when I have something interesting to show. 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

My next one is going to be an AGV too. You really have the skills, all your robots are awesome!

How much did the GPS cost if I may ask? And being a PID newbie myself, I'm wondering why you used only PD (without the I), is it sufficient for this purpose or did you try PID and didn't get the result you wanted? Sorry for all the questions. :)

Great job!

Thank you RawBot. My GPS is old and not very good because it is slow with only one sample/second. You should look for something faster, maybe 5 samples/second. I suppose you can get a decent one today for 50$ or so.

I do not think the I-part is needed here. It is more useful when you really want to pinpoint a predefined value (speed) in the control loop. The exact speed of my robot is not that important, I just want to keep it fairly constant, even in ruff terrain.

I found your robot to be very impressive. Nice work. How accurate have you found your GPS to be? I am doing research for robot navigation and mapping and was not sure if I could get GPS to be very accurate. You robot seems to navigate fairly well though.

Thanks. The accuracy of my GPS is usually about ± 2m. At least if I collect the waypoint data with the GPS in my robot and use it only a few minutes after.

edited 26/4 2011 to improve my answer.

Excellent engineering, craftsmanship, and documentation.  I saw "PD Algorithm" in your description.  I am a PD PID newbie and was wondering if you might shine your expertise on a question of mine here (http://letsmakerobots.com/node/26313)


Hay, where do you hide your second robot!!

Here is my second robot:  http://letsmakerobots.com/node/22431

Oh sorry, thought that is your 1st one.

nice project.  very well put together.  

Amazing! It's very clean and orginal. I can't beilieve that this is only your third robot! Keep up the great robot. (:

p.s. the post would be a lot better if you find out whats wrong with the photos.