Hello all, I have searched through the forums, and all the help files I can find, but I still don’t have an answer to my students question.
“How do we slowly increase speed in our robots?”
Unfortunately my classroom has tile floors, and when a robot starts out we get wheel spin and loss of traction, This is never a problem when we are manually controlling the robots. When we get into autonomous though… things go downhill fast. We are using easy C V4 for Cortex. and there is seemingly no way to slowly increase the motor speed off the line.
Am I simply not searching for the right terms? or is there really no way to do this?
If you can, get some foam field tiles. They don’t necessarily need to be from VEX, but the wheels act very differently on foam vs tile. I think that the foam tiles will fix your problem by having much better coefficient of friction, and any autonomous that you do will not work the same on foam vs tile. If you cant get foam tiles, look into slew rate control. You will have to do some complicated stuff in easyC, using variables and timers.
Floor tiles very similar to the vex ones are at Harbor Freight for $8.99 for a four-pack. We used these last year and were able to make some very consistent autonomous routines.
As mentioned, slew control would be a very appropriate fix. You could also add a for loop to ramp up speed over time. I am not sure of the easyC code, but in robotC it would look something like:
int drivePower = 20;
for (int i=0; i<6; i++)// run loop 5 times taking motor from 0 to 100 over 1 second
{
motor[driveMotor] = drivePower; // set motor to drivePower
wait1Msec[200];
drivePower = drivePower + 20; // increment drivePower 20 per loop
}