>_ rehablogger
Система работает
← Все сессии
СЕССИЯ УСТРОЙСТВА

rehabapp_2026-09-11_08-37-17

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
INFO [console] e_id: 40, sequence_number: 1, step_text: Лягте на спину, расположитесь боком рабочей ноги к камере}, {exercise_id: 40, sequence_number: 2, step_text: Руки расположите вдоль туловища ладонями вниз или в стороны для устойчивости}, {exercise_id: 40, sequence_number: 3, step_text: Ноги полностью выпрямите в коленных суставах}, {exercise_id: 40, sequence_number: 4, step_text: Стопы потяните на себя (тыльное сгибание в голеностопном суставе)}, {exercise_id: 40, sequence_number: 5, step_text: Поясницу прижмите к полу, живот слегка подтяните, чтобы избежать излишнего прогиба в пояснице}, {exercise_id: 40, sequence_number: 6, step_text: Начните выполнять круговое движение рабочей выпрямленной ногой. Нога в верхней точке должна подниматься на уровень 30°-45° градусов от пола}, {exercise_id: 40, sequence_number: 7, step_text: Направление ноги (по часовой стрелке / против часовой стрелки) меняйте после каждого повторения}]}}, {id: 41, sequence_number: 4, name: Отведение прямой ноги в сторону - В и
INFO [console] .п. сидя с прямыми ногами с опорой руками назад за спиной, image: https://rehabilitation.most.team/storage/exercise/photos/01KQC6319E6D4MPZ50SGTNW1Q6.png, by_body_side: by_side, execution_order_type: symmetric, approaches_count: 2, execution_count: 6, execution_time: null, instruction: {exercise_name: Отведение прямой ноги в сторону - В и.п. сидя с прямыми ногами с опорой руками назад за спиной, video: https://rehabilitation.most.team/storage/exercise/videos/01KQC6319HS0NS6B4PRV3WH9FT.mov, inventory: null, warning: Следить за тем, чтобы бедро не ротировалось (вращалось) наружу, носок стопы отведённой ноги должен “смотреть вверх”, general_description: Спина относительно поверхности может находиться от 90 до 45 градусов к полу (например, упираясь не прямыми руками, а предплечьями, отклонившись больше назад). Приподнять прямую рабочую ногу от поверхности и отвести её в сторону на сколько возможно, не опуская ногу, и вернуться в исходное положение. Можно выполнять без пауз между повторения
INFO [console] ми. Цель – тренировка мышц абдукторов бедра., steps: [{exercise_id: 41, sequence_number: 1, step_text: Сядьте на пол лицом к камере. Ноги выпрямите перед собой}, {exercise_id: 41, sequence_number: 2, step_text: Корпус отклоните назад. Спина должна находиться под углом от 90 до 45 градусов относительно пола. Для удобства и стабильности можно опираться не на прямые руки, а на предплечья, согнув руки в локтях}, {exercise_id: 41, sequence_number: 3, step_text: Приподнимите рабочую ногу на 5-10 см }, {exercise_id: 41, sequence_number: 4, step_text: На выдохе отведите рабочую ногу в сторону (наружу) на максимально возможную амплитуду, которую позволяет ваша подвижность и физическое состояние. Движение должно происходить за счёт работы мышц бедра}, {exercise_id: 41, sequence_number: 5, step_text: На вдохе так же плавно верните ногу в исходное положение (перед собой), но не кладите её на пол до окончания подхода. Нога остаётся на весу}, {exercise_id: 41, sequence_number: 6, step_text: Повторит
INFO [console] е движение ногой заданное количество раз}]}}, {id: 42, sequence_number: 5, name: Подъём прямой ноги в сторону - В и.п. лёжа на боку, image: https://rehabilitation.most.team/storage/exercise/photos/01KQC78495HZ7HDF3FGQ104G16.png, by_body_side: by_side, execution_order_type: isolated, approaches_count: 2, execution_count: 6, execution_time: null, instruction: {exercise_name: Подъём прямой ноги в сторону - В и.п. лёжа на боку, video: https://rehabilitation.most.team/storage/exercise/videos/01KQC78499GQQ5WEFZWRN07YFK.mov, inventory: null, warning: Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу, general_description: Лёжа на боку отвести верхнюю ногу в сторону (поднять). Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу. Представьте, что вы лежите на боку и прижимаетесь спиной к стене, а далее скользите пяткой верхней ноги по стене вверх. Цель – тренировка мышц абдукторов/аддукторов бедра., steps: [{exercise_id: 42, sequence_
INFO [console] number: 1, step_text: Лягте на бок так, чтобы рабочая нога была сверху}, {exercise_id: 42, sequence_number: 2, step_text: Убедитесь, что вы лежите ровно. Голова может лежать на руке или на подушке}, {exercise_id: 42, sequence_number: 3, step_text: Нижнюю ногу слегка согните в колене и тазобедренном суставе для устойчивости}, {exercise_id: 42, sequence_number: 4, step_text: Верхнюю ногу полностью выпрямите. Она должна находиться строго над нижней ногой, образуя одну линию с туловищем}, {exercise_id: 42, sequence_number: 5, step_text: Положите верхнюю руку на талию или на матрас перед собой для равновесия}, {exercise_id: 42, sequence_number: 6, step_text: На выдохе: Медленно поднимите (отведите) прямую ногу вверх. Движение должно происходить строго в плоскости тела, как будто вы отводите ногу в сторону. Нога не должна сгибаться в тазобедренном суставе и отклоняться вперёд по направлению к животу или назад по направлению к спине}, {exercise_id: 42, sequence_number: 7, step_text: В верхней
INFO [console] точке задержитесь на 1-2 секунды, сохраняя ногу прямой и чувствуя напряжение в боковой поверхности бедра и ягодице}, {exercise_id: 42, sequence_number: 8, step_text: На вдохе: Плавно, без рывка, опустите ногу в исходное положение. Старайтесь не класть ногу полностью на нижнюю, а остановитесь чуть выше, чтобы сохранить напряжение в мышцах}, {exercise_id: 42, sequence_number: 9, step_text: Повторите необходимое количество раз }]}}]}}
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 new FlutterSoundPlayer (package:flutter_sound/public/flutter_sound_player.dart:200:13)
INFO [console] │ #1 new AudioPlayerServiceImpl (package:testapp/features/training/data/services/audio_player_service_impl.dart:6:19)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 ctor: FlutterSoundPlayer()
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._openPlayer (package:flutter_sound/public/flutter_sound_player.dart:727:13)
INFO [console] │ #1 FlutterSoundPlayer.openPlayer.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:721:11)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:---> _openPlayer
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._openPlayer (package:flutter_sound/public/flutter_sound_player.dart:740:15)
INFO [console] │ #1 FlutterSoundPlayer.openPlayer.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:721:11)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 Resetting flutter_sound Player Plugin
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.openPlayerCompleted (package:flutter_sound/public/flutter_sound_player.dart:281:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:84:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 ---> openPlayerCompleted: true
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ROI_DEBUG: corners computed rawRect=(-39.7,57.2) -> (519.0,615.9) clamped=(0.0,57.2) -> (480.0,615.9) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-39.1,57.6) -> (519.0,615.7) clamped=(0.0,57.6) -> (480.0,615.7) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-36.3,57.2) -> (524.8,618.2) clamped=(0.0,57.2) -> (480.0,618.2) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-36.0,57.2) -> (525.1,618.3) clamped=(0.0,57.2) -> (480.0,618.3) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-7.4,93.8) -> (509.8,611.1) clamped=(0.0,93.8) -> (480.0,611.1) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-416.2,-294.3) -> (896.7,1018.6) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE_METRICS: received=16(15.7fps) processed=16(15.7fps) replaced=0(0.0fps) buildMs=21.86 estimatorMs=53.85 totalMs=54.89 actualFps=15.7
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-8.0,92.0) -> (510.7,610.7) clamped=(0.0,92.0) -> (480.0,610.7) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-415.7,-294.3) -> (896.2,1017.6) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-38.6,58.1) -> (518.6,615.4) clamped=(0.0,58.1) -> (480.0,615.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-35.9,57.2) -> (525.4,618.4) clamped=(0.0,57.2) -> (480.0,618.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-415.4,-294.9) -> (895.8,1016.3) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-9.2,90.2) -> (512.0,611.4) clamped=(0.0,90.2) -> (480.0,611.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-12.2,86.1) -> (515.0,613.3) clamped=(0.0,86.1) -> (480.0,613.3) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-415.3,-295.2) -> (895.6,1015.8) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/detailed-exercises?unit_id=1021&rehabilitation_day_id=2858&workout_id
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] ROI_DEBUG: corners computed rawRect=(-38.3,58.3) -> (518.6,615.2) clamped=(0.0,58.3) -> (480.0,615.2) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-35.8,57.2) -> (525.4,618.4) clamped=(0.0,57.2) -> (480.0,618.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-416.9,-298.1) -> (896.9,1015.7) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-34.2,58.6) -> (524.1,616.9) clamped=(0.0,58.6) -> (480.0,616.9) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-31.4,61.8) -> (521.5,614.7) clamped=(0.0,61.8) -> (480.0,614.7) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-13.9,82.1) -> (516.9,612.9) clamped=(0.0,82.1) -> (480.0,612.9) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-416.8,-298.1) -> (896.8,1015.6) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-415.9,-298.2) -> (896.6,1014.2) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-415.6,-298.3) -> (896.9,1014.2) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-37.8,58.6) -> (518.6,615.0) clamped=(0.0,58.6) -> (480.0,615.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-19.4,73.3) -> (522.4,615.1) clamped=(0.0,73.3) -> (480.0,615.1) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-26.4,65.2) -> (528.0,619.6) clamped=(0.0,65.2) -> (480.0,619.6) frame=480x720 screen=394x853
INFO [console] LEG_SKEL_L: i23=(0.101,-0.001,0.003) v=1.000 p=1.000 i25=(0.086,0.354,-0.022) v=0.953 p=1.000 i27=(0.095,0.697,0.135) v=0.939 p=0.999
INFO [console] LEG_SKEL_R: i24=(-0.102,0.001,-0.002) v=1.000 p=1.000 i26=(-0.095,0.275,-0.214) v=0.988 p=1.000 i28=(-0.129,0.700,-0.166) v=0.992 p=1.000
INFO [console] ROI_DEBUG: corners computed rawRect=(-415.0,-298.3) -> (896.3,1013.0) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-35.5,53.8) -> (535.2,624.6) clamped=(0.0,53.8) -> (480.0,624.6) frame=480x720 screen=394x853
INFO [console] POSE_METRICS: received=16(16.0fps) processed=16(16.0fps) replaced=0(0.0fps) buildMs=17.33 estimatorMs=46.78 totalMs=47.95 actualFps=16.0
INFO [console] ROI_DEBUG: corners computed rawRect=(-413.6,-298.5) -> (897.8,1012.9) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-37.6,58.5) -> (519.0,615.2) clamped=(0.0,58.5) -> (480.0,615.2) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-37.6,58.4) -> (519.2,615.2) clamped=(0.0,58.4) -> (480.0,615.2) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-30.2,63.4) -> (520.1,613.7) clamped=(0.0,63.4) -> (480.0,613.7) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-413.4,-298.5) -> (897.7,1012.6) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-37.3,58.4) -> (519.6,615.3) clamped=(0.0,58.4) -> (480.0,615.3) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-37.1,58.4) -> (519.9,615.4) clamped=(0.0,58.4) -> (480.0,615.4) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-28.6,67.8) -> (517.0,613.5) clamped=(0.0,67.8) -> (480.0,613.5) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-45.6,42.5) -> (540.8,629.0) clamped=(0.0,42.5) -> (480.0,629.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-412.2,-298.4) -> (896.6,1010.4) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] POSE_METRICS: received=14(13.3fps) processed=14(13.3fps) replaced=0(0.0fps) buildMs=21.56 estimatorMs=50.07 totalMs=51.36 actualFps=13.3
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-27.7,75.0) -> (511.6,614.3) clamped=(0.0,75.0) -> (480.0,614.3) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-56.7,30.7) -> (546.3,633.7) clamped=(0.0,30.7) -> (480.0,633.7) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-412.4,-298.8) -> (896.7,1010.4) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-412.7,-299.2) -> (896.6,1010.1) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-412.0,-298.4) -> (895.9,1009.4) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Fri, 11 Sep 2026 05:37:25 GMT
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] ROI_DEBUG: corners computed rawRect=(-36.2,59.0) -> (520.3,615.5) clamped=(0.0,59.0) -> (480.0,615.5) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-87.5,-3.4) -> (557.8,641.9) clamped=(0.0,0.0) -> (480.0,641.9) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-26.0,78.8) -> (507.2,612.0) clamped=(0.0,78.8) -> (480.0,612.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-26.1,80.8) -> (504.6,611.5) clamped=(0.0,80.8) -> (480.0,611.5) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-74.6,12.3) -> (552.3,639.2) clamped=(0.0,12.3) -> (480.0,639.2) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-25.3,83.3) -> (501.5,610.0) clamped=(0.0,83.3) -> (480.0,610.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-24.8,84.4) -> (500.1,609.2) clamped=(0.0,84.4) -> (480.0,609.2) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-92.8,-11.4) -> (558.9,640.2) clamped=(0.0,0.0) -> (480.0,640.2) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-411.5,-298.5) -> (895.4,1008.4) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] LEG_SKEL_L: i23=(0.095,-0.016,-0.045) v=0.996 p=0.990 i25=(-0.000,0.000,-0.336) v=0.885 p=0.964 i27=(0.088,0.311,-0.238) v=0.702 p=0.724
INFO [console] LEG_SKEL_R: i24=(-0.096,0.016,0.045) v=0.997 p=0.997 i26=(-0.282,0.002,-0.207) v=0.669 p=0.979 i28=(-0.069,0.264,-0.062) v=0.520 p=0.898
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.9,-299.6) -> (899.5,1008.9) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE_METRICS: received=16(15.4fps) processed=16(15.4fps) replaced=0(0.0fps) buildMs=20.09 estimatorMs=46.50 totalMs=47.48 actualFps=15.4
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.4,-298.8) -> (898.6,1008.1) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-105.3,32.8) -> (618.3,756.5) clamped=(0.0,32.8) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE_LM: [0 frame=(106,65)] [11 frame=(251,74)] [12 frame=(148,136)] [23 frame=(286,281)] [24 frame=(205,294)] frameSize=480 x 720 screenSize=394x853
INFO [console] POSE_MAP: [0 norm=(0.903,0.090)] [11 norm=(0.467,0.103)] [12 norm=(0.778,0.190)] [23 norm=(0.363,0.391)] [24 norm=(0.604,0.408)]
INFO [console] ROI_DEBUG: corners computed rawRect=(-35.1,59.5) -> (520.8,615.3) clamped=(0.0,59.5) -> (480.0,615.3) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-35.4,59.5) -> (520.4,615.2) clamped=(0.0,59.5) -> (480.0,615.2) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE_METRICS: received=15(14.4fps) processed=15(14.4fps) replaced=0(0.0fps) buildMs=18.69 estimatorMs=45.04 totalMs=46.44 actualFps=14.4
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-106.2,-28.9) -> (568.8,646.0) clamped=(0.0,0.0) -> (480.0,646.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-120.3,-45.8) -> (579.5,654.0) clamped=(0.0,0.0) -> (480.0,654.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-135.6,-62.8) -> (592.7,665.5) clamped=(0.0,0.0) -> (480.0,665.5) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.1,-298.7) -> (898.3,1007.8) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-34.8,59.4) -> (521.2,615.4) clamped=(0.0,59.4) -> (480.0,615.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-34.8,59.4) -> (521.4,615.5) clamped=(0.0,59.4) -> (480.0,615.5) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-23.7,86.7) -> (497.7,608.1) clamped=(0.0,86.7) -> (480.0,608.1) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.3,-298.9) -> (898.4,1007.9) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-143.8,-73.2) -> (600.3,670.9) clamped=(0.0,0.0) -> (480.0,670.9) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-151.0,-81.6) -> (607.0,676.3) clamped=(0.0,0.0) -> (480.0,676.3) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-407.4,-299.8) -> (899.2,1006.8) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-125.2,13.2) -> (633.0,771.4) clamped=(0.0,13.2) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-23.8,88.4) -> (495.1,607.4) clamped=(0.0,88.4) -> (480.0,607.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-407.7,-300.6) -> (899.7,1006.9) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-407.5,-300.6) -> (899.7,1006.6) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-407.5,-301.0) -> (899.6,1006.1) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-202.3,-152.9) -> (656.7,706.1) clamped=(0.0,0.0) -> (480.0,706.1) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-165.7,-100.8) -> (619.8,684.7) clamped=(0.0,0.0) -> (480.0,684.7) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-185.6,-127.9) -> (639.7,697.4) clamped=(0.0,0.0) -> (480.0,697.4) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-407.8,-301.5) -> (900.0,1006.2) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.4,-302.4) -> (900.2,1006.2) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.7,-302.7) -> (900.4,1006.4) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-11T05:37:25.338725Z","request_id":"9093d737-678f-42df-b3d7-57bb4d4c4652","version":"v1"},"data":{"unit_id":1021,"workout_duration_start":10,"workout_duration_end":20,"body_side":"right","exercises":[{"id":47,"sequence_number":1,"is_monitored":true,"name":"Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQCHWY0J06QHXQ4P2BH5VD3A.png","by_body_side":"by_side","execution_order_type":"isolated","approaches_count":2,"execution_count":null,"execution_time":15,"instruction":{"exercise_name":"Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQCHWY0PXRQ1HM420M2W892Q.mov","inventory":"Возвышенность (стул и т.п.)","warning":"Не допускайте разворота/заваливания поднятой ноги","general_description":"Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка, ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; \nстопа и колено поднятой ноги не должны \"заваливаться\" наружу (отсутствие ротации); \nнаклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; \nдыхание свободное, без задержек; \nощущение растяжения должно быть комфортным, без острой боли.","steps":[{"exercise_id":47,"sequence_number":1,"step_text":"Встаньте боком растягиваемой ноги к камере"},{"exercise_id":47,"sequence_number":2,"step_text":"Поставьте рабочую ногу на возвышенность, другая нога опорная"},{"exercise_id":47,"sequence_number":3,"step_text":"Держите спину прямой"},{"exercise_id":47,"sequence_number":4,"step_text":"Стопа поднятой ноги смотрит на себя"},{"exercise_id":47,"sequence_number":5,"step_text":"Потянитесь пальцами рук к стопе поднятой ноги. Ваша задача - не обязательно обхватить стопу, а максимально растянуться с прямой спиной"},{"exercise_id":47,"sequence_number":6,"step_text":"В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время"}]},"camera_orientation":"vertical","neural_network_type":"mediapipe","base_main_command":"Наклонитесь к правой ноге","left_main_command":null,"calibration_parameters":[{"id":64,"name":"Калибровка угла в колене","sequence_number":1,"calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":99,"component_side":"right","segment_type":null,"parts":[{"id":256,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":257,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":258,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":100,"component_side":"left","segment_type":null,"parts":[{"id":259,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":260,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":261,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":120,"command_side":"right","position_number":1,"position_message":"Встаньте правым боком к камере и положите правую ногу на возвышенность, колено прямое","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите колено выпрямленным"},{"id":121,"command_side":"left","position_number":1,"position_message":"Встаньте левым боком к камере и положите левую ногу на возвышенность, колено прямое","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите колено выпрямленным"}]},{"id":106,"name":"Калибровка рабочего угла","sequence_number":2,"calibration_parameter_type":"angle","fixation_type":"min_value","fixation_order":null,"deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":145,"component_side":"right","segment_type":null,"parts":[{"id":388,"sequence_number":1,"body_point":{"id":13,"mediapipe_index":12,"movenet_index":6},"line_type":null,"part_type":"point"},{"id":389,"sequence_number":2,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":390,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":146,"component_side":"left","segment_type":null,"parts":[{"id":391,"sequence_number":1,"body_point":{"id":12,"mediapipe_index":11,"movenet_index":5},"line_type":null,"part_type":"point"},{"id":392,"sequence_number":2,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":393,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":156,"command_side":"right","position_number":1,"position_message":"Наклонитесь к правой ноге до ощущения комфортного растяжения","fixation_message":"Фиксируем угол наклона, оставайтесь в нужном положении","error_message":"Опускайте корпус ниже"},{"id":157,"command_side":"left","position_number":1,"position_message":"Наклонитесь к левой ноге до ощущения комфортного растяжения","fixation_message":"Фиксируем угол наклона, оставайтесь в нужном положении","error_message":"Опускайте корпус ниже"}]}]},{"id":35,"sequence_number":2,"is_monitored":true,"name":"Сгибание и разгибание в голеностопных суставах","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQ9W7XPDJ63N5ZHWXP8PT0AK.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":6,"execution_time":null,"instruction":{"exercise_name":"Сгибание и разгибание в голеностопных суставах","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQ9W7XPHKNMR9R7HF5YSZY9E.mov","inventory":null,"warning":"Во время выполнения колени должны оставаться выпрямленными, стопы не должны разворачиваться внутрь или наружу (большой палец направлен строго вверх)","general_description":"Исходное положение - лёжа на спине боком к камере, ноги выпрямлены в коленях. Выполнять движения стопами на себя и от себя в максимально доступной амплитуде.","steps":[{"exercise_id":35,"sequence_number":1,"step_text":"Примите положение лёжа на спине (на полу, коврике или тренировочной скамье), боком к камере"},{"exercise_id":35,"sequence_number":2,"step_text":"Выпрямите обе ноги в коленях"},{"exercise_id":35,"sequence_number":3,"step_text":"Стопы расположите параллельно друг другу на ширине таза"},{"exercise_id":35,"sequence_number":4,"step_text":"Руки свободно лежат вдоль туловища ладонями вниз или слегка разведены в стороны для устойчивости"},{"exercise_id":35,"sequence_number":5,"step_text":"Сохраняя прямое, вытянутое положение обеих ног в коленных суставах, начните выполнять одновременное движение стопами"},{"exercise_id":35,"sequence_number":6,"step_text":"На себя: Плавно потяните носки стоп максимально на себя (тыльное сгибание), ощущая растяжение в задней поверхности голени и подколенной области"},{"exercise_id":35,"sequence_number":7,"step_text":"От себя: Затем так же плавно потяните носки стоп максимально от себя (подошвенное сгибание), как будто хотите встать на \"цыпочки\", ощущая напряжение в икрах"},{"exercise_id":35,"sequence_number":8,"step_text":"Движение должно быть ритмичным, без рывков, в спокойном темпе"}]},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Сгибайте и разгибайте стопы","left_main_command":null,"calibration_parameters":[{"id":41,"name":"Калибровка угла в колене","sequence_number":1,"calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":53,"component_side":"right","segment_type":null,"parts":[{"id":126,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":127,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":128,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":54,"component_side":"left","segment_type":null,"parts":[{"id":129,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":130,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":131,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":54,"command_side":"right","position_number":1,"position_message":"Лягте на спину правым боком к камере, ноги лежат на полу, колени держите выпрямленными","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите колени выпрямленными"},{"id":55,"command_side":"left","position_number":1,"position_message":"Лягте на спину левым боком к камере, ноги лежат на полу, колени держите выпрямленными","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите колени выпрямленными"}]},{"id":42,"name":"Калибровка амплитуды рабочего угла","sequence_number":2,"calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":55,"component_side":"right","segment_type":null,"parts":[{"id":132,"sequence_number":1,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":133,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"},{"id":134,"sequence_number":3,"body_point":{"id":33,"mediapipe_index":32,"movenet_index":null},"line_type":null,"part_type":"point"}]},{"id":56,"component_side":"left","segment_type":null,"parts":[{"id":135,"sequence_number":1,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":136,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"},{"id":137,"sequence_number":3,"body_point":{"id":32,"mediapipe_index":31,"movenet_index":null},"line_type":null,"part_type":"point"}]}],"commands":[{"id":56,"command_side":"right","position_number":1,"position_message":"Оставайтесь лежать правым боком камере, потяните носки стоп на себя","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Вращайте стопы в большей амплитуде"},{"id":57,"command_side":"left","position_number":1,"position_message":"Оставайтесь лежать левым боком камере, потяните носки стоп на себя","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Вращайте стопы в большей амплитуде"},{"id":58,"command_side":"right","position_number":2,"position_message":"Теперь потяните носки от себя, положение должно быть комфортным","fixation_message":"Фиксируем значение, держите стопы от себя","error_message":"Вращайте стопы в большей амплитуде"},{"id":59,"command_side":"left","position_number":2,"position_message":"Теперь потяните носки от себя, положение должно быть комфортным","fixation_message":"Фиксируем значение, держите стопы от себя","error_message":"Вращайте стопы в большей амплитуде"}]}]},{"id":40,"sequence_number":3,"is_monitored":true,"name":"Круговые движения ногой - в и.п. лежа на спине","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQA5HT9XV5G51WZS4TZJVDQ6.png","by_body_side":"by_side","execution_order_type":"symmetric","approaches_count":2,"execution_count":6,"execution_time":null,"instruction":{"exercise_name":"Круговые движения ногой - в и.п. лежа на спине","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQA5HTA1S14HGRG0J5HK6SYP.mov","inventory":null,"warning":"Не допускайте сильного напряжения или переразгиба в пояснице","general_description":"В и.п. лежа на спине. Ноги максимально выпрямлены в коленных суставах, стопы \"на себя\", выполнить движения по часовой стрелке, далее против часовой стрелки. Цель - тренировка четырехглавых мышц, абдукторов/аддукторов","steps":[{"exercise_id":40,"sequence_number":1,"step_text":"Лягте на спину, расположитесь боком рабочей ноги к камере"},{"exercise_id":40,"sequence_number":2,"step_text":"Руки расположите вдоль туловища ладонями вниз или в стороны для устойчивости"},{"exercise_id":40,"sequence_number":3,"step_text":"Ноги полностью выпрямите в коленных суставах"},{"exercise_id":40,"sequence_number":4,"step_text":"Стопы потяните на себя (тыльное сгибание в голеностопном суставе)"},{"exercise_id":40,"sequence_number":5,"step_text":"Поясницу прижмите к полу, живот слегка подтяните, чтобы избежать излишнего прогиба в пояснице"},{"exercise_id":40,"sequence_number":6,"step_text":"Начните выполнять круговое движение рабочей выпрямленной ногой. Нога в верхней точке должна подниматься на уровень 30°-45° градусов от пола"},{"exercise_id":40,"sequence_number":7,"step_text":"Направление ноги (по часовой стрелке / против часовой стрелки) меняйте после каждого повторения"}]},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Выполняйте круговые движения правой ногой","left_main_command":null,"calibration_parameters":[{"id":51,"name":"Калибровка угла в колене","sequence_number":1,"calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":73,"component_side":"right","segment_type":null,"parts":[{"id":184,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":185,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":186,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":74,"component_side":"left","segment_type":null,"parts":[{"id":187,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":188,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":189,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":82,"command_side":"right","position_number":1,"position_message":"Лягте на спину правым боком к камере. Ноги должны лежать на полу прямыми","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите рабочее колено выпрямленным"},{"id":83,"command_side":"left","position_number":1,"position_message":"Лягте на спину левым боком к камере. Ноги должны лежать на полу прямыми","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите рабочее колено выпрямленным"}]},{"id":52,"name":"Калибровка угла в голеностопе","sequence_number":2,"calibration_parameter_type":"angle","fixation_type":"min_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":75,"component_side":"right","segment_type":null,"parts":[{"id":190,"sequence_number":1,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":191,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"},{"id":192,"sequence_number":3,"body_point":{"id":33,"mediapipe_index":32,"movenet_index":null},"line_type":null,"part_type":"point"}]},{"id":76,"component_side":"left","segment_type":null,"parts":[{"id":193,"sequence_number":1,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":194,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"},{"id":195,"sequence_number":3,"body_point":{"id":32,"mediapipe_index":31,"movenet_index":null},"line_type":null,"part_type":"point"}]}],"commands":[{"id":84,"command_side":"right","position_number":1,"position_message":"Потяните носок правой ноги на себя до комфортного рабочего положения","fixation_message":"Фиксируем угол в голеностопе, оставайтесь в нужном положении","error_message":"Стопа должна быть повернута на себя"},{"id":85,"command_side":"left","position_number":1,"position_message":"Потяните носок левой ноги на себя до комфортного рабочего положения","fixation_message":"Фиксируем угол в голеностопе, оставайтесь в нужном положении","error_message":"Стопа должна быть повернута на себя"}]},{"id":53,"name":"Калибровка амплитуды рабочего угла","sequence_number":3,"calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"max_at_first","deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":77,"component_side":"right","segment_type":null,"parts":[{"id":196,"sequence_number":1,"body_point":{"id":13,"mediapipe_index":12,"movenet_index":6},"line_type":null,"part_type":"point"},{"id":197,"sequence_number":2,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":198,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":78,"component_side":"left","segment_type":null,"parts":[{"id":199,"sequence_number":1,"body_point":{"id":12,"mediapipe_index":11,"movenet_index":5},"line_type":null,"part_type":"point"},{"id":200,"sequence_number":2,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":201,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":86,"command_side":"right","position_number":1,"position_message":"Оставайтесь лежать на спине правым боком к камере","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Поднимайте ногу на необходимый уровень"},{"id":87,"command_side":"left","position_number":1,"position_message":"Оставайтесь лежать на спине левым боком к камере","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Поднимайте ногу на необходимый уровень"},{"id":88,"command_side":"right","position_number":2,"position_message":"Теперь поднимите правую ногу в вверх до комфортного положения, примерный уровень: 15°-40° градусов от пола","fixation_message":"Фиксируем значение, не опускайте ногу","error_message":"Поднимайте ногу на необходимый уровень"},{"id":89,"command_side":"left","position_number":2,"position_message":"Теперь поднимите левую ногу в вверх до комфортного положения, примерный уровень: 15°-40° градусов от пола","fixation_message":"Фиксируем значение, не опускайте ногу","error_message":"Поднимайте ногу на необходимый уровень"}]}]},{"id":41,"sequence_number":4,"is_monitored":true,"name":"Отведение прямой ноги в сторону - В и.п. сидя с прямыми ногами с опорой руками назад за спиной","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQC6319E6D4MPZ50SGTNW1Q6.png","by_body_side":"by_side","execution_order_type":"symmetric","approaches_count":2,"execution_count":6,"execution_time":null,"instruction":{"exercise_name":"Отведение прямой ноги в сторону - В и.п. сидя с прямыми ногами с опорой руками назад за спиной","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQC6319HS0NS6B4PRV3WH9FT.mov","inventory":null,"warning":"Следить за тем, чтобы бедро не ротировалось (вращалось) наружу, носок стопы отведённой ноги должен “смотреть вверх”","general_description":"Спина относительно поверхности может находиться от 90 до 45 градусов к полу (например, упираясь не прямыми руками, а предплечьями, отклонившись больше назад). Приподнять прямую рабочую ногу от поверхности и отвести её в сторону на сколько возможно, не опуская ногу, и вернуться в исходное положение. Можно выполнять без пауз между повторениями. Цель – тренировка мышц абдукторов бедра.","steps":[{"exercise_id":41,"sequence_number":1,"step_text":"Сядьте на пол лицом к камере. Ноги выпрямите перед собой"},{"exercise_id":41,"sequence_number":2,"step_text":"Корпус отклоните назад. Спина должна находиться под углом от 90 до 45 градусов относительно пола. Для удобства и стабильности можно опираться не на прямые руки, а на предплечья, согнув руки в локтях"},{"exercise_id":41,"sequence_number":3,"step_text":"Приподнимите рабочую ногу на 5-10 см "},{"exercise_id":41,"sequence_number":4,"step_text":"На выдохе отведите рабочую ногу в сторону (наружу) на максимально возможную амплитуду, которую позволяет ваша подвижность и физическое состояние. Движение должно происходить за счёт работы мышц бедра"},{"exercise_id":41,"sequence_number":5,"step_text":"На вдохе так же плавно верните ногу в исходное положение (перед собой), но не кладите её на пол до окончания подхода. Нога остаётся на весу"},{"exercise_id":41,"sequence_number":6,"step_text":"Повторите движение ногой заданное количество раз"}]},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Отводите правую ногу","left_main_command":null,"calibration_parameters":[{"id":54,"name":"Калибровка амплитуды сегмента","sequence_number":1,"calibration_parameter_type":"segment_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":79,"component_side":"right","segment_type":null,"parts":[{"id":202,"sequence_number":1,"body_point":{"id":30,"mediapipe_index":29,"movenet_index":null},"line_type":null,"part_type":"point"},{"id":203,"sequence_number":2,"body_point":{"id":31,"mediapipe_index":30,"movenet_index":null},"line_type":null,"part_type":"point"}]},{"id":80,"component_side":"left","segment_type":null,"parts":[{"id":204,"sequence_number":1,"body_point":{"id":30,"mediapipe_index":29,"movenet_index":null},"line_type":null,"part_type":"point"},{"id":205,"sequence_number":2,"body_point":{"id":31,"mediapipe_index":30,"movenet_index":null},"line_type":null,"part_type":"point"}]}],"commands":[{"id":90,"command_side":"right","position_number":1,"position_message":"Сядьте на пол лицом к камере. Ноги выпрямите перед собой, держите их вместе. Приподнимите правую ногу на 5-10 см","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Делайте движения в нужной амплитуде"},{"id":91,"command_side":"left","position_number":1,"position_message":"Сядьте на пол лицом к камере. Ноги выпрямите перед собой, держите их вместе. Приподнимите левую ногу на 5-10 см","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Делайте движения в нужной амплитуде"},{"id":92,"command_side":"right","position_number":2,"position_message":"Теперь отведите правую ногу в сторону до комфортного рабочего положения","fixation_message":"Фиксируем значение, не отпускайте ногу","error_message":"Делайте движения в нужной амплитуде"},{"id":93,"command_side":"left","position_number":2,"position_message":"Теперь отведите левую ногу в сторону до комфортного рабочего положения","fixation_message":"Фиксируем значение, не отпускайте ногу","error_message":"Делайте движения в нужной амплитуде"}]}]},{"id":42,"sequence_number":5,"is_monitored":true,"name":"Подъём прямой ноги в сторону - В и.п. лёжа на боку","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQC78495HZ7HDF3FGQ104G16.png","by_body_side":"by_side","execution_order_type":"isolated","approaches_count":2,"execution_count":6,"execution_time":null,"instruction":{"exercise_name":"Подъём прямой ноги в сторону - В и.п. лёжа на боку","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQC78499GQQ5WEFZWRN07YFK.mov","inventory":null,"warning":"Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу","general_description":"Лёжа на боку отвести верхнюю ногу в сторону (поднять). Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу. Представьте, что вы лежите на боку и прижимаетесь спиной к стене, а далее скользите пяткой верхней ноги по стене вверх. Цель – тренировка мышц абдукторов/аддукторов бедра.","steps":[{"exercise_id":42,"sequence_number":1,"step_text":"Лягте на бок так, чтобы рабочая нога была сверху"},{"exercise_id":42,"sequence_number":2,"step_text":"Убедитесь, что вы лежите ровно. Голова может лежать на руке или на подушке"},{"exercise_id":42,"sequence_number":3,"step_text":"Нижнюю ногу слегка согните в колене и тазобедренном суставе для устойчивости"},{"exercise_id":42,"sequence_number":4,"step_text":"Верхнюю ногу полностью выпрямите. Она должна находиться строго над нижней ногой, образуя одну линию с туловищем"},{"exercise_id":42,"sequence_number":5,"step_text":"Положите верхнюю руку на талию или на матрас перед собой для равновесия"},{"exercise_id":42,"sequence_number":6,"step_text":"На выдохе: Медленно поднимите (отведите) прямую ногу вверх. Движение должно происходить строго в плоскости тела, как будто вы отводите ногу в сторону. Нога не должна сгибаться в тазобедренном суставе и отклоняться вперёд по направлению к животу или назад по направлению к спине"},{"exercise_id":42,"sequence_number":7,"step_text":"В верхней точке задержитесь на 1-2 секунды, сохраняя ногу прямой и чувствуя напряжение в боковой поверхности бедра и ягодице"},{"exercise_id":42,"sequence_number":8,"step_text":"На вдохе: Плавно, без рывка, опустите ногу в исходное положение. Старайтесь не класть ногу полностью на нижнюю, а остановитесь чуть выше, чтобы сохранить напряжение в мышцах"},{"exercise_id":42,"sequence_number":9,"step_text":"Повторите необходимое количество раз "}]},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Поднимайте и опускайте правую ногу","left_main_command":null,"calibration_parameters":[{"id":55,"name":"Калибровка сегмента ноги","sequence_number":1,"calibration_parameter_type":"one_segment","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":81,"component_side":"right","segment_type":null,"parts":[{"id":206,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":207,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":82,"component_side":"left","segment_type":null,"parts":[{"id":208,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":209,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":94,"command_side":"right","position_number":1,"position_message":"Лягте на левый бок, левую ногу согните для устойчивости. Правая нога должна лежать на другой ноге и быть продолжением корпуса","fixation_message":"Фиксируем длину ноги, оставайтесь в нужном положении","error_message":"Не заваливайте ногу в сторону"},{"id":95,"command_side":"left","position_number":1,"position_message":"Лягте на правый бок, правую ногу согните для устойчивости. Левая нога должна лежать на другой ноге и быть продолжением корпуса","fixation_message":"Фиксируем длину ноги, оставайтесь в нужном положении","error_message":"Не заваливайте ногу в сторону"}]},{"id":56,"name":"Калибровка рабочего угла (угол между прямой таза и ногой)","sequence_number":2,"calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":83,"component_side":"right","segment_type":null,"parts":[{"id":210,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":211,"sequence_number":2,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":212,"sequence_number":3,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"}]},{"id":84,"component_side":"left","segment_type":null,"parts":[{"id":213,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":214,"sequence_number":2,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":215,"sequence_number":3,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"}]}],"commands":[{"id":96,"command_side":"right","position_number":1,"position_message":"Оставайтесь лежать на боку, правая нога - продолжение туловища","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Поднимайте ногу на необходимый уровень"},{"id":97,"command_side":"left","position_number":1,"position_message":"Оставайтесь лежать на боку, левая нога - продолжение туловища","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Поднимайте ногу на необходимый уровень"},{"id":98,"command_side":"right","position_number":2,"position_message":"Теперь поднимите правую ногу вверх до комфортной вам рабочей высоты","fixation_message":"Фиксируем значение, не опускайте ногу","error_message":"Поднимайте ногу на необходимый уровень"},{"id":99,"command_side":"left","position_number":2,"position_message":"Теперь поднимите левую ногу вверх до комфортной вам рабочей высоты","fixation_message":"Фиксируем значение, не опускайте ногу","error_message":"Поднимайте ногу на необходимый уровень"}]}]}]}}
INFO [console] ROI_DEBUG: corners computed rawRect=(-167.2,-118.3) -> (662.6,711.5) clamped=(0.0,0.0) -> (480.0,711.5) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-34.5,59.4) -> (521.7,615.5) clamped=(0.0,59.4) -> (480.0,615.5) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-23.1,90.4) -> (493.6,607.1) clamped=(0.0,90.4) -> (480.0,607.1) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-214.8,-176.5) -> (671.0,709.3) clamped=(0.0,0.0) -> (480.0,709.3) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-22.5,91.6) -> (492.6,606.7) clamped=(0.0,91.6) -> (480.0,606.7) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-22.3,92.7) -> (491.4,606.4) clamped=(0.0,92.7) -> (480.0,606.4) frame=480x720 screen=394x853
INFO [console] ROI_DEBUG: corners computed rawRect=(-227.7,-199.9) -> (692.1,719.9) clamped=(0.0,0.0) -> (480.0,719.9) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-408.5,-302.9) -> (900.3,1005.9) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
$
250 строкUTF-8LIVE