07-23-2012 04:41 AM - edited 07-23-2012 04:43 AM
Hi
I implemented an algorythm for the Labview Starter Kit. It reads a map and navigates from the initial point to the goal. The Starter Kit only performs two movements: "go straight X mm", and "turn 90º left/right (the turning is made when stopped, like a rotation).
The problem Im encountering is the turning. It uses a digital compass (CMPS09): when the robot needs to turn left/right, I feed the CCW Velocity of the motors (using the read/write FPGA functon) with +3.4 rad/seg and -3.4 rad/seg, into a timed loop.
The condition to stop is simple: "if heading=desired heading for the actual turn --> finish loop and stop motors".
Well, it happens that in the time window from calling the "stop motor" function, and the robot motors and wheels actually STOPPING, the robot travels 9-10 extra degrees!
So, for example, I want the robot to turn from north (0º) to 90º. The CCW velocities are feed with +3.4rad/seg and +3.4rad/seg into a timed loop, and I checked that the timed loop finishes when the heading is 90º. But the final orientation of the robot is exactly 100º, because the motor seems to take a little time to stop.
The deviation depends on the velocity of the motors, I was able to reduce it to 3/4 degrees using a turning velocity of 1rad/seg, but it has no use since it´s extremely slow and the motors works very badly (they dont even are able to maintain a constant speed in slower velocities).
I tried to check the Starter Kit FPGA.VI but I fail to understand how the "stop motor" function works.
I dont know if there is any way to correct or reduce the "stopping time" of the motors. If I correct the turning function to subtract 10º for every turnop before starting the movement, the algorythm works as long as I use the 3.4rad/seg velocity... but that solution is extremely shabby, and I dont think I cant say that on my Final Project! There has to be a way to improve it, isn´t it?
EDIT: For the record, I tried several variations for the loop, and several timing, form us to ms, and I think that´s not the problem, because I wasnt able to get better resulsts at all.