Example #1
0
    def left_knee_moving(self):
        lhip = self.kp[2][12]
        lknee = self.kp[2][13]
        lfoot = self.kp[2][14]

        angle = p3_angle(lhip, lknee, lfoot)

        if 170 <= angle:
            self.feedback["left_knee_moving"] = {
                0: 2,
                1: angle,
                2: "무릎이 안정적으로 움직이고 있습니다.",
            }
        elif 160 <= angle:
            self.feedback["left_knee_moving"] = {
                0: 1,
                1: angle,
                2: "체중 이동 중 왼 다리가 과다하게 이동해서는 안 됩니다. 왼 무릎이 공을 바라본다고 생각하세요."
            }
        else:
            self.feedback["left_knee_moving"] = {
                0: 0,
                1: angle,
                2: "체중 이동 중 왼 다리가 과다하게 이동해서는 안 됩니다. 왼 무릎이 공을 바라본다고 생각하세요."
            }
Example #2
0
    def chicken_wing(self):
        lshoulder = self.kp[6][5]
        lelbow = self.kp[6][6]
        lwrist = self.kp[6][7]

        angle = p3_angle(lshoulder, lelbow, lwrist)

        if 160 <= angle:
            self.feedback["chicken_wing"] = {0: 2, 1: angle, 2: "치킨윙 체크"}
        elif 150 <= angle:
            self.feedback["chicken_wing"] = {
                0:
                1,
                1:
                angle,
                2:
                "임팩트 후 팔이 곧게 펴지는 것이 좋습니다. 릴리즈 자세에서 클럽이 손을 앞으로 당기는 느낌이 들도록 연습해보세요."
            }
        else:
            self.feedback["chicken_wing"] = {
                0:
                0,
                1:
                angle,
                2:
                "임팩트 후 팔이 곧게 펴지는 것이 좋습니다. 릴리즈 자세에서 클럽이 손을 앞으로 당기는 느낌이 들도록 연습해보세요."
            }
Example #3
0
    def bending_knee(self):
        lhip = self.kp[2][12]
        lknee = self.kp[2][13]
        lfoot = self.kp[2][14]

        angle = p3_angle(lhip, lknee, lfoot)

        if 140 <= angle <= 150:
            self.feedback["bending_knee"] = {
                0: 2,
                1: angle,
                2: "골반 움직임이 안정적입니다."
            }
        elif 135 <= angle <= 158:
            self.feedback["bending_knee"] = {
                0:
                1,
                1:
                angle,
                2:
                "오른 무릎에 적당한 유연함이 필요합니다. 무릎을 너무 펴서 다리가 잠기게 되면 골반이 오른쪽으로 틀어지게 돼 스윙 궤도가 불안정해집니다."
            }
        else:
            self.feedback["bending_knee"] = {
                0:
                0,
                1:
                angle,
                2:
                "오른 무릎에 적당한 유연함이 필요합니다. 무릎을 너무 펴서 다리가 잠기게 되면 골반이 오른쪽으로 틀어지게 돼 스윙 궤도가 불안정해집니다."
            }
Example #4
0
    def back_angle(self):
        oue = self.kp[0][9]
        chukan = self.kp[0][10]
        sita = self.kp[0][11]

        angle = p3_angle(oue, chukan, sita)

        if 148 <= angle <= 153:
            self.feedback["back_angle"] = {
                0: 2,
                1: angle,
                2: "good"
            }
        elif 144 <= angle <= 147:
            self.feedback["back_angle"] = {
                0: 1,
                1: angle,
                2: "So So"
            }
        else:
            self.feedback["back_angle"] = {
                0: 0,
                1: angle,
                2: "Bad"
            }
Example #5
0
    def left_knee_moving(self):
        lhip = self.kp[3][12]
        lknee = self.kp[3][13]
        lfoot = self.kp[3][14]

        angle = p3_angle(lhip, lknee, lfoot)

        if 165 <= angle:
            self.feedback["left_knee_moving"] = {
                0: 2,
                1: angle,
                2: "체중 이동 시 왼 다리 이동 체크"
            }
        elif 150 <= angle:
            self.feedback["left_knee_moving"] = {
                0: 1,
                1: angle,
                2: "체중 이동 중 왼 다리가 과다하게 이동해서는 안 됩니다. 왼 무릎이 공을 바라본다고 생각하세요."
            }
        else:
            self.feedback["left_knee_moving"] = {
                0: 0,
                1: angle,
                2: "체중 이동 중 왼 다리가 과다하게 이동해서는 안 됩니다. 왼 무릎이 공을 바라본다고 생각하세요."
            }
Example #6
0
    def early_cocking(self):
        club = self.kp[1][25]
        # 모델이 클럽 헤드를 제대로 감지하지 못 한 경우 패스
        if club[0] == 0:
            self.feedback["early_cocking"] = {
                0: 0,
                1: 0,
                2: "클럽 헤드를 감지하지 못 했습니다."
            }
            return

        wrist = self.kp[1][4]
        shoulder = self.kp[1][2]

        angle = p3_angle(club, wrist, shoulder)

        if 100 <= angle:
            self.feedback["early_cocking"] = {0: 2, 1: angle, 2: ""}
        elif 90 <= angle:
            self.feedback["early_cocking"] = {
                0: 1,
                1: angle,
                2: "코킹을 늦춰보세요. 이른 코킹은 비거리 손실을 가져옵니다."
            }
        else:
            self.feedback["early_cocking"] = {
                0: 0,
                1: angle,
                2: "코킹을 늦춰보세요. 이른 코킹은 비거리 손실을 가져옵니다."
            }
Example #7
0
    def left_wrist_flat(self):
        lshoulder = self.kp[3][4]
        head = self.kp[3][25]
        lwrist = self.kp[3][5]

        angle = p3_angle(lshoulder, head, lwrist)

        if 0 <= angle <= 18:
            self.feedback["left_wrist_flat"] = {0: 2, 1: angle, 2: "손목 힌지 체크"}
        elif 0 <= angle <= 60:
            self.feedback["left_wrist_flat"] = {
                0:
                1,
                1:
                angle,
                2:
                "손목을 안쪽으로 말거나 바깥으로 접은 채 스윙 시 공에 사이드 스핀을 발생시킬 수 있어요. 적절한 손목 힌지가 공의 직진성을 높입니다."
            }
        else:
            self.feedback["left_wrist_flat"] = {
                0:
                0,
                1:
                angle,
                2:
                "손목을 안쪽으로 말거나 바깥으로 접은 채 스윙 시 공에 사이드 스핀을 발생시킬 수 있어요. 적절한 손목 힌지가 공의 직진성을 높입니다."
            }
Example #8
0
    def back_face_target(self):
        lshoulder = self.kp[3][5]
        rshoulder = self.kp[3][2]
        lfoot = self.kp[3][14]

        angle = p3_angle(lshoulder, rshoulder, lfoot)

        if 70 <= angle <= 80:
            self.feedback["back_face_target"] = {0: 2, 1: angle, 2: "적당한 회전"}
        elif 65 <= angle <= 88:
            self.feedback["back_face_target"] = {
                0:
                1,
                1:
                angle,
                2:
                "탑자세에서 어깨가 공을 바라보는 정도로 회전하는 것이 이상적입니다. 너무 느슨하거나 지나친 회전은 피해야 합니다."
            }
        else:
            self.feedback["back_face_target"] = {
                0:
                0,
                1:
                angle,
                2:
                "탑자세에서 어깨가 공을 바라보는 정도로 회전하는 것이 이상적입니다. 너무 느슨하거나 지나친 회전은 피해야 합니다."
            }
Example #9
0
    def parallel_shaft(self):
        rfoot = self.kp[3][11]
        lwrits = self.kp[3][4]
        club = self.kp[3][25]

        if club[0] == 0:
            self.feedback["parallel_shaft"] = {
                0: 2,
                1: 0,
                2: "클럽 헤드를 감지하지 못 했습니다."
            }

        angle = p3_angle(rfoot, lwrits, club)

        if 95 <= angle <= 115:
            self.feedback["parallel_shaft"] = {0: 2, 1: angle, 2: "클럽이 지면과 평행"}
        elif 90 <= angle <= 120:
            self.feedback["parallel_shaft"] = {
                0:
                1,
                1:
                angle,
                2:
                "적절한 손목 힌지와 몸의 회전 시 클럽이 지면과 평행하게 되는 것이 자연스럽습니다. 너무 적거나 지나친 회전은 피해야합니다."
            }
        else:
            self.feedback["parallel_shaft"] = {
                0:
                0,
                1:
                angle,
                2:
                "적절한 손목 힌지와 몸의 회전 시 클럽이 지면과 평행하게 되는 것이 자연스럽습니다. 너무 적거나 지나친 회전은 피해야합니다."
            }
Example #10
0
    def knee_angle(self):
        upfoot = self.kp[0][9]
        middlefoot = self.kp[0][10]
        downfoot = self.kp[0][11]

        angle = p3_angle(upfoot, middlefoot, downfoot)

        if 154 <= angle <= 156:
            self.feedback["knee_angle"] = {
                0: 2,
                1: angle,
                2: "good"
            }
        elif 150 <= angle <= 161:
            self.feedback["knee_angle"] = {
                0: 1,
                1: angle,
                2: "So So"
            }
        else:
            self.feedback["knee_angle"] = {
                0: 0,
                1: angle,
                2: "Bad"
            }
Example #11
0
    def reverse_pivot(self):
        lshoulder = self.kp[2][5]
        lfoot = self.kp[2][14]
        rfoot = self.kp[2][11]

        angle = p3_angle(lshoulder, lfoot, rfoot)

        if 50 <= angle <= 85:
            self.feedback["reverse_pivot"] = {
                0: 2,
                1: angle,
                2: "체중 이동이 정상적입니다.",
            }
        elif 85 < angle <= 100:
            self.feedback["reverse_pivot"] = {
                0:
                1,
                1:
                angle,
                2:
                "백스윙 자세에서 체중이 앞발로 이동하고 있습니다. 역피봇은 볼의 윗부분을 맟출 확률을 높이고 thin shots를 유도합니다.",
            }
        else:
            self.feedback["reverse_pivot"] = {
                0:
                0,
                1:
                angle,
                2:
                "백스윙 자세에서 체중이 앞발로 이동하고 있습니다. 역피봇은 볼의 윗부분을 맟출 확률을 높이고 thin shots를 유도합니다.",
            }
Example #12
0
    def keep_triangle(self):
        rshoulder = self.kp[1][2]
        relbow = self.kp[1][3]
        rwrist = self.kp[1][4]

        angle = p3_angle(rshoulder, relbow, rwrist)

        if 145 <= angle <= 180:
            self.feedback["keep_triangle"] = {
                0: 2,
                1: angle,
                2: "어깨, 손 삼각형 유지"
            }
        elif 140 <= angle <= 180:
            self.feedback["keep_triangle"] = {
                0: 1,
                1: angle,
                2: "어드레스 때 세팅한 어깨와 손의 삼각형을 유지하세요."
            }
        else:
            self.feedback["keep_triangle"] = {
                0: 0,
                1: angle,
                2: "어드레스 때 세팅한 어깨와 손의 삼각형을 유지하세요."
            }
Example #13
0
    def bending_left_arm(self):
        lshoulder = self.kp[2][2]
        lelbow = self.kp[2][3]
        lwrist = self.kp[2][4]

        angle = p3_angle(lshoulder, lelbow, lwrist)

        if 140 <= angle:
            self.feedback["bending_arms"] = {
                0: 2,
                1: angle,
                2: "팔 구부러짐이 없습니다."
            }
        elif 125 <= angle:
            self.feedback["bending_arms"] = {
                0: 1,
                1: angle,
                2: "손을 몸에서 멀리 밀면 클럽이 더 먼 거리를 이동하게 됩니다. 샷의 일관성 또한 향상됩니다."
            }
        else:
            self.feedback["bending_arms"] = {
                0: 0,
                1: angle,
                2: "손을 몸에서 멀리 밀면 클럽이 더 먼 거리를 이동하게 됩니다. 샷의 일관성 또한 향상됩니다."
            }
Example #14
0
    def wrist(self):
        lfoot = self.kp[1][11]
        club = self.kp[1][25]
        rfoot = self.kp[1][14]

        if club[0] == 0:
            self.feedback["wrist"] = {0: 0, 1: 0, 2: "클럽 헤드를 감지하지 못 했습니다."}
            return

        angle = p3_angle(lfoot, club, rfoot)

        if 145 <= angle <= 180:
            self.feedback["wrist"] = {0: 2, 1: angle, 2: "클럽 헤드 움직임이 좋아요."}
        elif 140 <= angle <= 180:
            self.feedback["wrist"] = {
                0: 1,
                1: angle,
                2:
                "테이크 어웨이 시 클럽 헤드를 볼과 평행하게 움직이세요. 클럽이 몸 안쪽이나 바깥쪽을 가리키지 않도록 하세요."
            }
        else:
            self.feedback["wrist"] = {
                0: 0,
                1: angle,
                2:
                "테이크 어웨이 시 클럽 헤드를 볼과 평행하게 움직이세요. 클럽이 몸 안쪽이나 바깥쪽을 가리키지 않도록 하세요."
            }
Example #15
0
    def side_bending_arm(self):
        lshoulder = self.kp[3][4]
        head = self.kp[3][25]
        lwrist = self.kp[3][5]

        angle = p3_angle(lshoulder, head, lwrist)

        if 0 <= angle <= 18:
            self.feedback["side_bending_arm"] = {0: 2, 1: angle, 2: "good"}
        elif 0 <= angle <= 60:
            self.feedback["side_bending_arm"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["side_bending_arm"] = {0: 0, 1: angle, 2: "bad"}
Example #16
0
    def wrist_impact(self):
        lshoulder = self.kp[5][5]
        lelbow = self.kp[5][6]
        lwrist = self.kp[5][7]

        angle = p3_angle(lshoulder, lelbow, lwrist)

        if 160 <= angle <= 180:
            self.feedback["wrist_impact"] = {0: 2, 1: angle, 2: "Good."}
        elif 150 <= angle <= 169:
            self.feedback["wrist_impact"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["wrist_impact"] = {0: 0, 1: angle, 2: "bad"}
Example #17
0
    def left_foot(self):
        lhip = self.kp[4][12]
        lfoot = self.kp[4][14]
        line = [lfoot[5], lhip[7]]

        angle = p3_angle(lhip, lfoot, line)

        if 6 <= angle <= 12.5:
            self.feedback["left_foot"] = {0: 2, 1: angle, 2: "Good."}
        elif 2.5 <= angle <= 16:
            self.feedback["left_foot"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["left_foot"] = {0: 0, 1: angle, 2: "bad"}
Example #18
0
    def club_head(self):
        rfoot = self.kp[3][11]
        lwrits = self.kp[3][4]
        ghead = self.kp[3][25]

        angle = p3_angle(rfoot, lwrits, ghead)

        if 95 <= angle <= 115:
            self.feedback["club_head"] = {0: 2, 1: angle, 2: "good"}
        elif 90 <= angle <= 120:
            self.feedback["club_head"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["club_head"] = {0: 0, 1: angle, 2: "bad"}
Example #19
0
    def back_face(self):
        lshoulder = self.kp[3][5]
        rshoulder = self.kp[3][2]
        lfoot = self.kp[3][14]

        angle = p3_angle(lshoulder, rshoulder, lfoot)

        if 70 <= angle <= 80:
            self.feedback["back_face"] = {0: 2, 1: angle, 2: "good"}
        elif 65 <= angle <= 88:
            self.feedback["back_face"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["back_face"] = {0: 0, 1: angle, 2: "bad"}
Example #20
0
    def wrist(self):
        lfoot = self.kp[1][11]
        head = self.kp[1][25]
        rfoot = self.kp[1][14]

        angle = p3_angle(lfoot, head, rfoot)

        if 145 <= angle <= 180:
            self.feedback["wrist"] = {0: 2, 1: angle, 2: "good."}
        elif 140 <= angle <= 180:
            self.feedback["wrist"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["wrist"] = {0: 0, 1: angle, 2: "bad"}
Example #21
0
    def keep_triangle(self):
        rshoulder = self.kp[1][2]
        relbow = self.kp[1][3]
        rwrist = self.kp[1][4]

        angle = p3_angle(rshoulder, relbow, rwrist)

        if 145 <= angle <= 180:
            self.feedback["keep_triangle"] = {0: 2, 1: angle, 2: "good."}
        elif 140 <= angle <= 180:
            self.feedback["keep_triangle"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["keep_triangle"] = {0: 0, 1: angle, 2: "bad"}
Example #22
0
    def chicken_wing(self):
        lshoulder = self.kp[6][5]
        lelbow = self.kp[6][6]
        lwrist = self.kp[6][7]

        angle = p3_angle(lshoulder, lelbow, lwrist)

        if 165 <= angle <= 180:
            self.feedback["chicken_wing"] = {0: 2, 1: angle, 2: "Good."}
        elif 155 <= angle <= 180:
            self.feedback["chicken_wing"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["chicken_wing"] = {0: 0, 1: angle, 2: "bad"}
Example #23
0
    def back_angle(self):
        lshoulder = self.kp[6][1]
        lhip = self.kp[6][8]
        lwrist = self.kp[6][9]

        angle = p3_angle(lshoulder, lhip, lwrist)

        if 70 <= angle <= 85:
            self.feedback["back_angle"] = {0: 2, 1: angle, 2: "Good."}
        elif 65 <= angle <= 92:
            self.feedback["back_angle"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["back_angle"] = {0: 0, 1: angle, 2: "bad"}
Example #24
0
    def bending_left_arm(self):
        lhip = self.kp[4][12]
        lfoot = self.kp[2][14]
        line = [lfoot[0], lhip[1]]

        angle = p3_angle(lhip, lfoot, line)

        if 6 <= angle <= 12.5:
            self.feedback["bending_left_arm"] = {0: 2, 1: angle, 2: "Good."}
        elif 5 <= angle <= 16:
            self.feedback["bending_left_arm"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["bending_left_arm"] = {0: 0, 1: angle, 2: "bad"}
Example #25
0
    def back_angle(self):
        lshoulder = self.kp[5][0]
        lelbow = self.kp[5][8]
        lwrist = self.kp[5][9]

        angle = p3_angle(lshoulder, lelbow, lwrist)

        if 55 <= angle <= 65:
            self.feedback["back_angle"] = {0: 2, 1: angle, 2: "Good."}
        elif 45 <= angle <= 70:
            self.feedback["back_angle"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["back_angle"] = {0: 0, 1: angle, 2: "bad"}
Example #26
0
    def club_head(self):
        kkumchi = self.kp[4][3]
        lwrits = self.kp[4][4]
        clubhead = self.kp[4][25]

        angle = p3_angle(kkumchi, lwrits, clubhead)

        if 140 <= angle <= 170:
            self.feedback["club_head"] = {0: 2, 1: angle, 2: "Good."}
        elif 120 <= angle <= 180:
            self.feedback["club_head"] = {0: 1, 1: angle, 2: "So So"}
        else:
            self.feedback["club_head"] = {0: 0, 1: angle, 2: "bad"}
Example #27
0
    def bending_knee(self):
        lhip = self.kp[2][12]
        lknee = self.kp[2][13]
        lfoot = self.kp[2][14]

        angle = p3_angle(lhip, lknee, lfoot)

        if 140 <= angle <= 150:
            self.feedback["bending_knee"] = {0: 2, 1: angle, 2: "good"}
        elif 135 <= angle <= 158:
            self.feedback["bending_knee"] = {
                0: 1,
                1: angle,
                2: "체중 이동 중 왼 다리가 과다하게 이동해서는 안 됩니다. 왼 무릎이 공을 바라본다고 생각하세요."
            }
        else:
            self.feedback["bending_knee"] = {
                0: 0,
                1: angle,
                2: "체중 이동 중 왼 다리가 과다하게 이동해서는 안 됩니다. 왼 무릎이 공을 바라본다고 생각하세요."
            }
Example #28
0
    def back_angle(self):
        oue = self.kp[0][9]
        chukan = self.kp[0][10]
        sita = self.kp[0][11]

        angle = p3_angle(oue, chukan, sita)

        if 148 <= angle <= 153:
            self.feedback["back_angle"] = {0: 2, 1: angle, 2: "척추 각도가 안정적입니다."}
        elif 144 <= angle <= 147:
            self.feedback["back_angle"] = {
                0: 1,
                1: angle,
                2: "양손이 편하게 움직일 수 있도록 골반과 허리에 적당한 각도를 유지해주세요"
            }
        else:
            self.feedback["back_angle"] = {
                0: 0,
                1: angle,
                2: "양손이 편하게 움직일 수 있도록 골반과 허리에 적당한 각도를 유지해주세요"
            }
Example #29
0
    def wrist_angle_downswing(self):
        kkumchi = self.kp[4][3]
        lwrits = self.kp[4][4]
        clubhead = self.kp[4][25]

        angle = p3_angle(kkumchi, lwrits, clubhead)

        if 55 <= angle <= 90:
            self.feedback["wrist_angle_downswing"] = {
                0: 2,
                1: angle,
                2: "Good."
            }
        elif 43 <= angle <= 110:
            self.feedback["wrist_angle_downswing"] = {
                0: 1,
                1: angle,
                2: "So So"
            }
        else:
            self.feedback["wrist_angle_downswing"] = {0: 0, 1: angle, 2: "bad"}
Example #30
0
    def wrist_angle_downswing(self):
        kkumchi = self.kp[4][3]
        lwrits = self.kp[4][4]
        clubhead = self.kp[4][25]

        angle = p3_angle(kkumchi, lwrits, clubhead)

        if clubhead[0] == 0:
            self.feedback["wrist_angle_downswing"] = {
                0: 0,
                1: angle,
                2: "클럽 헤드를 감지하지 못 했습니다."
            }

        if angle <= 90:
            self.feedback["wrist_angle_downswing"] = {
                0: 2,
                1: angle,
                2: "손목 코킹 체크"
            }
        elif angle <= 125:
            self.feedback["wrist_angle_downswing"] = {
                0:
                1,
                1:
                angle,
                2:
                "백스윙 시 세팅된 손목의 코킹이 다운스윙 때도 유지되어야 합니다. 임팩트 후 릴리즈 자세에서 코킹을 풀도록 연습해보세요."
            }
        else:
            self.feedback["wrist_angle_downswing"] = {
                0:
                0,
                1:
                angle,
                2:
                "백스윙 시 세팅된 손목의 코킹이 다운스윙 때도 유지되어야 합니다. 임팩트 후 릴리즈 자세에서 코킹을 풀도록 연습해보세요."
            }