Introducing the GPS Guided Robot
Here is my AGV, a GPS guided robot. It is currently using a Arduino, GPS, and of course a motor controller.
The robot itself is a Hummer RC truck from Walmart that i bought for $20. It seems under powered (only runs on 4 AA) but it might be OK as long as it only drives on smooth concrete or smooth roads (my road is no where close to smooth).
I use a compass module will make the navigating a WHOLE lot better. The code right now was written really fast and is as simple as navigation code gets. It steers left or right depending on what it needs to do and measures distance so it knows when it has reached its way-point No proportional control in the code right now.
I wrote most of this code a while ago but just made it work with the robot today. The code is rusty and so is this post, i had to write the code quickly and make this post quickly because i have school work to do. Will update this post tomorrow or the weekend.
I now have a compass module and i wrote some better code. The compass module is just a life saver. It is really accurate and just makes programming easier. You use i2c to communicate with it and just a snippet of code. Just make sure you mount it level and away from the electronics.
My new code has improved steering. I guess its proportional but i do not know if it is definition proportional drive. I came up with this little formula of delay=degree error / 180 *3000. It takes about 3 secs to turn 180 degrees so 3000 was my number i could tweak. Of course it is out of 180 because that is the most i will be turning either left or right. Our degree of error is how much we are off from our current heading to the heading we need to be at. Simply subtract the current heading from the desired heading and take the absolute value and presto! This code seems to work really well. I tested this in a parking lot plus i had 2 waypoints this time. (see video). You can see the results. the waypoints were given a radius of 2 meters but it normally gets closer than that. I will reduce the radius next time. The AGV is programmed to stop when it reaches its last GPS point. I ordered a l298 motor driver and will update this post when i have that on the AGV and i will have a more complicated path of waypoints.
I changed the motor driver to a l298 now which provides more amps to my motors than the l293d did. The front battery pack is now glued down and i have a video of it looping around a retention pond.
The new RC truck and custom PCBs came on the same day today 🙂 check out the video.
I got the PCBs from Seeedstudio. It took exactly 2 weeks from the day i ordered them to the day they were in my mail box.
Yeah i soldered one together, even the SMT GPS connector which was not as hard as i thought it would be. It shows you the concept of the board. The Compass and GPS plug right in and there is a place for the ESC and servo. So far i gave it a simple Serial.println(“hello world!”); test and it works. On the back of the board is my name and it says “GPS guided Vehicle”. I was barely able to squeeze that silk screen on the bottom of the board but it fits.
They E-tested 5 of the boards for free and they are marked and taped together. I am very happy with the boards and the service.
Now on to the truck. Its a big 4WD mean machine.
The new truck is completely outfitted with the things needed to be a AGV. I will be working on the code for the next few days. I have ran test code and rough AGV code and my custom board is working fine.
I bought a 3″x 2″ x 1″ plastic project box from Radio Shack and cut a few different holes for cables to go through. My custom AGV PCB goes inside.
The ESC, servo, and UBEC (regulator) wires go through a hole in the top of the truck that was meant for the antenna.
The chassis has changed.
I took that plastic truck shell off of the vehicle because it was pretty useless when it comes to mounting things on it. I decided a dual platform would be perfect for holding a bunch of actuators, sensors, and any thing i want to test.
So here it is: (i think its pretty self explanatory)
[Original post from http://letsmakerobots.com/node/18922]