As a school project my group was thinking of building an agv, however we don´t have much experience in the area and zero experience with arduino. Can someone give us some guidance or direct us to some tutorial so that we can start learning about arduino and how to use it to accomplish our project?
The main idea consists of having something akin to a small table sized agv following a line, detecting objects and averting them and then continue to follow the line...
I stress that we don´t have experience with arduino so if you could help us it would be great.
Sounds like a standard line following robot, which is a well-traveled field, but leaving the line to avoid an obstacle and then re-acquiring the line is much more difficult! In addition to sensing and positioning yourself on the line, you have to do some dead reckoning when you leave the line.
tylernt:
Sounds like a standard line following robot, which is a well-traveled field, but leaving the line to avoid an obstacle and then re-acquiring the line is much more difficult! In addition to sensing and positioning yourself on the line, you have to do some dead reckoning when you leave the line.
There's also a problem when returning to the line. If you hit it at 90o, which way do you turn?
tylernt:
Sounds like a standard line following robot, which is a well-traveled field, but leaving the line to avoid an obstacle and then re-acquiring the line is much more difficult! In addition to sensing and positioning yourself on the line, you have to do some dead reckoning when you leave the line.
Thanks for answering
I understand that it has been done, but for usit´s a hard challenge since we don´t know much about it besides some basic ideas and have zero experience doing this stuff.
Could you expand a little on this dead reckoning concept?
Dead reckoning -- estimating where you are based on where you've been.
The best way to do this is to use motor encoders so you can count pulses to see how much your wheels have turned. Knowing the circumference of your wheels, you can calculate the linear distance you have traveled. Using the difference between two wheel encoders (I'm assuming you're using skid steering) will also help you estimate which direction you are pointing after a turn.
It easiest if you buy motors that have quadrature encoders already built in or that are designed to accept a ready-made encoder. Pololu has some of these.
The encoder method isn't perfect (wheels slip a little, and you don't get infinite resolution), but then, no method is. It's probably the best method, however.
The next best way is to do empirical tests to see how far your robot travels running the motor for X seconds. This is less reliable, because your motors travel different distances in X seconds depending on how charged the battery is. Inertia will also throw this calculation off (you will travel less distance in 1 second starting from a stop / more distance in 1 second if you were already going top speed). Also, it's really hard to characterize how far you've moved if you're not running your motors at 100% (i.e., if you use PWM and a PID to vary your speed).
EDIT: Forgot to add, accelerometers and gyros (and magnetometers) can also be used, but those are pretty advanced and even then are probably not appreciably more accurate than motor encoders. I mention them for the sake of completeness, but I do not recommend them for newbies unless you've got a year to build your robot.
I see, from what i understood using the encoders is the best way... I´ll have to think abou it, I was thinking of something along the lines of using sensors (ultra sounds or something like that) to determine if there was an object in front , then turn to a predetermined side and continue until it could go back to the side of the corridor where the line is ...
EDIT: I wish i had a year but only 150 hours (in class time of course).
how2agv:
I was thinking of something along the lines of using sensors (ultra sounds or something like that) to determine if there was an object in front , then turn to a predetermined side and continue until it could go back to the side of the corridor where the line is
Here's another idea: if you want to mount your ultrasonic sensor on a servo, you can rotate the sonar so it stays pointed at the obstacle while the rest of the robot's body turns to leave the line. The obstacle can serve as a navigation aid to help you find the line again.
EDIT: After taking a look , what I got was that the arduino uno or other controls the operations and the shield used for motors is used to transmit power to the motor like a relay , is this assumption correct?