Robot 3 (AGV)

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. 


navigate around a route with pre-programmed way points

  • Actuators / output devices: DC motor and R/C servo
  • Control method: pre-programmed route
  • CPU: PIC18F4550, PIC16F886
  • Power source: 2x 2000mAh NiMh battery 8.4V
  • Programming language: C
  • Sensors / input devices: GPS
  • Target environment: outdoor

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/robot-3-agv

Nice robot!

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.

nice

nice project.  very well put together.  

much better

nice pictures

Hay, where do you hide your

Hay, where do you hide your second robot!!

Well Done!

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 (https://www.robotshop.com/letsmakerobots/node/26313)

 

**Here is my second robot: **

Here is my second robot:  https://www.robotshop.com/letsmakerobots/node/22431

Oh sorry, thought that is

Oh sorry, thought that is your 1st one.

Very Impresive

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.

Awesome robot!

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. :slight_smile:

Great job!

Thank you RawBot. My GPS is

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.

**Accuracy on my GPS **

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.

dear sir Axbri

im inspired to your excellent robot. but just now i have a problem about gps which im a newbie about it. so can you help me how to communicate my GPS Eva1 Sparkfun to my first crawler robot. what firstly i need to do. thankz for ur help sir…

GPS problems

Hi prince24

Most GPS´s sends data using the NMEA standard. Check in the manual if your GPS needs some configuration/activation to start outputting data. Also check if the baud-rate is correct.

**my gps **

thankz sir for ur reply. my gps is outdoor. and i have try to activate it. but didn’t have any manual how to communicate it to my first crawler robo. can i have some tutorial to communicate my robo to this thing sir. btw thankz again for ur reply… :wink:

 

Name of youre GPS?

It is hard to solve the problem without the manual. What is the exact name of youre GPS?

my gps name

sparkfun gps evaluation board

hehehe

Echoing the same sentiments

Echoing the same sentiments as everyone else. Very impressive…wow!

Nice work. I also have a

Nice work. I also have a Traxxas Stampede that I wanted to convert into a robot, but the gearing did not give enough torque, all speed. anyways, I’m looking to get a new LCD. Can you give me some information about the one you’re using? thanks.

The display…

Thanks. Mine was also a bit to fast before I replaced the motor with the new slower one.

The display I am using is just a regular 4x40 character LCD, white text on blue background, based on the standard HD44780 controller chip.