Consistent Skills auton

  1. 7 months ago

    My team uses a gyro and encoders for skills. We are having trouble getting consistency for it. I have a PD (PID loop without the I) and a Gyro function I found in RobotC sample code. I was trying to make a PID loop for the Gyro but I didn't have enough time to get it to work. I would like some tips or other sensors I should for skills.

  2. ZachDaChampion

    17 Apr 2018 Fort Lauderdale, Florida 77788J
    Edited 7 months ago by ZachDaChampion

    If you can't get the gyro working in time, you can use your encoders to measure turning, although it won't be quite as good due to wheel slippage (although I didn't use a gyro at all last season and never had any major issues). Here's some sample code for rotating using encoders:

    float wheel_spacing = 17.0; // set this variable to the distance between your left and right wheels (inches)
    float wheel_diameter = 4.125; // set this to the diameter of your wheels (NOTE: 4 inch omnis are actually 4.125 inches)
    float encoder_ratio = 1.0; // change this to the gear ratio between your encoder and your wheel, for example 36 teeth on your wheel to 12 teeth on your encoder will be (36/12) or 3
    float tuning_factor = 1.0; // increase this if it doesn't rotate enough, decrease if it turns too much
    // calculate ticks for rotation
    int rotate(float degrees) {
        // calculate circumference of wheels and turn
        float wheel_circ = wheel_diameter * 3.141592;
        float turn_circ = wheel_spacing * 3.141592;
        // calculate encoder ticks for each side
        float dist = turn_circ * (degrees/wheel_circ) * tuning_factor * encoder_ratio;
        // return rounded value
        return round(dist);

    The rotate(degrees) function will return the appropriate amount of encoder ticks for a rotation of degrees degrees. Feed the number returned into your regular PID function, with the difference that the right value must be reversed (for example, if it returns 100 ticks, feed 100 into your left and -100 to the right). If you post your PID code, we can help integrate it a bit better.

  3. Thank You!

  4. will this work if there was only one encoder


or Sign Up to reply!