コード例 #1
0
class PIDVisionAlign(Segment):
    def get_pid(self, sd):
        return [
            # float(sd.getNumber("KP", 0.553) * 4),
            # float(sd.getNumber("KI", 0.033) * 4),
            # float(sd.getNumber("KD", 0.073) * 4)
            0.503 * 4,
            0.033 * 4,
            0.073 * 4
        ]

    def config(self, robot):
        self.pid = PIDController(*self.get_pid(robot.dashboard),
                                 self.get_disalignment, self.output)
        self.pid.setOutputRange(-1, 1)
        self.pid.enable()
        self.pid.setSetpoint(0)
        self.turn = 0
        self.robot = robot

    def get_disalignment(self):
        return self.robot.dashboard.getNumber("CENTROID", 0.5) - 0.5

    def output(self, n):
        self.turn = n

    def free(self):
        self.pid.free()

    def update(self, robot):
        err = self.pid.getError()
        self.robot.chassis.arcade_drive(-0.6, self.turn)
        print(self.turn)

        print("err", err)

        self.pid.setPID(*self.get_pid(robot.dashboard))