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

rehabapp_2026-08-17_12-42-12

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
INFO [console] │ #0 FlutterSoundPlayer._setVolume (package:flutter_sound/public/flutter_sound_player.dart:2074:13)
INFO [console] │ #1 FlutterSoundPlayer.setVolume.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:2069:13)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:---> setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.log (package:flutter_sound/public/flutter_sound_player.dart:418:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:118:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 IOS:<-- initializeFlautoPlayer
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.log (package:flutter_sound/public/flutter_sound_player.dart:418:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:118:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 IOS:--> setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.log (package:flutter_sound/public/flutter_sound_player.dart:418:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:118:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 IOS:--> setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.log (package:flutter_sound/public/flutter_sound_player.dart:418:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:118:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 IOS:<-- setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._setVolume (package:flutter_sound/public/flutter_sound_player.dart:2089:13)
INFO [console] │ #1 <asynchronous suspension>
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:<--- setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.log (package:flutter_sound/public/flutter_sound_player.dart:418:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:118:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 IOS:<-- setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/detailed-exercises?unit_id=943&rehabilitation_day_id=2620&workout_id
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 629|Nmf70tJhsGhYYf2QekToW5fS9Cold4yCMG9Bti9e3aefe1bf
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/detailed-exercises?unit_id=943&rehabilitation_day_id=2620&workout_id
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Mon, 17 Aug 2026 09:43:13 GMT
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] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-08-17T09:43:13.400135Z","request_id":"4126fc28-691c-4e48-84ed-10233913bdca","version":"v1"},"data":{"unit_id":943,"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"}]}],"commands":[{"id":120,"command_side":"right","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"}]}],"commands":[{"id":156,"command_side":"right","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"}]}],"commands":[{"id":54,"command_side":"right","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"}]}],"commands":[{"id":56,"command_side":"right","position_number":1,"position_message":"Оставайтесь лежать правым боком камере, потяните носки стоп на себя","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Вращайте стопы в большей амплитуде"},{"id":58,"command_side":"right","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"}]}],"commands":[{"id":94,"command_side":"right","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"}]}],"commands":[{"id":96,"command_side":"right","position_number":1,"position_message":"Оставайтесь лежать на боку, правая нога - продолжение туловища","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Поднимайте ногу на необходимый уровень"},{"id":98,"command_side":"right","position_number":2,"position_message":"Теперь поднимите правую ногу вверх до комфортной вам рабочей высоты","fixation_message":"Фиксируем значение, не опускайте ногу","error_message":"Поднимайте ногу на необходимый уровень"}]}]}]}}
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-08-17T09:43:13.400135Z, request_id: 4126fc28-691c-4e48-84ed-10233913bdca, version: v1}, data: {unit_id: 943, 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: Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка,
INFO [console] ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; стопа и колено поднятой ноги не должны "заваливаться" наружу (отсутствие ротации); наклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; дыхание свободное, без задержек; ощущение растяжения должно быть комфортным, без острой боли., 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: Потянитесь пальцами рук к стопе поднятой ноги. Ваша задача - не обязательно обхватить стопу, а максимально растянуться с прямо
INFO [console] й спиной}, {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,
INFO [console] body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}], commands: [{id: 120, command_side: right, 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}, {i
INFO [console] d: 390, sequence_number: 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}], commands: [{id: 156, command_side: right, 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: Во время выполнения колени должны оставаться выпрямленными, стопы не должны разворачиваться внут
INFO [console] рь или наружу (большой палец направлен строго вверх), 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: На себя: Плавно потяните носки стоп максимально на себя (тыльно
INFO [console] е сгибание), ощущая растяжение в задней поверхности голени и подколенной области}, {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_
INFO [console] 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}]}], commands: [{id: 54, command_side: right, 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
INFO [console] : 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}]}], commands: [{id: 56, command_side: right, position_number: 1, position_message: Оставайтесь лежать правым боком камере, потяните носки стоп на себя, fixation_message: Фиксируем значение, оставайтесь в нужном положении, error_message: Вращайте стопы в большей амплитуде}, {id: 58, command_side: right, position_number: 2, position_message: Теперь потяните носки от себя, положение должно быть комфортным, fixation_message: Фиксируем значение, держите стопы от себя, error_message: Вращайте стопы в большей амплитуде}]}]}, {id: 40, sequence_number: 3, is_monitored: true, name: Круговые движения ногой - в и.п. лежа на спине, image: https:
INFO [console] //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: Ноги
INFO [console] полностью выпрямите в коленных суставах}, {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_u
INFO [console] ncritical: 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}
INFO [console] ]}], 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:
INFO [console] 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: Стопа д
INFO [console] олжна быть повернута на себя}, {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_inde
INFO [console] x: 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: Поднимайте ногу на необходимый у
INFO [console] ровень}, {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: Отведение прямой
INFO [console] ноги в сторону - В и.п. сидя с прямыми ногами с опорой руками назад за спиной, 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 градусов относительно пола. Для удобст
INFO [console] ва и стабильности можно опираться не на прямые руки, а на предплечья, согнув руки в локтях}, {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, fixati
INFO [console] on_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: Сядьте на пол лицом к камере. Ноги выпрямите перед собой, держите их вместе. Прип
INFO [console] однимите правую ногу на 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_mon
INFO [console] itored: 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: Лягте на бок так, чтобы рабочая нога бы
INFO [console] ла сверху}, {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 секунды, сохраняя ногу прямой и чув
INFO [console] ствуя напряжение в боковой поверхности бедра и ягодице}, {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_typ
INFO [console] e: 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}]}], commands: [{id: 94, command_side: right, 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
INFO [console] _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}]}], commands: [{id: 96, command_side: right, position_number: 1, position_message: Оставайтесь лежать на боку, правая нога - продолжение туловища, fixation_message: Фиксируем значение, оставайтесь в нужном положении, error_message: Поднимайте ногу на необходимый уровень}, {id: 98, command_side: right, position_number: 2, position_message: Теперь поднимите правую ногу вверх до комфортной вам рабочей высоты, fixation_message: Фиксируем значение, не опускайте ногу, error_message: Поднимайте ногу на необходимый уровень}]}]}]}}
INFO [console] [DIO]
INFO [console] POSE_ROT: sensorOrient=90 deviceOrient=DeviceOrientation.portraitUp rotDeg=0 img=480x640 -> 480x640
INFO [console] POSE_DIAG: sensorOrient=90 imgSize=480 x 640 imgFormat=1111970369 planes=1 pixelStride=null rowStride=1920 screenSize=390x844
INFO [console] LEG_RAW_V2: hipL=(299,382,-4) v=0.999 p=1.000 hipR=(189,393,4) v=0.999 p=1.000 kneeL=(321,358,-234) v=0.666 p=0.992 kneeR=(144,390,-211) v=0.654 p=0.991 ankL=(315,522,-232) v=0.550 p=0.946 ankR=(193,548,-131) v=0.479 p=0.947 heelL=(310,546,-234) v=0.419 p=0.921 heelR=(211,564,-123) v=0.404 p=0.936 footL=(313,594,-351) v=0.531 p=0.779 footR=(185,634,-211) v=0.459 p=0.808 fw=480 fh=640
INFO [console] LEG_COR: hipL=(299,382,-4) v=0.999 p=1.000 hipR=(189,393,4) v=0.999 p=1.000 kneeL=(321,358,-234) v=0.666 p=0.992 kneeR=(144,390,-211) v=0.654 p=0.991 ankL=(315,522,-232) v=0.550 p=0.946 ankR=(193,548,-131) v=0.479 p=0.947 heelL=(310,546,-234) v=0.419 p=0.921 heelR=(211,564,-123) v=0.404 p=0.936 footL=(313,594,-351) v=0.531 p=0.779 footR=(185,634,-211) v=0.459 p=0.808 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(299,382,-3.888) v=0.999 p=1.000 knee=(321,358,-234.370) v=0.666 p=0.992 ankle=(315,522,-231.909) v=0.550 p=0.946 heel=(310,546,-234.258) v=0.419 p=0.921 footIdx=(313,594,-351.159) v=0.531 p=0.779
INFO [console] LEG_LOG_R: hip=(189,393,3.729) v=0.999 p=1.000 knee=(144,390,-211.029) v=0.654 p=0.991 ankle=(193,548,-130.918) v=0.479 p=0.947 heel=(211,564,-123.422) v=0.404 p=0.936 footIdx=(185,634,-211.309) v=0.459 p=0.808
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-368.0,-272.4) -> (870.1,965.7) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] LEG_V2: dir=0.0273 cross=0.1544 diff=0.1271 ratio=5.6550 mapping=NORM rel=0.563
INFO [console] LEG_PAIRS_V2: knee dir=0.0057 cross=0.0548 | ankle dir=0.0065 cross=0.0353 | heel dir=0.0065 cross=0.0290 | foot dir=0.0086 cross=0.0354 |
INFO [console] LEG_RAW: hipL=(302,371,-25) v=0.999 p=1.000 hipR=(196,381,25) v=0.999 p=1.000 kneeL=(320,383,-253) v=0.679 p=0.990 kneeR=(144,401,-221) v=0.621 p=0.985 ankL=(317,547,-226) v=0.552 p=0.928 ankR=(170,560,-184) v=0.546 p=0.924 heelL=(315,569,-225) v=0.509 p=0.891 heelR=(189,580,-182) v=0.562 p=0.905 footL=(304,624,-328) v=0.521 p=0.729 footR=(147,643,-265) v=0.511 p=0.719 fw=480 fh=640
INFO [console] LEG_COR: hipL=(302,371,-25) v=0.999 p=1.000 hipR=(196,381,25) v=0.999 p=1.000 kneeL=(320,383,-253) v=0.679 p=0.990 kneeR=(144,401,-221) v=0.621 p=0.985 ankL=(317,547,-226) v=0.552 p=0.928 ankR=(170,560,-184) v=0.546 p=0.924 heelL=(315,569,-225) v=0.509 p=0.891 heelR=(189,580,-182) v=0.562 p=0.905 footL=(304,624,-328) v=0.521 p=0.729 footR=(147,643,-265) v=0.511 p=0.719 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(301,373,-22.146) v=0.999 p=1.000 knee=(321,381,-250.701) v=0.667 p=0.990 ankle=(316,544,-228.239) v=0.551 p=0.928 heel=(313,567,-227.178) v=0.428 p=0.891 footIdx=(306,622,-330.308) v=0.530 p=0.729
INFO [console] LEG_LOG_R: hip=(194,383,22.195) v=0.999 p=1.000 knee=(144,399,-218.498) v=0.650 p=0.985 ankle=(173,558,-181.592) v=0.486 p=0.924 heel=(191,577,-178.929) v=0.420 p=0.905 footIdx=(150,641,-262.037) v=0.464 p=0.719
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-360.6,-217.4) -> (848.6,991.8) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] LEG_V2: dir=0.0185 cross=0.1613 diff=0.1428 ratio=8.7027 mapping=NORM rel=0.618
INFO [console] LEG_PAIRS_V2: knee dir=0.0108 cross=0.0492 | ankle dir=0.0039 cross=0.0397 | heel dir=0.0032 cross=0.0338 | foot dir=0.0007 cross=0.0386 |
INFO [console] LEG_RAW: hipL=(323,341,-38) v=0.999 p=0.999 hipR=(215,350,38) v=0.998 p=0.999 kneeL=(335,347,-261) v=0.692 p=0.988 kneeR=(164,367,-165) v=0.594 p=0.990 ankL=(323,532,-237) v=0.632 p=0.914 ankR=(178,550,-129) v=0.627 p=0.932 heelL=(321,555,-235) v=0.599 p=0.877 heelR=(194,573,-126) v=0.644 p=0.911 footL=(305,624,-350) v=0.578 p=0.648 footR=(151,643,-217) v=0.576 p=0.691 fw=480 fh=640
INFO [console] LEG_COR: hipL=(323,341,-38) v=0.999 p=0.999 hipR=(215,350,38) v=0.998 p=0.999 kneeL=(335,347,-261) v=0.692 p=0.988 kneeR=(164,367,-165) v=0.594 p=0.990 ankL=(323,532,-237) v=0.632 p=0.914 ankR=(178,550,-129) v=0.627 p=0.932 heelL=(321,555,-235) v=0.599 p=0.877 heelR=(194,573,-126) v=0.644 p=0.911 footL=(305,624,-350) v=0.578 p=0.648 footR=(151,643,-217) v=0.576 p=0.691 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(314,351,-31.250) v=0.999 p=0.999 knee=(328,359,-255.569) v=0.670 p=0.988 ankle=(318,540,-231.460) v=0.559 p=0.914 heel=(316,563,-229.820) v=0.445 p=0.877 footIdx=(306,622,-339.509) v=0.535 p=0.648
INFO [console] LEG_LOG_R: hip=(206,360,31.375) v=0.999 p=0.999 knee=(155,377,-176.443) v=0.645 p=0.990 ankle=(173,556,-144.352) v=0.500 p=0.932 heel=(192,577,-141.178) v=0.443 p=0.911 footIdx=(150,641,-232.656) v=0.475 p=0.691
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-355.5,-217.3) -> (845.5,983.7) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0223 bc=0.0048 ac=0.0195 spike=false ankleL ab=0.0209 bc=0.0009 ac=0.0213 spike=false heelL ab=0.0204 bc=0.0019 ac=0.0213 spike=false footL ab=0.0316 bc=0.0021 ac=0.0338 spike=false kneeR ab=0.0055 bc=0.0109 ac=0.0100 spike=false ankleR ab=0.0524 bc=0.0028 ac=0.0552 spike=false heelR ab=0.0511 bc=0.0026 ac=0.0536 spike=false footR ab=0.0988 bc=0.0046 ac=0.1034 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0676 cross=0.1966 diff=0.1290 ratio=2.9076 mapping=NORM rel=0.769
INFO [console] LEG_PAIRS_V2: knee dir=0.0305 cross=0.0682 | ankle dir=0.0121 cross=0.0487 | heel dir=0.0077 cross=0.0352 | foot dir=0.0174 cross=0.0445 |
INFO [console] LEG_RAW: hipL=(317,311,-11) v=0.999 p=0.999 hipR=(206,326,11) v=0.999 p=0.999 kneeL=(374,233,-376) v=0.878 p=0.991 kneeR=(154,293,-356) v=0.887 p=0.994 ankL=(366,492,-440) v=0.812 p=0.942 ankR=(177,524,-418) v=0.794 p=0.956 heelL=(354,526,-450) v=0.662 p=0.901 heelR=(190,552,-423) v=0.679 p=0.927 footL=(379,581,-618) v=0.749 p=0.703 footR=(190,608,-574) v=0.744 p=0.738 fw=480 fh=640
INFO [console] LEG_COR: hipL=(317,311,-11) v=0.999 p=0.999 hipR=(206,326,11) v=0.999 p=0.999 kneeL=(374,233,-376) v=0.878 p=0.991 kneeR=(154,293,-356) v=0.887 p=0.994 ankL=(366,492,-440) v=0.812 p=0.942 ankR=(177,524,-418) v=0.794 p=0.956 heelL=(354,526,-450) v=0.662 p=0.901 heelR=(190,552,-423) v=0.679 p=0.927 footL=(379,581,-618) v=0.749 p=0.703 footR=(190,608,-574) v=0.744 p=0.738 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(315,323,-25.641) v=0.999 p=0.999 knee=(359,252,-356.658) v=0.690 p=0.991 ankle=(350,509,-418.872) v=0.584 p=0.942 heel=(340,542,-428.171) v=0.467 p=0.901 footIdx=(360,598,-596.079) v=0.556 p=0.703
INFO [console] LEG_LOG_R: hip=(206,336,25.336) v=0.999 p=0.999 knee=(155,309,-330.133) v=0.669 p=0.994 ankle=(173,538,-394.217) v=0.529 p=0.956 heel=(191,565,-399.448) v=0.466 p=0.927 footIdx=(172,622,-551.011) v=0.502 p=0.738
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-348.8,-222.6) -> (846.2,972.4) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] BODY_POINT_ENGINE: first geometry event — points=33 isCalibrated=null
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0048 bc=0.0992 ac=0.1036 spike=false ankleL ab=0.0009 bc=0.0429 ac=0.0437 spike=false heelL ab=0.0019 bc=0.0301 ac=0.0319 spike=false footL ab=0.0021 bc=0.0800 ac=0.0791 spike=false kneeR ab=0.0109 bc=0.0492 ac=0.0557 spike=false ankleR ab=0.0028 bc=0.0030 ac=0.0048 spike=false heelR ab=0.0026 bc=0.0015 ac=0.0039 spike=false footR ab=0.0046 bc=0.0104 ac=0.0059 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0427 cross=0.1787 diff=0.1360 ratio=4.1846 mapping=NORM rel=0.638
INFO [console] LEG_PAIRS_V2: knee dir=0.0087 cross=0.0722 | ankle dir=0.0123 cross=0.0423 | heel dir=0.0097 cross=0.0291 | foot dir=0.0120 cross=0.0351 |
INFO [console] LEG_RAW: hipL=(350,352,-14) v=0.999 p=0.998 hipR=(250,364,14) v=0.999 p=0.999 kneeL=(357,260,-293) v=0.840 p=0.988 kneeR=(171,287,-249) v=0.790 p=0.986 ankL=(312,477,-336) v=0.709 p=0.908 ankR=(203,509,-327) v=0.598 p=0.894 heelL=(301,509,-341) v=0.569 p=0.844 heelR=(213,537,-333) v=0.489 p=0.845 footL=(301,555,-466) v=0.575 p=0.626 footR=(202,596,-454) v=0.534 p=0.617 fw=480 fh=640
INFO [console] LEG_COR: hipL=(350,352,-14) v=0.999 p=0.998 hipR=(250,364,14) v=0.999 p=0.999 kneeL=(357,260,-293) v=0.840 p=0.988 kneeR=(171,287,-249) v=0.790 p=0.986 ankL=(312,477,-336) v=0.709 p=0.908 ankR=(203,509,-327) v=0.598 p=0.894 heelL=(301,509,-341) v=0.569 p=0.844 heelR=(213,537,-333) v=0.489 p=0.845 footL=(301,555,-466) v=0.575 p=0.626 footR=(202,596,-454) v=0.534 p=0.617 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(339,334,-23.429) v=0.999 p=0.998 knee=(358,258,-318.074) v=0.705 p=0.988 ankle=(339,486,-352.674) v=0.597 p=0.908 heel=(323,520,-358.107) v=0.477 p=0.844 footIdx=(340,567,-488.915) v=0.558 p=0.626
INFO [console] LEG_LOG_R: hip=(237,346,22.751) v=0.999 p=0.999 knee=(163,292,-284.859) v=0.681 p=0.986 ankle=(189,519,-335.993) v=0.536 p=0.894 heel=(201,548,-341.517) v=0.468 p=0.845 footIdx=(192,605,-464.121) v=0.505 p=0.617
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-340.2,-227.2) -> (839.0,952.0) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0992 bc=0.0480 ac=0.1470 spike=false ankleL ab=0.0429 bc=0.0226 ac=0.0592 spike=false heelL ab=0.0301 bc=0.0140 ac=0.0358 spike=false footL ab=0.0800 bc=0.0204 ac=0.0912 spike=false kneeR ab=0.0492 bc=0.0474 ac=0.0962 spike=false ankleR ab=0.0030 bc=0.0131 ac=0.0150 spike=false heelR ab=0.0015 bc=0.0060 ac=0.0065 spike=false footR ab=0.0104 bc=0.0414 ac=0.0518 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0433 cross=0.1762 diff=0.1328 ratio=4.0653 mapping=NORM rel=0.871
INFO [console] LEG_PAIRS_V2: knee dir=0.0119 cross=0.0665 | ankle dir=0.0106 cross=0.0439 | heel dir=0.0098 cross=0.0351 | foot dir=0.0110 cross=0.0306 |
INFO [console] LEG_RAW: hipL=(349,340,-24) v=0.999 p=0.999 hipR=(246,346,23) v=0.999 p=0.999 kneeL=(393,226,-452) v=0.986 p=0.989 kneeR=(163,262,-407) v=0.988 p=0.994 ankL=(371,489,-569) v=0.951 p=0.963 ankR=(195,512,-530) v=0.949 p=0.969 heelL=(354,529,-582) v=0.908 p=0.929 heelR=(209,547,-539) v=0.941 p=0.936 footL=(382,587,-757) v=0.889 p=0.556 footR=(183,620,-699) v=0.886 p=0.695 fw=480 fh=640
INFO [console] LEG_COR: hipL=(349,340,-24) v=0.999 p=0.999 hipR=(246,346,23) v=0.999 p=0.999 kneeL=(393,226,-452) v=0.986 p=0.989 kneeR=(163,262,-407) v=0.988 p=0.994 ankL=(371,489,-569) v=0.951 p=0.963 ankR=(195,512,-530) v=0.949 p=0.969 heelL=(354,529,-582) v=0.908 p=0.929 heelR=(209,547,-539) v=0.941 p=0.936 footL=(382,587,-757) v=0.889 p=0.556 footR=(183,620,-699) v=0.886 p=0.695 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(346,337,-23.452) v=0.999 p=0.999 knee=(387,229,-443.620) v=0.733 p=0.989 ankle=(364,488,-560.144) v=0.632 p=0.963 heel=(347,526,-572.972) v=0.520 p=0.929 footIdx=(376,579,-748.210) v=0.591 p=0.556
INFO [console] LEG_LOG_R: hip=(243,346,22.805) v=0.999 p=0.999 knee=(163,265,-398.750) v=0.712 p=0.994 ankle=(192,514,-522.398) v=0.578 p=0.969 heel=(205,547,-531.493) v=0.516 p=0.936 footIdx=(187,613,-691.431) v=0.543 p=0.695
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-329.6,-227.7) -> (849.9,951.8) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0480 bc=0.1090 ac=0.1542 spike=false ankleL ab=0.0226 bc=0.0667 ac=0.0834 spike=false heelL ab=0.0140 bc=0.0431 ac=0.0495 spike=false footL ab=0.0204 bc=0.0882 ac=0.1004 spike=false kneeR ab=0.0474 bc=0.0628 ac=0.1102 spike=false ankleR ab=0.0131 bc=0.0199 ac=0.0330 spike=false heelR ab=0.0060 bc=0.0093 ac=0.0150 spike=false footR ab=0.0414 bc=0.0246 ac=0.0660 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0453 cross=0.2091 diff=0.1639 ratio=4.6220 mapping=NORM rel=0.553
INFO [console] LEG_PAIRS_V2: knee dir=0.0202 cross=0.0927 | ankle dir=0.0123 cross=0.0553 | heel dir=0.0084 cross=0.0378 | foot dir=0.0042 cross=0.0233 |
INFO [console] LEG_RAW: hipL=(358,326,-25) v=0.998 p=0.996 hipR=(244,334,24) v=0.998 p=0.997 kneeL=(365,276,-538) v=0.880 p=0.954 kneeR=(157,302,-483) v=0.810 p=0.953 ankL=(360,529,-684) v=0.718 p=0.639 ankR=(182,550,-644) v=0.605 p=0.667 heelL=(354,565,-699) v=0.597 p=0.459 heelR=(197,579,-658) v=0.533 p=0.548 footL=(347,619,-873) v=0.636 p=0.235 footR=(176,641,-830) v=0.575 p=0.267 fw=480 fh=640
INFO [console] LEG_COR: hipL=(358,326,-25) v=0.998 p=0.996 hipR=(244,334,24) v=0.998 p=0.997 kneeL=(365,276,-538) v=0.880 p=0.954 kneeR=(157,302,-483) v=0.810 p=0.953 ankL=(360,529,-684) v=0.718 p=0.639 ankR=(182,550,-644) v=0.605 p=0.667 heelL=(354,565,-699) v=0.597 p=0.459 heelR=(197,579,-658) v=0.533 p=0.548 footL=(347,619,-873) v=0.636 p=0.235 footR=(176,641,-830) v=0.575 p=0.267 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(356,328,-23.900) v=0.999 p=0.996 knee=(371,269,-534.486) v=0.748 p=0.954 ankle=(361,502,-681.436) v=0.641 p=0.639 heel=(352,549,-695.782) v=0.528 p=0.459 footIdx=(354,603,-870.803) v=0.596 p=0.235
INFO [console] LEG_LOG_R: hip=(244,336,23.258) v=0.999 p=0.997 knee=(161,297,-479.932) v=0.722 p=0.953 ankle=(191,527,-641.449) v=0.580 p=0.667 heel=(203,565,-655.194) v=0.517 p=0.548 footIdx=(182,627,-827.068) v=0.546 p=0.267
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-314.1,-226.2) -> (855.0,942.9) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.1090 bc=0.0153 ac=0.1005 spike=false ankleL ab=0.0667 bc=0.0218 ac=0.0883 spike=false heelL ab=0.0431 bc=0.0365 ac=0.0789 spike=false footL ab=0.0882 bc=0.0126 ac=0.0756 spike=false kneeR ab=0.0628 bc=0.0085 ac=0.0590 spike=false ankleR ab=0.0199 bc=0.0097 ac=0.0285 spike=false heelR ab=0.0093 bc=0.0038 ac=0.0118 spike=false footR ab=0.0246 bc=0.0068 ac=0.0312 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0161 cross=0.2060 diff=0.1899 ratio=12.7753 mapping=NORM rel=0.588
INFO [console] LEG_PAIRS_V2: knee dir=0.0064 cross=0.0892 | ankle dir=0.0069 cross=0.0688 | heel dir=0.0029 cross=0.0480 | foot dir=0.0000 cross=0.0000 |
INFO [console] LEG_RAW: hipL=(347,331,-27) v=0.998 p=0.999 hipR=(239,329,27) v=0.998 p=0.999 kneeL=(374,300,-506) v=0.922 p=0.980 kneeR=(161,303,-439) v=0.910 p=0.985 ankL=(389,538,-622) v=0.808 p=0.767 ankR=(183,542,-575) v=0.792 p=0.848 heelL=(362,577,-633) v=0.675 p=0.618 heelR=(200,575,-587) v=0.694 p=0.749 footL=(376,631,-798) v=0.732 p=0.346 footR=(171,633,-740) v=0.725 p=0.435 fw=480 fh=640
INFO [console] LEG_COR: hipL=(347,331,-27) v=0.998 p=0.999 hipR=(239,329,27) v=0.998 p=0.999 kneeL=(374,300,-506) v=0.922 p=0.980 kneeR=(161,303,-439) v=0.910 p=0.985 ankL=(389,538,-622) v=0.808 p=0.767 ankR=(183,542,-575) v=0.792 p=0.848 heelL=(362,577,-633) v=0.675 p=0.618 heelR=(200,575,-587) v=0.694 p=0.749 footL=(376,631,-798) v=0.732 p=0.346 footR=(171,633,-740) v=0.725 p=0.435 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(349,330,-25.464) v=0.999 p=0.999 knee=(374,292,-507.278) v=0.766 p=0.980 ankle=(385,523,-623.493) v=0.657 p=0.767 heel=(360,569,-634.689) v=0.543 p=0.618 footIdx=(373,624,-800.105) v=0.609 p=0.346
INFO [console] LEG_LOG_R: hip=(240,331,24.897) v=0.999 p=0.999 knee=(161,302,-441.699) v=0.740 p=0.985 ankle=(190,531,-577.225) v=0.601 p=0.848 heel=(203,569,-588.949) v=0.535 p=0.749 footIdx=(180,627,-742.017) v=0.564 p=0.435
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-299.8,-230.9) -> (861.8,930.7) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0153 bc=0.0199 ac=0.0347 spike=false ankleL ab=0.0218 bc=0.0685 ac=0.0901 spike=false heelL ab=0.0365 bc=0.0347 ac=0.0701 spike=false footL ab=0.0126 bc=0.0375 ac=0.0265 spike=false kneeR ab=0.0085 bc=0.0077 ac=0.0161 spike=false ankleR ab=0.0097 bc=0.0047 ac=0.0144 spike=false heelR ab=0.0038 bc=0.0025 ac=0.0063 spike=false footR ab=0.0068 bc=0.0015 ac=0.0082 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0118 cross=0.2147 diff=0.2030 ratio=18.2711 mapping=NORM rel=0.667
INFO [console] LEG_PAIRS_V2: knee dir=0.0033 cross=0.0862 | ankle dir=0.0047 cross=0.0643 | heel dir=0.0024 cross=0.0425 | foot dir=0.0013 cross=0.0217 |
INFO [console] LEG_RAW: hipL=(338,329,-26) v=0.996 p=0.998 hipR=(237,326,25) v=0.997 p=0.999 kneeL=(379,302,-485) v=0.975 p=0.961 kneeR=(162,292,-432) v=0.979 p=0.985 ankL=(365,550,-593) v=0.890 p=0.760 ankR=(184,544,-577) v=0.896 p=0.843 heelL=(350,582,-604) v=0.800 p=0.605 heelR=(194,577,-588) v=0.848 p=0.685 footL=(376,644,-754) v=0.786 p=0.201 footR=(168,645,-734) v=0.779 p=0.305 fw=480 fh=640
INFO [console] LEG_COR: hipL=(338,329,-26) v=0.996 p=0.998 hipR=(237,326,25) v=0.997 p=0.999 kneeL=(379,302,-485) v=0.975 p=0.961 kneeR=(162,292,-432) v=0.979 p=0.985 ankL=(365,550,-593) v=0.890 p=0.760 ankR=(184,544,-577) v=0.896 p=0.843 heelL=(350,582,-604) v=0.800 p=0.605 heelR=(194,577,-588) v=0.848 p=0.685 footL=(376,644,-754) v=0.786 p=0.201 footR=(168,645,-734) v=0.779 p=0.305 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(343,329,-25.568) v=0.999 p=0.998 knee=(378,299,-486.649) v=0.786 p=0.961 ankle=(371,543,-594.894) v=0.681 p=0.760 heel=(353,579,-605.102) v=0.568 p=0.605 footIdx=(376,640,-756.317) v=0.627 p=0.201
INFO [console] LEG_LOG_R: hip=(238,327,25.058) v=0.999 p=0.999 knee=(161,294,-433.041) v=0.764 p=0.985 ankle=(189,532,-576.568) v=0.631 p=0.843 heel=(200,573,-588.160) v=0.566 p=0.685 footIdx=(178,638,-734.611) v=0.586 p=0.305
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-294.2,-231.8) -> (863.8,926.3) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0199 bc=0.0147 ac=0.0337 spike=false ankleL ab=0.0685 bc=0.0200 ac=0.0618 spike=false heelL ab=0.0347 bc=0.0152 ac=0.0426 spike=false footL ab=0.0375 bc=0.0282 ac=0.0632 spike=false kneeR ab=0.0077 bc=0.0047 ac=0.0077 spike=false ankleR ab=0.0047 bc=0.0019 ac=0.0066 spike=false heelR ab=0.0025 bc=0.0016 ac=0.0034 spike=false footR ab=0.0015 bc=0.0030 ac=0.0033 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0185 cross=0.2099 diff=0.1914 ratio=11.3365 mapping=NORM rel=0.596
INFO [console] LEG_PAIRS_V2: knee dir=0.0077 cross=0.0904 | ankle dir=0.0056 cross=0.0671 | heel dir=0.0052 cross=0.0523 | foot dir=0.0000 cross=0.0000 |
INFO [console] LEG_RAW: hipL=(337,335,-23) v=0.998 p=1.000 hipR=(241,337,23) v=0.999 p=1.000 kneeL=(349,310,-564) v=0.887 p=0.994 kneeR=(160,295,-517) v=0.909 p=0.996 ankL=(341,552,-682) v=0.802 p=0.931 ankR=(180,548,-671) v=0.785 p=0.940 heelL=(333,584,-693) v=0.687 p=0.866 heelR=(182,583,-686) v=0.694 p=0.893 footL=(336,630,-882) v=0.775 p=0.726 footR=(158,626,-871) v=0.776 p=0.728 fw=480 fh=640
INFO [console] LEG_COR: hipL=(337,335,-23) v=0.998 p=1.000 hipR=(241,337,23) v=0.999 p=1.000 kneeL=(349,310,-564) v=0.887 p=0.994 kneeR=(160,295,-517) v=0.909 p=0.996 ankL=(341,552,-682) v=0.802 p=0.931 ankR=(180,548,-671) v=0.785 p=0.940 heelL=(333,584,-693) v=0.687 p=0.866 heelR=(182,583,-686) v=0.694 p=0.893 footL=(336,630,-882) v=0.775 p=0.726 footR=(158,626,-871) v=0.776 p=0.728 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(340,332,-25.371) v=0.999 p=1.000 knee=(363,303,-560.275) v=0.796 p=0.994 ankle=(356,549,-678.657) v=0.693 p=0.931 heel=(345,583,-689.888) v=0.580 p=0.866 footIdx=(354,634,-877.775) v=0.642 p=0.726
INFO [console] LEG_LOG_R: hip=(240,333,25.012) v=0.999 p=1.000 knee=(161,295,-512.561) v=0.779 p=0.996 ankle=(187,536,-667.710) v=0.646 p=0.940 heel=(188,578,-682.630) v=0.579 p=0.893 footIdx=(166,631,-867.813) v=0.605 p=0.728
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-289.8,-230.6) -> (860.6,919.8) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0147 bc=0.0134 ac=0.0177 spike=false ankleL ab=0.0200 bc=0.0214 ac=0.0411 spike=false heelL ab=0.0152 bc=0.0142 ac=0.0282 spike=false footL ab=0.0282 bc=0.0192 ac=0.0304 spike=false kneeR ab=0.0047 bc=0.0016 ac=0.0062 spike=false ankleR ab=0.0019 bc=0.0004 ac=0.0021 spike=false heelR ab=0.0016 bc=0.0130 ac=0.0136 spike=false footR ab=0.0030 bc=0.0102 ac=0.0112 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0375 cross=0.2006 diff=0.1632 ratio=5.3561 mapping=NORM rel=0.535
INFO [console] LEG_PAIRS_V2: knee dir=0.0147 cross=0.0648 | ankle dir=0.0070 cross=0.0434 | heel dir=0.0081 cross=0.0394 | foot dir=0.0076 cross=0.0531 |
INFO [console] LEG_RAW: hipL=(331,350,-27) v=0.999 p=1.000 hipR=(240,352,27) v=0.999 p=1.000 kneeL=(340,362,-518) v=0.646 p=0.994 kneeR=(168,325,-488) v=0.575 p=0.994 ankL=(346,580,-686) v=0.573 p=0.950 ankR=(200,553,-654) v=0.396 p=0.954 heelL=(342,611,-704) v=0.534 p=0.906 heelR=(213,581,-671) v=0.436 p=0.927 footL=(340,645,-898) v=0.618 p=0.844 footR=(190,615,-853) v=0.504 p=0.858 fw=480 fh=640
INFO [console] LEG_COR: hipL=(331,350,-27) v=0.999 p=1.000 hipR=(240,352,27) v=0.999 p=1.000 kneeL=(340,362,-518) v=0.646 p=0.994 kneeR=(168,325,-488) v=0.575 p=0.994 ankL=(346,580,-686) v=0.573 p=0.950 ankR=(200,553,-654) v=0.396 p=0.954 heelL=(342,611,-704) v=0.534 p=0.906 heelR=(213,581,-671) v=0.436 p=0.927 footL=(340,645,-898) v=0.618 p=0.844 footR=(190,615,-853) v=0.504 p=0.858 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(340,341,-25.839) v=0.999 p=1.000 knee=(348,354,-521.917) v=0.781 p=0.994 ankle=(354,576,-685.650) v=0.681 p=0.950 heel=(344,607,-702.981) v=0.576 p=0.906 footIdx=(349,642,-896.946) v=0.639 p=0.844
INFO [console] LEG_LOG_R: hip=(240,341,25.614) v=0.999 p=1.000 knee=(165,306,-490.147) v=0.758 p=0.994 ankle=(196,545,-654.446) v=0.621 p=0.954 heel=(206,580,-671.468) v=0.565 p=0.927 footIdx=(184,620,-853.432) v=0.595 p=0.858
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-276.2,-218.6) -> (849.1,906.6) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0134 bc=0.0566 ac=0.0680 spike=false ankleL ab=0.0214 bc=0.0374 ac=0.0570 spike=false heelL ab=0.0142 bc=0.0300 ac=0.0433 spike=false footL ab=0.0192 bc=0.0109 ac=0.0292 spike=false kneeR ab=0.0016 bc=0.0070 ac=0.0077 spike=false ankleR ab=0.0004 bc=0.0102 ac=0.0104 spike=false heelR ab=0.0130 bc=0.0112 ac=0.0079 spike=false footR ab=0.0102 bc=0.0115 ac=0.0024 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0624 cross=0.2005 diff=0.1382 ratio=3.2158 mapping=NORM rel=0.744
INFO [console] LEG_PAIRS_V2: knee dir=0.0195 cross=0.0651 | ankle dir=0.0144 cross=0.0459 | heel dir=0.0138 cross=0.0387 | foot dir=0.0147 cross=0.0509 |
INFO [console] LEG_RAW: hipL=(334,338,-11) v=0.999 p=1.000 hipR=(243,343,11) v=0.999 p=1.000 kneeL=(357,282,-562) v=0.818 p=0.995 kneeR=(169,293,-540) v=0.812 p=0.995 ankL=(338,512,-710) v=0.752 p=0.964 ankR=(194,530,-709) v=0.680 p=0.961 heelL=(329,544,-724) v=0.719 p=0.932 heelR=(206,557,-726) v=0.654 p=0.933 footL=(335,578,-906) v=0.781 p=0.859 footR=(178,596,-915) v=0.732 p=0.846 fw=480 fh=640
INFO [console] LEG_COR: hipL=(334,338,-11) v=0.999 p=1.000 hipR=(243,343,11) v=0.999 p=1.000 kneeL=(357,282,-562) v=0.818 p=0.995 kneeR=(169,293,-540) v=0.812 p=0.995 ankL=(338,512,-710) v=0.752 p=0.964 ankR=(194,530,-709) v=0.680 p=0.961 heelL=(329,544,-724) v=0.719 p=0.932 heelR=(206,557,-726) v=0.654 p=0.933 footL=(335,578,-906) v=0.781 p=0.859 footR=(178,596,-915) v=0.732 p=0.846 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(338,340,-16.446) v=0.999 p=1.000 knee=(352,293,-558.706) v=0.785 p=0.995 ankle=(345,523,-708.705) v=0.688 p=0.964 heel=(336,556,-722.740) v=0.590 p=0.932 footIdx=(342,587,-905.305) v=0.654 p=0.859
INFO [console] LEG_LOG_R: hip=(242,342,16.321) v=0.999 p=1.000 knee=(167,296,-537.027) v=0.764 p=0.995 ankle=(195,535,-707.140) v=0.627 p=0.961 heel=(206,564,-724.206) v=0.574 p=0.933 footIdx=(182,600,-913.123) v=0.608 p=0.846
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-250.8,-192.4) -> (823.9,882.3) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0566 bc=0.0148 ac=0.0478 spike=false ankleL ab=0.0374 bc=0.0191 ac=0.0342 spike=false heelL ab=0.0300 bc=0.0142 ac=0.0212 spike=false footL ab=0.0109 bc=0.0315 ac=0.0290 spike=false kneeR ab=0.0070 bc=0.0061 ac=0.0117 spike=false ankleR ab=0.0102 bc=0.0043 ac=0.0144 spike=false heelR ab=0.0112 bc=0.0057 ac=0.0164 spike=false footR ab=0.0115 bc=0.0145 ac=0.0215 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0167 cross=0.2017 diff=0.1850 ratio=12.0900 mapping=NORM rel=0.737
INFO [console] LEG_PAIRS_V2: knee dir=0.0061 cross=0.0684 | ankle dir=0.0027 cross=0.0451 | heel dir=0.0027 cross=0.0367 | foot dir=0.0051 cross=0.0514 |
INFO [console] LEG_RAW: hipL=(337,352,-10) v=0.998 p=1.000 hipR=(245,358,10) v=0.999 p=1.000 kneeL=(364,294,-525) v=0.810 p=0.995 kneeR=(172,314,-501) v=0.800 p=0.995 ankL=(341,505,-646) v=0.750 p=0.970 ankR=(203,525,-644) v=0.678 p=0.966 heelL=(331,536,-658) v=0.718 p=0.946 heelR=(215,557,-659) v=0.646 p=0.943 footL=(346,575,-833) v=0.772 p=0.891 footR=(196,587,-844) v=0.726 p=0.879 fw=480 fh=640
INFO [console] LEG_COR: hipL=(337,352,-10) v=0.998 p=1.000 hipR=(245,358,10) v=0.999 p=1.000 kneeL=(364,294,-525) v=0.810 p=0.995 kneeR=(172,314,-501) v=0.800 p=0.995 ankL=(341,505,-646) v=0.750 p=0.970 ankR=(203,525,-644) v=0.678 p=0.966 heelL=(331,536,-658) v=0.718 p=0.946 heelR=(215,557,-659) v=0.646 p=0.943 footL=(346,575,-833) v=0.772 p=0.891 footR=(196,587,-844) v=0.726 p=0.879 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(338,346,-12.606) v=0.999 p=1.000 knee=(359,294,-530.173) v=0.787 p=0.995 ankle=(344,508,-653.779) v=0.694 p=0.970 heel=(334,539,-665.954) v=0.603 p=0.946 footIdx=(343,576,-840.522) v=0.665 p=0.891
INFO [console] LEG_LOG_R: hip=(244,352,12.467) v=0.999 p=1.000 knee=(170,299,-504.709) v=0.767 p=0.995 ankle=(201,528,-649.659) v=0.632 p=0.966 heel=(212,559,-664.740) v=0.581 p=0.943 footIdx=(192,590,-848.059) v=0.620 p=0.879
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-235.4,-177.1) -> (808.8,867.1) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0148 bc=0.0080 ac=0.0228 spike=false ankleL ab=0.0191 bc=0.0252 ac=0.0436 spike=false heelL ab=0.0142 bc=0.0254 ac=0.0395 spike=false footL ab=0.0315 bc=0.0254 ac=0.0566 spike=false kneeR ab=0.0061 bc=0.0072 ac=0.0132 spike=false ankleR ab=0.0043 bc=0.0110 ac=0.0153 spike=false heelR ab=0.0057 bc=0.0132 ac=0.0189 spike=false footR ab=0.0145 bc=0.0251 ac=0.0377 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
INFO [console] LEG_V2: dir=0.0326 cross=0.2354 diff=0.2029 ratio=7.2319 mapping=NORM rel=0.812
INFO [console] LEG_PAIRS_V2: knee dir=0.0027 cross=0.0685 | ankle dir=0.0085 cross=0.0556 | heel dir=0.0091 cross=0.0468 | foot dir=0.0123 cross=0.0646 |
INFO [console] LEG_RAW: hipL=(335,354,-18) v=1.000 p=1.000 hipR=(248,359,18) v=1.000 p=1.000 kneeL=(363,290,-542) v=0.856 p=0.999 kneeR=(177,304,-508) v=0.845 p=0.999 ankL=(356,504,-689) v=0.833 p=0.991 ankR=(166,524,-663) v=0.763 p=0.987 heelL=(348,537,-704) v=0.783 p=0.982 heelR=(175,554,-679) v=0.733 p=0.979 footL=(357,559,-889) v=0.863 p=0.963 footR=(146,580,-866) v=0.823 p=0.954 fw=480 fh=640
INFO [console] LEG_COR: hipL=(335,354,-18) v=1.000 p=1.000 hipR=(248,359,18) v=1.000 p=1.000 kneeL=(363,290,-542) v=0.856 p=0.999 kneeR=(177,304,-508) v=0.845 p=0.999 ankL=(356,504,-689) v=0.833 p=0.991 ankR=(166,524,-663) v=0.763 p=0.987 heelL=(348,537,-704) v=0.783 p=0.982 heelR=(175,554,-679) v=0.733 p=0.979 footL=(357,559,-889) v=0.863 p=0.963 footR=(146,580,-866) v=0.823 p=0.954 fw=480 fh=640
INFO [console] LEG_LOG_L: hip=(337,351,-12.852) v=0.999 p=1.000 knee=(361,291,-540.815) v=0.794 p=0.999 ankle=(351,505,-685.648) v=0.708 p=0.991 heel=(343,537,-700.481) v=0.621 p=0.982 footIdx=(352,561,-885.744) v=0.685 p=0.963
INFO [console] LEG_LOG_R: hip=(246,356,12.647) v=0.999 p=1.000 knee=(174,302,-507.917) v=0.775 p=0.999 ankle=(174,525,-661.965) v=0.645 p=0.987 heel=(183,556,-678.194) v=0.596 p=0.979 footIdx=(155,582,-864.431) v=0.640 p=0.954
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-206.4,-146.7) -> (781.1,840.7) clamped=(0.0,0.0) -> (480.0,640.0) frame=480x640 screen=390x844
INFO [console] POSE_OUTLIER: result=PASS leftBad=0/4 rightBad=0/4 maxNeighbor=0.025 minSpike=0.06
INFO [console] POSE_OUTLIER_POINTS: kneeL ab=0.0080 bc=0.0056 ac=0.0136 spike=false ankleL ab=0.0252 bc=0.0137 ac=0.0381 spike=false heelL ab=0.0254 bc=0.0134 ac=0.0385 spike=false footL ab=0.0254 bc=0.0254 ac=0.0506 spike=false kneeR ab=0.0072 bc=0.0108 ac=0.0181 spike=false ankleR ab=0.0110 bc=0.0283 ac=0.0178 spike=false heelR ab=0.0132 bc=0.0333 ac=0.0211 spike=false footR ab=0.0251 bc=0.0530 ac=0.0459 spike=false
INFO [console] POSE_OUTLIER_STATE: accepted=B nextPending=C repaired=false
$
250 строкUTF-8LIVE