react-native-nitro-pose-exercises 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +192 -159
- package/android/src/main/java/com/margelo/nitro/nitroposeexercises/NitroPoseExercises.kt +121 -4
- package/ios/NitroPoseExercises.swift +128 -11
- package/lib/module/NitroPoseExercises.nitro.js.map +1 -1
- package/lib/module/config/bicep-curl.js +3 -0
- package/lib/module/config/bicep-curl.js.map +1 -1
- package/lib/module/config/boat-pose.js +44 -0
- package/lib/module/config/boat-pose.js.map +1 -0
- package/lib/module/config/bow-pose.js +37 -0
- package/lib/module/config/bow-pose.js.map +1 -0
- package/lib/module/config/bridge-pose.js +37 -0
- package/lib/module/config/bridge-pose.js.map +1 -0
- package/lib/module/config/calf-raise.js +47 -0
- package/lib/module/config/calf-raise.js.map +1 -0
- package/lib/module/config/camel-pose.js +37 -0
- package/lib/module/config/camel-pose.js.map +1 -0
- package/lib/module/config/chair-pose.js +3 -0
- package/lib/module/config/chair-pose.js.map +1 -1
- package/lib/module/config/childs-pose.js +42 -0
- package/lib/module/config/childs-pose.js.map +1 -0
- package/lib/module/config/cobra-pose.js +3 -0
- package/lib/module/config/cobra-pose.js.map +1 -1
- package/lib/module/config/cobra-wings.js +47 -0
- package/lib/module/config/cobra-wings.js.map +1 -0
- package/lib/module/config/dead-lift.js +54 -0
- package/lib/module/config/dead-lift.js.map +1 -0
- package/lib/module/config/downward-dog.js +3 -0
- package/lib/module/config/downward-dog.js.map +1 -1
- package/lib/module/config/extended-side-angle.js +49 -0
- package/lib/module/config/extended-side-angle.js.map +1 -0
- package/lib/module/config/fish-pose.js +37 -0
- package/lib/module/config/fish-pose.js.map +1 -0
- package/lib/module/config/front-raise.js +54 -0
- package/lib/module/config/front-raise.js.map +1 -0
- package/lib/module/config/glute-bridge.js +49 -0
- package/lib/module/config/glute-bridge.js.map +1 -0
- package/lib/module/config/hip-abduction.js +42 -0
- package/lib/module/config/hip-abduction.js.map +1 -0
- package/lib/module/config/knee-raise.js +47 -0
- package/lib/module/config/knee-raise.js.map +1 -0
- package/lib/module/config/lateral-raise.js +54 -0
- package/lib/module/config/lateral-raise.js.map +1 -0
- package/lib/module/config/leg-raise.js +49 -0
- package/lib/module/config/leg-raise.js.map +1 -0
- package/lib/module/config/lunge.js +3 -0
- package/lib/module/config/lunge.js.map +1 -1
- package/lib/module/config/mountain-pose.js +49 -0
- package/lib/module/config/mountain-pose.js.map +1 -0
- package/lib/module/config/overarm-reach.js +47 -0
- package/lib/module/config/overarm-reach.js.map +1 -0
- package/lib/module/config/plank.js +3 -0
- package/lib/module/config/plank.js.map +1 -1
- package/lib/module/config/pull-up.js +47 -0
- package/lib/module/config/pull-up.js.map +1 -0
- package/lib/module/config/pushup.js +4 -0
- package/lib/module/config/pushup.js.map +1 -1
- package/lib/module/config/reverse-warrior.js +49 -0
- package/lib/module/config/reverse-warrior.js.map +1 -0
- package/lib/module/config/shoulder-press.js +3 -0
- package/lib/module/config/shoulder-press.js.map +1 -1
- package/lib/module/config/side-lung.js +54 -0
- package/lib/module/config/side-lung.js.map +1 -0
- package/lib/module/config/side-plank.js +37 -0
- package/lib/module/config/side-plank.js.map +1 -0
- package/lib/module/config/situp.js +3 -0
- package/lib/module/config/situp.js.map +1 -1
- package/lib/module/config/squat.js +3 -0
- package/lib/module/config/squat.js.map +1 -1
- package/lib/module/config/sumo-squat.js +54 -0
- package/lib/module/config/sumo-squat.js.map +1 -0
- package/lib/module/config/tree-pose.js +3 -0
- package/lib/module/config/tree-pose.js.map +1 -1
- package/lib/module/config/triangle-pose.js +49 -0
- package/lib/module/config/triangle-pose.js.map +1 -0
- package/lib/module/config/tricep-dip.js +4 -0
- package/lib/module/config/tricep-dip.js.map +1 -1
- package/lib/module/config/v-up.js +42 -0
- package/lib/module/config/v-up.js.map +1 -0
- package/lib/module/config/wall-sit.js +3 -0
- package/lib/module/config/wall-sit.js.map +1 -1
- package/lib/module/config/warrior-i.js +3 -0
- package/lib/module/config/warrior-i.js.map +1 -1
- package/lib/module/config/warrior-ii.js +3 -0
- package/lib/module/config/warrior-ii.js.map +1 -1
- package/lib/module/config/warrior-iii.js +61 -0
- package/lib/module/config/warrior-iii.js.map +1 -0
- package/lib/module/index.js +31 -3
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/NitroPoseExercises.nitro.d.ts +9 -1
- package/lib/typescript/src/NitroPoseExercises.nitro.d.ts.map +1 -1
- package/lib/typescript/src/config/bicep-curl.d.ts.map +1 -1
- package/lib/typescript/src/config/boat-pose.d.ts +3 -0
- package/lib/typescript/src/config/boat-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/bow-pose.d.ts +3 -0
- package/lib/typescript/src/config/bow-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/bridge-pose.d.ts +3 -0
- package/lib/typescript/src/config/bridge-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/calf-raise.d.ts +3 -0
- package/lib/typescript/src/config/calf-raise.d.ts.map +1 -0
- package/lib/typescript/src/config/camel-pose.d.ts +3 -0
- package/lib/typescript/src/config/camel-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/chair-pose.d.ts.map +1 -1
- package/lib/typescript/src/config/childs-pose.d.ts +3 -0
- package/lib/typescript/src/config/childs-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/cobra-pose.d.ts.map +1 -1
- package/lib/typescript/src/config/cobra-wings.d.ts +3 -0
- package/lib/typescript/src/config/cobra-wings.d.ts.map +1 -0
- package/lib/typescript/src/config/dead-lift.d.ts +3 -0
- package/lib/typescript/src/config/dead-lift.d.ts.map +1 -0
- package/lib/typescript/src/config/downward-dog.d.ts.map +1 -1
- package/lib/typescript/src/config/extended-side-angle.d.ts +3 -0
- package/lib/typescript/src/config/extended-side-angle.d.ts.map +1 -0
- package/lib/typescript/src/config/fish-pose.d.ts +3 -0
- package/lib/typescript/src/config/fish-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/front-raise.d.ts +3 -0
- package/lib/typescript/src/config/front-raise.d.ts.map +1 -0
- package/lib/typescript/src/config/glute-bridge.d.ts +3 -0
- package/lib/typescript/src/config/glute-bridge.d.ts.map +1 -0
- package/lib/typescript/src/config/hip-abduction.d.ts +3 -0
- package/lib/typescript/src/config/hip-abduction.d.ts.map +1 -0
- package/lib/typescript/src/config/knee-raise.d.ts +3 -0
- package/lib/typescript/src/config/knee-raise.d.ts.map +1 -0
- package/lib/typescript/src/config/lateral-raise.d.ts +3 -0
- package/lib/typescript/src/config/lateral-raise.d.ts.map +1 -0
- package/lib/typescript/src/config/leg-raise.d.ts +3 -0
- package/lib/typescript/src/config/leg-raise.d.ts.map +1 -0
- package/lib/typescript/src/config/lunge.d.ts.map +1 -1
- package/lib/typescript/src/config/mountain-pose.d.ts +3 -0
- package/lib/typescript/src/config/mountain-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/overarm-reach.d.ts +3 -0
- package/lib/typescript/src/config/overarm-reach.d.ts.map +1 -0
- package/lib/typescript/src/config/plank.d.ts.map +1 -1
- package/lib/typescript/src/config/pull-up.d.ts +3 -0
- package/lib/typescript/src/config/pull-up.d.ts.map +1 -0
- package/lib/typescript/src/config/pushup.d.ts.map +1 -1
- package/lib/typescript/src/config/reverse-warrior.d.ts +3 -0
- package/lib/typescript/src/config/reverse-warrior.d.ts.map +1 -0
- package/lib/typescript/src/config/shoulder-press.d.ts.map +1 -1
- package/lib/typescript/src/config/side-lung.d.ts +3 -0
- package/lib/typescript/src/config/side-lung.d.ts.map +1 -0
- package/lib/typescript/src/config/side-plank.d.ts +3 -0
- package/lib/typescript/src/config/side-plank.d.ts.map +1 -0
- package/lib/typescript/src/config/situp.d.ts.map +1 -1
- package/lib/typescript/src/config/squat.d.ts.map +1 -1
- package/lib/typescript/src/config/sumo-squat.d.ts +3 -0
- package/lib/typescript/src/config/sumo-squat.d.ts.map +1 -0
- package/lib/typescript/src/config/tree-pose.d.ts.map +1 -1
- package/lib/typescript/src/config/triangle-pose.d.ts +3 -0
- package/lib/typescript/src/config/triangle-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/tricep-dip.d.ts.map +1 -1
- package/lib/typescript/src/config/v-up.d.ts +3 -0
- package/lib/typescript/src/config/v-up.d.ts.map +1 -0
- package/lib/typescript/src/config/wall-sit.d.ts.map +1 -1
- package/lib/typescript/src/config/warrior-i.d.ts.map +1 -1
- package/lib/typescript/src/config/warrior-ii.d.ts.map +1 -1
- package/lib/typescript/src/config/warrior-iii.d.ts +3 -0
- package/lib/typescript/src/config/warrior-iii.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +26 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JCameraAngleType.hpp +58 -0
- package/nitrogen/generated/android/c++/JExerciseConfig.hpp +19 -3
- package/nitrogen/generated/android/c++/JHybridNitroPoseExercisesSpec.cpp +47 -0
- package/nitrogen/generated/android/c++/JHybridNitroPoseExercisesSpec.hpp +5 -0
- package/nitrogen/generated/android/c++/JPostureFamily.hpp +73 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/CameraAngleType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/ExerciseConfig.kt +19 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/HybridNitroPoseExercisesSpec.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/PostureFamily.kt +28 -0
- package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Bridge.hpp +9 -0
- package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Umbrella.hpp +6 -0
- package/nitrogen/generated/ios/c++/HybridNitroPoseExercisesSpecSwift.hpp +28 -0
- package/nitrogen/generated/ios/swift/CameraAngleType.swift +40 -0
- package/nitrogen/generated/ios/swift/ExerciseConfig.swift +17 -2
- package/nitrogen/generated/ios/swift/HybridNitroPoseExercisesSpec.swift +3 -0
- package/nitrogen/generated/ios/swift/HybridNitroPoseExercisesSpec_cxx.swift +76 -0
- package/nitrogen/generated/ios/swift/PostureFamily.swift +60 -0
- package/nitrogen/generated/shared/c++/CameraAngleType.hpp +76 -0
- package/nitrogen/generated/shared/c++/ExerciseConfig.hpp +20 -2
- package/nitrogen/generated/shared/c++/HybridNitroPoseExercisesSpec.cpp +5 -0
- package/nitrogen/generated/shared/c++/HybridNitroPoseExercisesSpec.hpp +5 -0
- package/nitrogen/generated/shared/c++/PostureFamily.hpp +96 -0
- package/package.json +1 -1
- package/src/NitroPoseExercises.nitro.ts +19 -0
- package/src/config/bicep-curl.ts +3 -0
- package/src/config/boat-pose.ts +36 -0
- package/src/config/bow-pose.ts +27 -0
- package/src/config/bridge-pose.ts +28 -0
- package/src/config/calf-raise.ts +30 -0
- package/src/config/camel-pose.ts +27 -0
- package/src/config/chair-pose.ts +3 -0
- package/src/config/childs-pose.ts +26 -0
- package/src/config/cobra-pose.ts +3 -0
- package/src/config/cobra-wings.ts +29 -0
- package/src/config/dead-lift.ts +38 -0
- package/src/config/downward-dog.ts +3 -0
- package/src/config/extended-side-angle.ts +36 -0
- package/src/config/fish-pose.ts +28 -0
- package/src/config/front-raise.ts +58 -0
- package/src/config/glute-bridge.ts +36 -0
- package/src/config/hip-abduction.ts +28 -0
- package/src/config/knee-raise.ts +29 -0
- package/src/config/lateral-raise.ts +58 -0
- package/src/config/leg-raise.ts +36 -0
- package/src/config/lunge.ts +3 -0
- package/src/config/mountain-pose.ts +36 -0
- package/src/config/overarm-reach.ts +49 -0
- package/src/config/plank.ts +3 -0
- package/src/config/pull-up.ts +30 -0
- package/src/config/pushup.ts +3 -0
- package/src/config/reverse-warrior.ts +36 -0
- package/src/config/shoulder-press.ts +3 -0
- package/src/config/side-lung.ts +37 -0
- package/src/config/side-plank.ts +28 -0
- package/src/config/situp.ts +3 -0
- package/src/config/squat.ts +3 -0
- package/src/config/sumo-squat.ts +38 -0
- package/src/config/tree-pose.ts +3 -0
- package/src/config/triangle-pose.ts +37 -0
- package/src/config/tricep-dip.ts +3 -0
- package/src/config/v-up.ts +29 -0
- package/src/config/wall-sit.ts +3 -0
- package/src/config/warrior-i.ts +3 -0
- package/src/config/warrior-ii.ts +3 -0
- package/src/config/warrior-iii.ts +45 -0
- package/src/index.tsx +31 -3
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
|
|
3
|
+
export const CALF_RAISE_CONFIG: ExerciseConfig = {
|
|
4
|
+
name: 'Calf Raise',
|
|
5
|
+
type: 'rep',
|
|
6
|
+
postureFamily: 'standingUpright',
|
|
7
|
+
visibilityThreshold: 0.2,
|
|
8
|
+
cameraAngle: 'front',
|
|
9
|
+
angles: [
|
|
10
|
+
{ name: 'leftAnkle', landmarkA: 25, landmarkB: 27, landmarkC: 31 },
|
|
11
|
+
{ name: 'rightAnkle', landmarkA: 26, landmarkB: 28, landmarkC: 32 },
|
|
12
|
+
{ name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
13
|
+
],
|
|
14
|
+
phases: [
|
|
15
|
+
{ phase: 'down', angleName: 'leftAnkle', minAngle: 70, maxAngle: 95 },
|
|
16
|
+
{ phase: 'up', angleName: 'leftAnkle', minAngle: 110, maxAngle: 150 },
|
|
17
|
+
],
|
|
18
|
+
repSequence: ['down', 'up', 'down'],
|
|
19
|
+
formRules: [
|
|
20
|
+
{
|
|
21
|
+
name: 'kneesBending',
|
|
22
|
+
message: 'Keep your legs straight',
|
|
23
|
+
severity: 'warning',
|
|
24
|
+
angleName: 'leftKnee',
|
|
25
|
+
minAngle: 165,
|
|
26
|
+
maxAngle: 180,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
holdDurationMs: 0,
|
|
30
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const CAMEL_POSE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Camel Pose (Ustrasana)',
|
|
4
|
+
type: 'hold',
|
|
5
|
+
postureFamily: 'seated',
|
|
6
|
+
visibilityThreshold: 0.3,
|
|
7
|
+
cameraAngle: 'side',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'hipExtension', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
10
|
+
{ name: 'kneeAngle', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
11
|
+
],
|
|
12
|
+
phases: [
|
|
13
|
+
{ phase: 'hold', angleName: 'hipExtension', minAngle: 120, maxAngle: 165 },
|
|
14
|
+
],
|
|
15
|
+
repSequence: [],
|
|
16
|
+
formRules: [
|
|
17
|
+
{
|
|
18
|
+
name: 'kneesTooWide',
|
|
19
|
+
message: 'Keep knees hip-width apart',
|
|
20
|
+
severity: 'warning',
|
|
21
|
+
angleName: 'kneeAngle',
|
|
22
|
+
minAngle: 80,
|
|
23
|
+
maxAngle: 100,
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
holdDurationMs: 30000,
|
|
27
|
+
};
|
package/src/config/chair-pose.ts
CHANGED
|
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
|
8
8
|
export const CHAIR_POSE_CONFIG: ExerciseConfig = {
|
|
9
9
|
name: 'Chair Pose (Utkatasana)',
|
|
10
10
|
type: 'hold',
|
|
11
|
+
postureFamily: 'standingUpright',
|
|
12
|
+
visibilityThreshold: 0.4,
|
|
13
|
+
cameraAngle: 'side',
|
|
11
14
|
angles: [
|
|
12
15
|
{
|
|
13
16
|
name: 'leftKnee',
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const CHILDS_POSE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: "Child's Pose (Balasana)",
|
|
4
|
+
type: 'hold',
|
|
5
|
+
postureFamily: 'seated',
|
|
6
|
+
visibilityThreshold: 0.3,
|
|
7
|
+
cameraAngle: 'side',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'hipFold', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
10
|
+
{ name: 'kneeAngle', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
11
|
+
{ name: 'arms', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
|
|
12
|
+
],
|
|
13
|
+
phases: [{ phase: 'hold', angleName: 'hipFold', minAngle: 30, maxAngle: 80 }],
|
|
14
|
+
repSequence: [],
|
|
15
|
+
formRules: [
|
|
16
|
+
{
|
|
17
|
+
name: 'notRelaxing',
|
|
18
|
+
message: 'Relax into the pose — let your forehead rest',
|
|
19
|
+
severity: 'info',
|
|
20
|
+
angleName: 'hipFold',
|
|
21
|
+
minAngle: 30,
|
|
22
|
+
maxAngle: 80,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
holdDurationMs: 60000,
|
|
26
|
+
};
|
package/src/config/cobra-pose.ts
CHANGED
|
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
|
8
8
|
export const COBRA_POSE_CONFIG: ExerciseConfig = {
|
|
9
9
|
name: 'Cobra Pose (Bhujangasana)',
|
|
10
10
|
type: 'hold',
|
|
11
|
+
postureFamily: 'horizontalProne',
|
|
12
|
+
visibilityThreshold: 0.25,
|
|
13
|
+
cameraAngle: 'side',
|
|
11
14
|
angles: [
|
|
12
15
|
{
|
|
13
16
|
name: 'leftElbow',
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const COBRA_WINGS_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Cobra Wings',
|
|
4
|
+
type: 'rep',
|
|
5
|
+
postureFamily: 'horizontalProne',
|
|
6
|
+
visibilityThreshold: 0.25,
|
|
7
|
+
cameraAngle: 'side',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'hipExtension', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
10
|
+
{ name: 'leftShoulder', landmarkA: 23, landmarkB: 11, landmarkC: 13 },
|
|
11
|
+
{ name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
|
|
12
|
+
],
|
|
13
|
+
phases: [
|
|
14
|
+
{ phase: 'down', angleName: 'hipExtension', minAngle: 160, maxAngle: 180 },
|
|
15
|
+
{ phase: 'up', angleName: 'hipExtension', minAngle: 120, maxAngle: 155 },
|
|
16
|
+
],
|
|
17
|
+
repSequence: ['down', 'up', 'down'],
|
|
18
|
+
formRules: [
|
|
19
|
+
{
|
|
20
|
+
name: 'legsLifting',
|
|
21
|
+
message: 'Keep your legs on the ground',
|
|
22
|
+
severity: 'warning',
|
|
23
|
+
angleName: 'hipExtension',
|
|
24
|
+
minAngle: 110,
|
|
25
|
+
maxAngle: 180,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
holdDurationMs: 0,
|
|
29
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
|
|
3
|
+
export const DEADLIFT_CONFIG: ExerciseConfig = {
|
|
4
|
+
name: 'Deadlift',
|
|
5
|
+
type: 'rep',
|
|
6
|
+
postureFamily: 'standingUpright',
|
|
7
|
+
visibilityThreshold: 0.3,
|
|
8
|
+
cameraAngle: 'side',
|
|
9
|
+
angles: [
|
|
10
|
+
{ name: 'leftHip', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
11
|
+
{ name: 'rightHip', landmarkA: 12, landmarkB: 24, landmarkC: 26 },
|
|
12
|
+
{ name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
13
|
+
],
|
|
14
|
+
phases: [
|
|
15
|
+
{ phase: 'up', angleName: 'leftHip', minAngle: 160, maxAngle: 180 },
|
|
16
|
+
{ phase: 'down', angleName: 'leftHip', minAngle: 60, maxAngle: 120 },
|
|
17
|
+
],
|
|
18
|
+
repSequence: ['up', 'down', 'up'],
|
|
19
|
+
formRules: [
|
|
20
|
+
{
|
|
21
|
+
name: 'roundedBack',
|
|
22
|
+
message: "Keep your back straight — don't round your spine",
|
|
23
|
+
severity: 'error',
|
|
24
|
+
angleName: 'leftHip',
|
|
25
|
+
minAngle: 50,
|
|
26
|
+
maxAngle: 180,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'kneesTooForward',
|
|
30
|
+
message: 'Push your hips back — knees stay behind toes',
|
|
31
|
+
severity: 'warning',
|
|
32
|
+
angleName: 'leftKnee',
|
|
33
|
+
minAngle: 140,
|
|
34
|
+
maxAngle: 180,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
holdDurationMs: 0,
|
|
38
|
+
};
|
|
@@ -9,6 +9,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
|
9
9
|
export const DOWNWARD_DOG_CONFIG: ExerciseConfig = {
|
|
10
10
|
name: 'Downward Dog (Adho Mukha Svanasana)',
|
|
11
11
|
type: 'hold',
|
|
12
|
+
postureFamily: 'inverted',
|
|
13
|
+
visibilityThreshold: 0.3,
|
|
14
|
+
cameraAngle: 'side',
|
|
12
15
|
angles: [
|
|
13
16
|
{
|
|
14
17
|
name: 'hipAngle',
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const EXTENDED_SIDE_ANGLE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Extended Side Angle (Utthita Parsvakonasana)',
|
|
4
|
+
type: 'hold',
|
|
5
|
+
postureFamily: 'standingUpright',
|
|
6
|
+
visibilityThreshold: 0.4,
|
|
7
|
+
cameraAngle: 'front',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'frontKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
10
|
+
{ name: 'backLeg', landmarkA: 24, landmarkB: 26, landmarkC: 28 },
|
|
11
|
+
{ name: 'topArm', landmarkA: 12, landmarkB: 14, landmarkC: 16 },
|
|
12
|
+
],
|
|
13
|
+
phases: [
|
|
14
|
+
{ phase: 'hold', angleName: 'frontKnee', minAngle: 80, maxAngle: 110 },
|
|
15
|
+
],
|
|
16
|
+
repSequence: [],
|
|
17
|
+
formRules: [
|
|
18
|
+
{
|
|
19
|
+
name: 'backLegBent',
|
|
20
|
+
message: 'Straighten your back leg',
|
|
21
|
+
severity: 'warning',
|
|
22
|
+
angleName: 'backLeg',
|
|
23
|
+
minAngle: 160,
|
|
24
|
+
maxAngle: 180,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'topArmBent',
|
|
28
|
+
message: 'Extend your top arm fully',
|
|
29
|
+
severity: 'info',
|
|
30
|
+
angleName: 'topArm',
|
|
31
|
+
minAngle: 160,
|
|
32
|
+
maxAngle: 180,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
holdDurationMs: 30000,
|
|
36
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
|
|
3
|
+
export const FISH_POSE_CONFIG: ExerciseConfig = {
|
|
4
|
+
name: 'Fish Pose (Matsyasana)',
|
|
5
|
+
type: 'hold',
|
|
6
|
+
postureFamily: 'supine',
|
|
7
|
+
visibilityThreshold: 0.3,
|
|
8
|
+
cameraAngle: 'side',
|
|
9
|
+
angles: [
|
|
10
|
+
{ name: 'chestOpen', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
11
|
+
{ name: 'legs', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
12
|
+
],
|
|
13
|
+
phases: [
|
|
14
|
+
{ phase: 'hold', angleName: 'chestOpen', minAngle: 130, maxAngle: 170 },
|
|
15
|
+
],
|
|
16
|
+
repSequence: [],
|
|
17
|
+
formRules: [
|
|
18
|
+
{
|
|
19
|
+
name: 'legsNotStraight',
|
|
20
|
+
message: 'Keep your legs straight and together',
|
|
21
|
+
severity: 'info',
|
|
22
|
+
angleName: 'legs',
|
|
23
|
+
minAngle: 165,
|
|
24
|
+
maxAngle: 180,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
holdDurationMs: 30000,
|
|
28
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
|
|
3
|
+
export const FRONT_RAISE_CONFIG: ExerciseConfig = {
|
|
4
|
+
name: 'Front Raise',
|
|
5
|
+
type: 'rep',
|
|
6
|
+
postureFamily: 'standingUpright',
|
|
7
|
+
visibilityThreshold: 0.2,
|
|
8
|
+
cameraAngle: 'side',
|
|
9
|
+
angles: [
|
|
10
|
+
{
|
|
11
|
+
name: 'leftShoulderFlexion',
|
|
12
|
+
landmarkA: 23,
|
|
13
|
+
landmarkB: 11,
|
|
14
|
+
landmarkC: 15,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'rightShoulderFlexion',
|
|
18
|
+
landmarkA: 24,
|
|
19
|
+
landmarkB: 12,
|
|
20
|
+
landmarkC: 16,
|
|
21
|
+
},
|
|
22
|
+
{ name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
|
|
23
|
+
],
|
|
24
|
+
phases: [
|
|
25
|
+
{
|
|
26
|
+
phase: 'down',
|
|
27
|
+
angleName: 'leftShoulderFlexion',
|
|
28
|
+
minAngle: 0,
|
|
29
|
+
maxAngle: 25,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
phase: 'up',
|
|
33
|
+
angleName: 'leftShoulderFlexion',
|
|
34
|
+
minAngle: 75,
|
|
35
|
+
maxAngle: 110,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
repSequence: ['down', 'up', 'down'],
|
|
39
|
+
formRules: [
|
|
40
|
+
{
|
|
41
|
+
name: 'elbowBending',
|
|
42
|
+
message: 'Keep your arms straight — slight bend only',
|
|
43
|
+
severity: 'warning',
|
|
44
|
+
angleName: 'leftElbow',
|
|
45
|
+
minAngle: 155,
|
|
46
|
+
maxAngle: 180,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'tooHigh',
|
|
50
|
+
message: 'Stop at shoulder height',
|
|
51
|
+
severity: 'info',
|
|
52
|
+
angleName: 'leftShoulderFlexion',
|
|
53
|
+
minAngle: 0,
|
|
54
|
+
maxAngle: 115,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
holdDurationMs: 0,
|
|
58
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const GLUTE_BRIDGE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Glute Bridge',
|
|
4
|
+
type: 'rep',
|
|
5
|
+
postureFamily: 'supine',
|
|
6
|
+
visibilityThreshold: 0.25,
|
|
7
|
+
cameraAngle: 'side',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'hipExtension', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
10
|
+
{ name: 'kneeAngle', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
11
|
+
],
|
|
12
|
+
phases: [
|
|
13
|
+
{ phase: 'down', angleName: 'hipExtension', minAngle: 80, maxAngle: 120 },
|
|
14
|
+
{ phase: 'up', angleName: 'hipExtension', minAngle: 155, maxAngle: 180 },
|
|
15
|
+
],
|
|
16
|
+
repSequence: ['down', 'up', 'down'],
|
|
17
|
+
formRules: [
|
|
18
|
+
{
|
|
19
|
+
name: 'hipsNotHigh',
|
|
20
|
+
message: 'Squeeze your glutes — push hips higher',
|
|
21
|
+
severity: 'warning',
|
|
22
|
+
angleName: 'hipExtension',
|
|
23
|
+
minAngle: 150,
|
|
24
|
+
maxAngle: 180,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'kneesTooWide',
|
|
28
|
+
message: 'Keep knees hip-width apart',
|
|
29
|
+
severity: 'info',
|
|
30
|
+
angleName: 'kneeAngle',
|
|
31
|
+
minAngle: 75,
|
|
32
|
+
maxAngle: 110,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
holdDurationMs: 0,
|
|
36
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const HIP_ABDUCTION_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Hip Abduction Standing',
|
|
4
|
+
postureFamily: 'standingUpright',
|
|
5
|
+
visibilityThreshold: 0.3,
|
|
6
|
+
cameraAngle: 'front',
|
|
7
|
+
type: 'rep',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'legSpread', landmarkA: 25, landmarkB: 23, landmarkC: 24 },
|
|
10
|
+
{ name: 'standingLeg', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
11
|
+
],
|
|
12
|
+
phases: [
|
|
13
|
+
{ phase: 'down', angleName: 'legSpread', minAngle: 0, maxAngle: 15 },
|
|
14
|
+
{ phase: 'up', angleName: 'legSpread', minAngle: 30, maxAngle: 60 },
|
|
15
|
+
],
|
|
16
|
+
repSequence: ['down', 'up', 'down'],
|
|
17
|
+
formRules: [
|
|
18
|
+
{
|
|
19
|
+
name: 'leaningOver',
|
|
20
|
+
message: "Keep your torso upright — don't lean",
|
|
21
|
+
severity: 'warning',
|
|
22
|
+
angleName: 'standingLeg',
|
|
23
|
+
minAngle: 165,
|
|
24
|
+
maxAngle: 180,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
holdDurationMs: 0,
|
|
28
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const KNEE_RAISE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Knee Raise',
|
|
4
|
+
type: 'rep',
|
|
5
|
+
postureFamily: 'supine',
|
|
6
|
+
visibilityThreshold: 0.25,
|
|
7
|
+
cameraAngle: 'side',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'leftHip', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
10
|
+
{ name: 'rightHip', landmarkA: 12, landmarkB: 24, landmarkC: 26 },
|
|
11
|
+
{ name: 'torso', landmarkA: 11, landmarkB: 23, landmarkC: 27 },
|
|
12
|
+
],
|
|
13
|
+
phases: [
|
|
14
|
+
{ phase: 'down', angleName: 'leftHip', minAngle: 155, maxAngle: 180 },
|
|
15
|
+
{ phase: 'up', angleName: 'leftHip', minAngle: 60, maxAngle: 110 },
|
|
16
|
+
],
|
|
17
|
+
repSequence: ['down', 'up', 'down'],
|
|
18
|
+
formRules: [
|
|
19
|
+
{
|
|
20
|
+
name: 'leaningBack',
|
|
21
|
+
message: "Stay upright — don't lean back",
|
|
22
|
+
severity: 'warning',
|
|
23
|
+
angleName: 'torso',
|
|
24
|
+
minAngle: 160,
|
|
25
|
+
maxAngle: 180,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
holdDurationMs: 0,
|
|
29
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
|
|
3
|
+
export const LATERAL_RAISE_CONFIG: ExerciseConfig = {
|
|
4
|
+
name: 'Lateral Raise',
|
|
5
|
+
type: 'rep',
|
|
6
|
+
postureFamily: 'standingUpright',
|
|
7
|
+
visibilityThreshold: 0.3,
|
|
8
|
+
cameraAngle: 'front',
|
|
9
|
+
angles: [
|
|
10
|
+
{
|
|
11
|
+
name: 'leftShoulderAbduction',
|
|
12
|
+
landmarkA: 23,
|
|
13
|
+
landmarkB: 11,
|
|
14
|
+
landmarkC: 15,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'rightShoulderAbduction',
|
|
18
|
+
landmarkA: 24,
|
|
19
|
+
landmarkB: 12,
|
|
20
|
+
landmarkC: 16,
|
|
21
|
+
},
|
|
22
|
+
{ name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
|
|
23
|
+
],
|
|
24
|
+
phases: [
|
|
25
|
+
{
|
|
26
|
+
phase: 'down',
|
|
27
|
+
angleName: 'leftShoulderAbduction',
|
|
28
|
+
minAngle: 5,
|
|
29
|
+
maxAngle: 30,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
phase: 'up',
|
|
33
|
+
angleName: 'leftShoulderAbduction',
|
|
34
|
+
minAngle: 75,
|
|
35
|
+
maxAngle: 110,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
repSequence: ['down', 'up', 'down'],
|
|
39
|
+
formRules: [
|
|
40
|
+
{
|
|
41
|
+
name: 'elbowBending',
|
|
42
|
+
message: "Keep a slight bend — don't fully bend your elbows",
|
|
43
|
+
severity: 'warning',
|
|
44
|
+
angleName: 'leftElbow',
|
|
45
|
+
minAngle: 150,
|
|
46
|
+
maxAngle: 180,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'raisingTooHigh',
|
|
50
|
+
message: "Stop at shoulder height — don't go above",
|
|
51
|
+
severity: 'info',
|
|
52
|
+
angleName: 'leftShoulderAbduction',
|
|
53
|
+
minAngle: 5,
|
|
54
|
+
maxAngle: 115,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
holdDurationMs: 0,
|
|
58
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const LEG_RAISE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Leg Raise',
|
|
4
|
+
type: 'rep',
|
|
5
|
+
postureFamily: 'supine',
|
|
6
|
+
visibilityThreshold: 0.25,
|
|
7
|
+
cameraAngle: 'side',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'leftHip', landmarkA: 11, landmarkB: 23, landmarkC: 27 },
|
|
10
|
+
{ name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
11
|
+
],
|
|
12
|
+
phases: [
|
|
13
|
+
{ phase: 'down', angleName: 'leftHip', minAngle: 150, maxAngle: 180 },
|
|
14
|
+
{ phase: 'up', angleName: 'leftHip', minAngle: 60, maxAngle: 110 },
|
|
15
|
+
],
|
|
16
|
+
repSequence: ['down', 'up', 'down'],
|
|
17
|
+
formRules: [
|
|
18
|
+
{
|
|
19
|
+
name: 'kneesBending',
|
|
20
|
+
message: 'Keep your legs straight',
|
|
21
|
+
severity: 'warning',
|
|
22
|
+
angleName: 'leftKnee',
|
|
23
|
+
minAngle: 160,
|
|
24
|
+
maxAngle: 180,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'lowerBackLifting',
|
|
28
|
+
message: 'Press your lower back into the floor',
|
|
29
|
+
severity: 'warning',
|
|
30
|
+
angleName: 'leftHip',
|
|
31
|
+
minAngle: 50,
|
|
32
|
+
maxAngle: 180,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
holdDurationMs: 0,
|
|
36
|
+
};
|
package/src/config/lunge.ts
CHANGED
|
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
|
8
8
|
export const LUNGE_CONFIG: ExerciseConfig = {
|
|
9
9
|
name: 'Lunge',
|
|
10
10
|
type: 'rep',
|
|
11
|
+
postureFamily: 'supine',
|
|
12
|
+
visibilityThreshold: 0.25,
|
|
13
|
+
cameraAngle: 'side',
|
|
11
14
|
angles: [
|
|
12
15
|
{
|
|
13
16
|
name: 'frontKnee',
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const MOUNTAIN_POSE_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Mountain Pose (Tadasana)',
|
|
4
|
+
type: 'hold',
|
|
5
|
+
postureFamily: 'standingUpright',
|
|
6
|
+
visibilityThreshold: 0.4,
|
|
7
|
+
cameraAngle: 'front',
|
|
8
|
+
angles: [
|
|
9
|
+
{ name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
|
|
10
|
+
{ name: 'hipAngle', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
|
|
11
|
+
{ name: 'shoulderAlignment', landmarkA: 23, landmarkB: 11, landmarkC: 13 },
|
|
12
|
+
],
|
|
13
|
+
phases: [
|
|
14
|
+
{ phase: 'hold', angleName: 'leftKnee', minAngle: 170, maxAngle: 180 },
|
|
15
|
+
],
|
|
16
|
+
repSequence: [],
|
|
17
|
+
formRules: [
|
|
18
|
+
{
|
|
19
|
+
name: 'slouching',
|
|
20
|
+
message: 'Stand tall — lengthen your spine',
|
|
21
|
+
severity: 'info',
|
|
22
|
+
angleName: 'hipAngle',
|
|
23
|
+
minAngle: 170,
|
|
24
|
+
maxAngle: 180,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'shouldersTense',
|
|
28
|
+
message: 'Relax your shoulders down',
|
|
29
|
+
severity: 'info',
|
|
30
|
+
angleName: 'shoulderAlignment',
|
|
31
|
+
minAngle: 5,
|
|
32
|
+
maxAngle: 25,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
holdDurationMs: 30000,
|
|
36
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
export const OVERARM_REACH_CONFIG: ExerciseConfig = {
|
|
3
|
+
name: 'Overarm Reach',
|
|
4
|
+
type: 'rep',
|
|
5
|
+
postureFamily: 'standingUpright',
|
|
6
|
+
visibilityThreshold: 0.3,
|
|
7
|
+
cameraAngle: 'front',
|
|
8
|
+
angles: [
|
|
9
|
+
{
|
|
10
|
+
name: 'leftShoulderAbduction',
|
|
11
|
+
landmarkA: 23,
|
|
12
|
+
landmarkB: 11,
|
|
13
|
+
landmarkC: 15,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'rightShoulderAbduction',
|
|
17
|
+
landmarkA: 24,
|
|
18
|
+
landmarkB: 12,
|
|
19
|
+
landmarkC: 16,
|
|
20
|
+
},
|
|
21
|
+
{ name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
|
|
22
|
+
],
|
|
23
|
+
phases: [
|
|
24
|
+
{
|
|
25
|
+
phase: 'down',
|
|
26
|
+
angleName: 'leftShoulderAbduction',
|
|
27
|
+
minAngle: 0,
|
|
28
|
+
maxAngle: 30,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
phase: 'up',
|
|
32
|
+
angleName: 'leftShoulderAbduction',
|
|
33
|
+
minAngle: 155,
|
|
34
|
+
maxAngle: 180,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
repSequence: ['down', 'up', 'down'],
|
|
38
|
+
formRules: [
|
|
39
|
+
{
|
|
40
|
+
name: 'elbowsBending',
|
|
41
|
+
message: 'Keep your arms straight',
|
|
42
|
+
severity: 'warning',
|
|
43
|
+
angleName: 'leftElbow',
|
|
44
|
+
minAngle: 160,
|
|
45
|
+
maxAngle: 180,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
holdDurationMs: 0,
|
|
49
|
+
};
|
package/src/config/plank.ts
CHANGED
|
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
|
8
8
|
export const PLANK_CONFIG: ExerciseConfig = {
|
|
9
9
|
name: 'Plank',
|
|
10
10
|
type: 'hold',
|
|
11
|
+
postureFamily: 'horizontalProne',
|
|
12
|
+
visibilityThreshold: 0.25,
|
|
13
|
+
cameraAngle: 'side',
|
|
11
14
|
angles: [
|
|
12
15
|
{
|
|
13
16
|
name: 'leftHip',
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
2
|
+
|
|
3
|
+
export const PULL_UP_CONFIG: ExerciseConfig = {
|
|
4
|
+
name: 'Pull-Up',
|
|
5
|
+
type: 'rep',
|
|
6
|
+
postureFamily: 'standingUpright',
|
|
7
|
+
visibilityThreshold: 0.2,
|
|
8
|
+
cameraAngle: 'front',
|
|
9
|
+
angles: [
|
|
10
|
+
{ name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
|
|
11
|
+
{ name: 'rightElbow', landmarkA: 12, landmarkB: 14, landmarkC: 16 },
|
|
12
|
+
{ name: 'leftShoulder', landmarkA: 23, landmarkB: 11, landmarkC: 13 },
|
|
13
|
+
],
|
|
14
|
+
phases: [
|
|
15
|
+
{ phase: 'down', angleName: 'leftElbow', minAngle: 150, maxAngle: 180 },
|
|
16
|
+
{ phase: 'up', angleName: 'leftElbow', minAngle: 40, maxAngle: 90 },
|
|
17
|
+
],
|
|
18
|
+
repSequence: ['down', 'up', 'down'],
|
|
19
|
+
formRules: [
|
|
20
|
+
{
|
|
21
|
+
name: 'kipping',
|
|
22
|
+
message: 'Control the movement — no swinging',
|
|
23
|
+
severity: 'warning',
|
|
24
|
+
angleName: 'leftShoulder',
|
|
25
|
+
minAngle: 0,
|
|
26
|
+
maxAngle: 160,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
holdDurationMs: 0,
|
|
30
|
+
};
|
package/src/config/pushup.ts
CHANGED
|
@@ -9,6 +9,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
|
|
|
9
9
|
export const PUSHUP_CONFIG: ExerciseConfig = {
|
|
10
10
|
name: 'Push-Up',
|
|
11
11
|
type: 'rep',
|
|
12
|
+
postureFamily: 'horizontalProne',
|
|
13
|
+
visibilityThreshold: 0.2, // ← add
|
|
14
|
+
cameraAngle: 'front',
|
|
12
15
|
angles: [
|
|
13
16
|
{
|
|
14
17
|
name: 'leftElbow',
|