Velocity is a closed loop control within the SDK that uses the encoder counts to determine the approximate power/speed the motors need to go in order to meet the set velocity.
To set a velocity, its important to understand the maximum velocity in RPM your motor is capable of. For the Class Bot V2 the motors are capable of a maximum RPM of 300. With a drivetrain, you are likely to get better control by setting velocity lower than the maximum. In this case, lets set the velocity to 175 RPM!
Since RPM is the amount of revolutions per minute, a conversion needs to be made from RPM to ticks per second (TPS). To do this, divide the RPM by 60 to get the amount of rotations per second.
Rotations per second can then be multiplied by COUNTS_PER_WHEEL_REV, to get the amount of ticks per second.
TPS=60175​∗CPWR
Adding Ticks per Second as a Variable
Create a new double variable called TPS. AddTPS the to the OpMode under where rightTarget is defined:
With the velocity set, let's give our program a test run after building!
DcMotor vs. DcMotorEx
With the current state of the code you are likely to get errors similar to the ones pictured below:
This is because the setVelocity();function is a function of theDcMotorEx Interface. The DcMotorEx Interface is an extension of the DcMotor Interface, that provides enhanced motor functionality, such as access to closed loop control functions.
To use setVelocity(); the motor variables need to be changed to DcMotorEx as seen below: