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

rehabapp_2026-09-08_10-34-00

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.stopPlayerCompleted (package:flutter_sound/public/flutter_sound_player.dart:375:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:98:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 ---> stopPlayerCompleted: true
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.stopPlayerCompleted (package:flutter_sound/public/flutter_sound_player.dart:360:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:98:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:---> _stop
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._stop (package:flutter_sound/public/flutter_sound_player.dart:1826:13)
INFO [console] │ #1 FlutterSoundPlayer._closePlayer (package:flutter_sound/public/flutter_sound_player.dart:830:11)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:---> closePlayer
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._closePlayer (package:flutter_sound/public/flutter_sound_player.dart:822:13)
INFO [console] │ #1 FlutterSoundPlayer.closePlayer.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:817:14)
INFO [console] │ 🐛 FS:<--- _openPlayer
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] [DIO]
INFO [console] │ #0 FlutterSoundPlayer._openPlayer (package:flutter_sound/public/flutter_sound_player.dart:780:13)
INFO [console] │ #1 <asynchronous suspension>
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 <--- openPlayerCompleted: true
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.openPlayerCompleted (package:flutter_sound/public/flutter_sound_player.dart:296: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] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
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] │ 🐛 FS:---> _openPlayer
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] │ 🐛 ctor: FlutterSoundPlayer()
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 new FlutterSoundPlayer (package:flutter_sound/public/flutter_sound_player.dart:200:13)
INFO [console] │ #1 new _OnboardingTrainingPageState (package:testapp/features/training/presentation/pages/onboarding_training_page.dart:24:43)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] ide: 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,
INFO [console] position_message: Теперь поднимите правую ногу вверх до комфортной вам рабочей высоты, fixation_message: Фиксируем значение, не опускайте ногу, error_message: Поднимайте ногу на необходимый уровень}, {id: 99, command_side: left, position_number: 2, position_message: Теперь поднимите левую ногу вверх до комфортной вам рабочей высоты, fixation_message: Фиксируем значение, не опускайте ногу, error_message: Поднимайте ногу на необходимый уровень}]}]}]}}
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] 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_numbe
INFO [console] r: 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: Лягте на правый бок, правую ногу согните для устойчивост
INFO [console] и. Левая нога должна лежать на другой ноге и быть продолжением корпуса, 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_s
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: Д
INFO [console] елайте движения в нужной амплитуде}]}]}, {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
INFO [console] : 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_
INFO [console] ount: 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: Корпус отклоните назад. Спина до
INFO [console] лжна находиться под углом от 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: Калибровка амплитуды сегмент
INFO [console] а, 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: Сядьт
INFO [console] м угол в голеностопе, оставайтесь в нужном положении, 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_typ
INFO [console] e: 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: Фиксируем значение, ост
INFO [console] авайтесь в нужном положении, 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_c
INFO [console] n_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,
INFO [console] 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, s
INFO [console] equence_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: Фиксируе
INFO [console] osition_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_monitore
INFO [console] d: 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: Руки расположите вдоль туловища ладонями вниз или в стор
INFO [console] оны для устойчивости}, {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, fixatio
INFO [console] угла в колене, 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_typ
INFO [console] e: 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_sid
INFO [console] e: 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, p
INFO [console] ine_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_bod
INFO [console] y_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, seq
INFO [console] uence_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: Калибровка
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}]}, {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_me
INFO [console] ssage: Фиксируем угол в колене, оставайтесь в нужном положении, 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}, l
ERROR [services library] Argument for dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.onDeviceOrientationChanged was null, expected non-null DeviceOrientationManager. 'package:camera_android_camerax/src/camerax_library.g.dart': Failed assertion: line 3256 pos 13: 'arg_pigeon_instance != null'
'package:camera_android_camerax/src/camerax_library.g.dart': Failed assertion: line 3256 pos 13: 'arg_pigeon_instance != null': Argument for dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.onDeviceOrientationChanged was null, expected non-null DeviceOrientationManager.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:67:4)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:49:5)
#2      DeviceOrientationManager.pigeon_setUpMessageHandlers.<anonymous closure> (package:camera_android_camerax/src/camerax_library.g.dart:3256:13)
#3      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:258:49)
#4      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:663:35)
#5      _invoke2 (dart:ui/hooks.dart:455:13)
#6      _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:45:5)
#7      _Channel._drainStep (dart:ui/channel_buffers.dart:229:31)
#8      _rootRun (dart:async/zone_root.dart:27:47)
#9      _CustomZone.run (dart:async/zone.dart:726:19)
#10     _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:666:23)
#12     _rootRun (dart:async/zone_root.dart:35:13)
#13     _CustomZone.run (dart:async/zone.dart:726:19)
#14     _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#15     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:666:23)
#16     _microtaskLoop (dart:async/schedule_microtask.dart:40:35)
#17     _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
ERROR [services library] Argument for dev.flutter.pigeon.camera_android_camerax.Analyzer.analyze was null, expected non-null Analyzer. 'package:camera_android_camerax/src/camerax_library.g.dart': Failed assertion: line 6346 pos 13: 'arg_pigeon_instance != null'
'package:camera_android_camerax/src/camerax_library.g.dart': Failed assertion: line 6346 pos 13: 'arg_pigeon_instance != null': Argument for dev.flutter.pigeon.camera_android_camerax.Analyzer.analyze was null, expected non-null Analyzer.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:67:4)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:49:5)
#2      Analyzer.pigeon_setUpMessageHandlers.<anonymous closure> (package:camera_android_camerax/src/camerax_library.g.dart:6346:13)
#3      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:258:49)
#4      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:663:35)
#5      _invoke2 (dart:ui/hooks.dart:455:13)
#6      _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:45:5)
#7      _Channel._drainStep (dart:ui/channel_buffers.dart:229:31)
#8      _rootRun (dart:async/zone_root.dart:27:47)
#9      _CustomZone.run (dart:async/zone.dart:726:19)
#10     _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:666:23)
#12     _rootRun (dart:async/zone_root.dart:35:13)
#13     _CustomZone.run (dart:async/zone.dart:726:19)
#14     _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#15     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:666:23)
#16     _microtaskLoop (dart:async/schedule_microtask.dart:40:35)
#17     _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
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_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
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_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=(-918.2,59.1) -> (1373.6,2351.0) clamped=(0.0,59.1) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-922.1,63.4) -> (1364.4,2349.9) clamped=(0.0,63.4) -> (480.0,720.0) frame=480x720 screen=394x853
INFO [console] POSE_METRICS: received=32(30.2fps) processed=12(11.3fps) replaced=18(17.0fps) buildMs=22.15 estimatorMs=136.81 totalMs=138.32 actualFps=11.3
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-204.7,72.4) -> (689.5,966.6) clamped=(0.0,72.4) -> (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=(56.6,-14.2) -> (764.2,693.3) clamped=(56.6,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(57.5,-24.6) -> (766.2,684.2) clamped=(57.5,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(58.6,-22.7) -> (763.1,681.7) clamped=(58.6,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] ROI_DEBUG: corners computed rawRect=(59.1,-21.8) -> (782.7,701.8) clamped=(59.1,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-24.4,-47.3) -> (919.9,897.0) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(6.9,-69.8) -> (1030.6,953.9) clamped=(6.9,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE_METRICS: received=13(12.7fps) processed=13(12.7fps) replaced=0(0.0fps) buildMs=28.55 estimatorMs=61.84 totalMs=62.87 actualFps=12.7
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(12.4,-90.0) -> (859.7,757.4) clamped=(12.4,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(0.0,0.0) -> (720.0,480.0) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-118.3,-61.0) -> (946.1,1003.4) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(20.8,-84.0) -> (851.7,746.8) clamped=(20.8,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-99.5,-91.8) -> (931.1,938.9) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(51.6,-57.0) -> (822.0,713.5) clamped=(51.6,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(34.8,-72.9) -> (838.3,730.6) clamped=(34.8,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] ROI_DEBUG: corners computed rawRect=(-84.3,-99.1) -> (918.1,903.4) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE_METRICS: received=15(15.0fps) processed=16(16.0fps) replaced=0(0.0fps) buildMs=18.63 estimatorMs=54.82 totalMs=55.88 actualFps=16.0
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-168.1,-91.3) -> (908.0,984.8) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-139.4,-42.7) -> (881.5,978.1) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] ROI_DEBUG: corners computed rawRect=(61.1,-54.4) -> (812.5,696.9) clamped=(61.1,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-73.4,-99.3) -> (910.8,884.8) clamped=(0.0,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(9.1,-69.9) -> (1007.1,928.1) clamped=(9.1,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE_METRICS: received=22(20.7fps) processed=21(19.7fps) replaced=1(0.9fps) buildMs=21.78 estimatorMs=50.54 totalMs=50.64 actualFps=19.7
INFO [console] POSE_METRICS: received=23(22.2fps) processed=22(21.3fps) replaced=1(1.0fps) buildMs=22.32 estimatorMs=46.12 totalMs=46.22 actualFps=21.3
INFO [console] POSE_METRICS: received=27(26.6fps) processed=24(23.7fps) replaced=3(3.0fps) buildMs=16.95 estimatorMs=42.15 totalMs=42.24 actualFps=23.7
INFO [console] POSE_METRICS: received=26(25.6fps) processed=23(22.6fps) replaced=3(3.0fps) buildMs=19.09 estimatorMs=42.93 totalMs=43.03 actualFps=22.6
INFO [console] POSE_METRICS: received=26(24.9fps) processed=24(23.0fps) replaced=2(1.9fps) buildMs=19.43 estimatorMs=43.34 totalMs=43.44 actualFps=23.0
INFO [console] POSE_METRICS: received=23(22.4fps) processed=21(20.4fps) replaced=2(1.9fps) buildMs=20.06 estimatorMs=43.00 totalMs=43.10 actualFps=20.4
INFO [console] POSE_METRICS: received=21(19.9fps) processed=19(18.0fps) replaced=2(1.9fps) buildMs=25.12 estimatorMs=54.14 totalMs=54.24 actualFps=18.0
INFO [console] POSE_METRICS: received=24(22.9fps) processed=22(21.0fps) replaced=2(1.9fps) buildMs=20.06 estimatorMs=46.52 totalMs=46.61 actualFps=21.0
INFO [console] POSE_METRICS: received=25(24.2fps) processed=22(21.3fps) replaced=3(2.9fps) buildMs=21.37 estimatorMs=46.85 totalMs=46.95 actualFps=21.3
INFO [console] POSE_METRICS: received=24(23.6fps) processed=23(22.6fps) replaced=2(2.0fps) buildMs=18.80 estimatorMs=43.26 totalMs=43.35 actualFps=22.6
INFO [console] POSE_METRICS: received=26(25.5fps) processed=23(22.5fps) replaced=2(2.0fps) buildMs=17.67 estimatorMs=42.75 totalMs=42.85 actualFps=22.5
INFO [console] POSE_METRICS: received=25(24.9fps) processed=24(23.9fps) replaced=1(1.0fps) buildMs=19.54 estimatorMs=41.81 totalMs=41.91 actualFps=23.9
INFO [console] POSE_METRICS: received=24(24.0fps) processed=22(22.0fps) replaced=2(2.0fps) buildMs=18.16 estimatorMs=39.75 totalMs=39.84 actualFps=22.0
INFO [console] POSE_METRICS: received=27(26.9fps) processed=24(23.9fps) replaced=3(3.0fps) buildMs=19.69 estimatorMs=41.75 totalMs=41.85 actualFps=23.9
INFO [console] POSE_METRICS: received=25(24.9fps) processed=24(23.9fps) replaced=1(1.0fps) buildMs=19.92 estimatorMs=40.57 totalMs=40.66 actualFps=23.9
INFO [console] POSE_METRICS: received=23(22.5fps) processed=20(19.6fps) replaced=3(2.9fps) buildMs=21.84 estimatorMs=46.56 totalMs=46.64 actualFps=19.6
INFO [console] POSE_METRICS: received=22(21.9fps) processed=22(21.9fps) replaced=0(0.0fps) buildMs=20.67 estimatorMs=43.30 totalMs=44.11 actualFps=21.9
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] POSE_METRICS: received=19(18.6fps) processed=16(15.7fps) replaced=3(2.9fps) buildMs=23.27 estimatorMs=59.53 totalMs=59.68 actualFps=15.7
INFO [console] POSE_METRICS: received=27(26.5fps) processed=25(24.5fps) replaced=2(2.0fps) buildMs=16.93 estimatorMs=40.61 totalMs=40.71 actualFps=24.5
INFO [console] POSE_METRICS: received=25(24.7fps) processed=22(21.7fps) replaced=3(3.0fps) buildMs=20.09 estimatorMs=44.72 totalMs=44.82 actualFps=21.7
INFO [console] POSE_METRICS: received=24(23.3fps) processed=21(20.4fps) replaced=3(2.9fps) buildMs=22.21 estimatorMs=42.06 totalMs=42.15 actualFps=20.4
INFO [console] POSE_METRICS: received=26(25.8fps) processed=24(23.9fps) replaced=2(2.0fps) buildMs=19.57 estimatorMs=41.79 totalMs=41.89 actualFps=23.9
INFO [console] POSE_METRICS: received=28(26.6fps) processed=25(23.7fps) replaced=3(2.8fps) buildMs=17.73 estimatorMs=40.98 totalMs=41.08 actualFps=23.7
INFO [console] POSE_METRICS: received=28(27.4fps) processed=25(24.5fps) replaced=3(2.9fps) buildMs=17.37 estimatorMs=40.75 totalMs=40.85 actualFps=24.5
INFO [console] POSE_METRICS: received=27(26.0fps) processed=23(22.2fps) replaced=4(3.9fps) buildMs=19.15 estimatorMs=44.14 totalMs=44.24 actualFps=22.2
INFO [console] POSE_METRICS: received=23(22.9fps) processed=23(22.9fps) replaced=0(0.0fps) buildMs=21.12 estimatorMs=42.54 totalMs=42.63 actualFps=22.9
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(347.2,-248.0) -> (1593.6,998.4) clamped=(347.2,0.0) -> (720.0,480.0) frame=720x480 screen=853x394
INFO [console] POSE_METRICS: received=19(19.0fps) processed=17(17.0fps) replaced=2(2.0fps) buildMs=28.70 estimatorMs=58.67 totalMs=58.81 actualFps=17.0
INFO [console] POSE_METRICS: received=24(22.2fps) processed=23(21.3fps) replaced=1(0.9fps) buildMs=21.08 estimatorMs=46.81 totalMs=46.90 actualFps=21.3
INFO [console] POSE_METRICS: received=26(25.3fps) processed=23(22.4fps) replaced=3(2.9fps) buildMs=19.06 estimatorMs=43.53 totalMs=43.63 actualFps=22.4
INFO [console] POSE_METRICS: received=24(23.2fps) processed=21(20.3fps) replaced=3(2.9fps) buildMs=22.41 estimatorMs=46.18 totalMs=46.27 actualFps=20.3
INFO [console] POSE_METRICS: received=26(25.5fps) processed=23(22.5fps) replaced=3(2.9fps) buildMs=19.04 estimatorMs=40.58 totalMs=40.67 actualFps=22.5
INFO [console] POSE_METRICS: received=27(26.4fps) processed=25(24.4fps) replaced=2(2.0fps) buildMs=18.41 estimatorMs=40.78 totalMs=40.87 actualFps=24.4
INFO [console] POSE_METRICS: received=24(23.9fps) processed=23(22.9fps) replaced=1(1.0fps) buildMs=19.97 estimatorMs=43.49 totalMs=43.58 actualFps=22.9
INFO [console] POSE_METRICS: received=27(26.2fps) processed=22(21.4fps) replaced=5(4.9fps) buildMs=19.31 estimatorMs=46.59 totalMs=46.68 actualFps=21.4
INFO [console] POSE_METRICS: received=27(26.9fps) processed=24(23.9fps) replaced=3(3.0fps) buildMs=17.43 estimatorMs=40.80 totalMs=40.90 actualFps=23.9
INFO [console] POSE_METRICS: received=25(24.8fps) processed=22(21.8fps) replaced=4(4.0fps) buildMs=21.45 estimatorMs=45.66 totalMs=45.76 actualFps=21.8
INFO [console] POSE_METRICS: received=26(25.1fps) processed=22(21.2fps) replaced=3(2.9fps) buildMs=19.98 estimatorMs=45.11 totalMs=45.19 actualFps=21.2
INFO [console] POSE_METRICS: received=25(23.0fps) processed=22(20.2fps) replaced=3(2.8fps) buildMs=24.57 estimatorMs=48.32 totalMs=48.42 actualFps=20.2
INFO [console] POSE_METRICS: received=24(23.7fps) processed=22(21.7fps) replaced=2(2.0fps) buildMs=21.66 estimatorMs=45.20 totalMs=45.30 actualFps=21.7
INFO [console] POSE_METRICS: received=26(25.2fps) processed=22(21.3fps) replaced=4(3.9fps) buildMs=20.65 estimatorMs=45.69 totalMs=45.78 actualFps=21.3
INFO [console] POSE_METRICS: received=26(25.7fps) processed=23(22.7fps) replaced=3(3.0fps) buildMs=19.50 estimatorMs=42.58 totalMs=42.67 actualFps=22.7
INFO [console] POSE_METRICS: received=24(23.6fps) processed=22(21.6fps) replaced=2(2.0fps) buildMs=19.85 estimatorMs=44.57 totalMs=44.67 actualFps=21.6
INFO [console] POSE_METRICS: received=26(25.8fps) processed=23(22.8fps) replaced=3(3.0fps) buildMs=19.71 estimatorMs=43.13 totalMs=43.22 actualFps=22.8
INFO [console] POSE_METRICS: received=17(7.9fps) processed=15(6.9fps) replaced=2(0.9fps) buildMs=96.14 estimatorMs=143.68 totalMs=144.04 actualFps=6.9
INFO [console] POSE_METRICS: received=3(3.0fps) processed=3(3.0fps) replaced=0(0.0fps) buildMs=21.54 estimatorMs=59.22 totalMs=59.54 actualFps=3.0
INFO [console] POSE_METRICS: received=16(16.0fps) processed=17(17.0fps) replaced=0(0.0fps) buildMs=27.21 estimatorMs=56.90 totalMs=57.03 actualFps=17.0
INFO [console] POSE_METRICS: received=22(21.5fps) processed=22(21.5fps) replaced=0(0.0fps) buildMs=23.57 estimatorMs=45.00 totalMs=45.12 actualFps=21.5
INFO [console] POSE_METRICS: received=24(22.7fps) processed=24(22.7fps) replaced=0(0.0fps) buildMs=22.65 estimatorMs=41.87 totalMs=41.98 actualFps=22.7
INFO [console] POSE_METRICS: received=24(23.5fps) processed=24(23.5fps) replaced=0(0.0fps) buildMs=21.81 estimatorMs=41.47 totalMs=41.58 actualFps=23.5
INFO [console] POSE_METRICS: received=22(21.7fps) processed=22(21.7fps) replaced=0(0.0fps) buildMs=24.00 estimatorMs=45.89 totalMs=46.00 actualFps=21.7
INFO [console] POSE_METRICS: received=23(22.4fps) processed=23(22.4fps) replaced=0(0.0fps) buildMs=23.45 estimatorMs=44.36 totalMs=44.47 actualFps=22.4
INFO [console] POSE_METRICS: received=25(23.7fps) processed=24(22.8fps) replaced=1(0.9fps) buildMs=22.07 estimatorMs=42.34 totalMs=42.45 actualFps=22.8
INFO [console] POSE_METRICS: received=22(21.9fps) processed=22(21.9fps) replaced=0(0.0fps) buildMs=24.24 estimatorMs=45.56 totalMs=45.69 actualFps=21.9
INFO [console] POSE_METRICS: received=24(23.1fps) processed=23(22.1fps) replaced=1(1.0fps) buildMs=24.01 estimatorMs=44.10 totalMs=44.22 actualFps=22.1
INFO [console] POSE_METRICS: received=24(23.8fps) processed=24(23.8fps) replaced=0(0.0fps) buildMs=22.14 estimatorMs=41.06 totalMs=41.19 actualFps=23.8
INFO [console] POSE_METRICS: received=25(24.6fps) processed=25(24.6fps) replaced=0(0.0fps) buildMs=22.19 estimatorMs=39.64 totalMs=39.75 actualFps=24.6
INFO [console] POSE_METRICS: received=25(23.3fps) processed=24(22.4fps) replaced=1(0.9fps) buildMs=23.44 estimatorMs=42.07 totalMs=42.19 actualFps=22.4
INFO [console] POSE_METRICS: received=24(23.1fps) processed=24(23.1fps) replaced=0(0.0fps) buildMs=23.09 estimatorMs=40.60 totalMs=40.69 actualFps=23.1
INFO [console] POSE_METRICS: received=24(23.0fps) processed=24(23.0fps) replaced=0(0.0fps) buildMs=23.91 estimatorMs=43.27 totalMs=43.38 actualFps=23.0
INFO [console] POSE_METRICS: received=24(23.2fps) processed=24(23.2fps) replaced=0(0.0fps) buildMs=23.06 estimatorMs=42.94 totalMs=43.04 actualFps=23.2
INFO [console] POSE_METRICS: received=24(22.6fps) processed=24(22.6fps) replaced=0(0.0fps) buildMs=24.38 estimatorMs=44.04 totalMs=44.14 actualFps=22.6
INFO [console] POSE_METRICS: received=23(22.2fps) processed=23(22.2fps) replaced=0(0.0fps) buildMs=23.78 estimatorMs=43.42 totalMs=43.53 actualFps=22.2
INFO [console] POSE_METRICS: received=25(24.8fps) processed=25(24.8fps) replaced=0(0.0fps) buildMs=21.54 estimatorMs=39.23 totalMs=39.33 actualFps=24.8
INFO [console] POSE_METRICS: received=24(23.8fps) processed=24(23.8fps) replaced=0(0.0fps) buildMs=23.29 estimatorMs=41.84 totalMs=41.94 actualFps=23.8
INFO [console] POSE_METRICS: received=22(21.8fps) processed=22(21.8fps) replaced=0(0.0fps) buildMs=25.40 estimatorMs=45.70 totalMs=45.80 actualFps=21.8
INFO [console] POSE_METRICS: received=26(23.9fps) processed=26(23.9fps) replaced=0(0.0fps) buildMs=22.45 estimatorMs=38.40 totalMs=38.50 actualFps=23.9
INFO [console] POSE_METRICS: received=24(23.4fps) processed=24(23.4fps) replaced=0(0.0fps) buildMs=23.13 estimatorMs=42.57 totalMs=42.67 actualFps=23.4
INFO [console] POSE_METRICS: received=24(23.6fps) processed=24(23.6fps) replaced=0(0.0fps) buildMs=23.07 estimatorMs=42.24 totalMs=42.33 actualFps=23.6
INFO [console] POSE_METRICS: received=25(24.7fps) processed=25(24.7fps) replaced=0(0.0fps) buildMs=21.28 estimatorMs=39.72 totalMs=39.82 actualFps=24.7
INFO [console] POSE_METRICS: received=24(23.3fps) processed=24(23.3fps) replaced=0(0.0fps) buildMs=23.60 estimatorMs=41.87 totalMs=41.96 actualFps=23.3
INFO [console] POSE_METRICS: received=24(23.7fps) processed=23(22.7fps) replaced=1(1.0fps) buildMs=22.77 estimatorMs=43.86 totalMs=43.97 actualFps=22.7
INFO [console] POSE_METRICS: received=24(23.5fps) processed=24(23.5fps) replaced=0(0.0fps) buildMs=22.69 estimatorMs=40.10 totalMs=40.20 actualFps=23.5
INFO [console] POSE_METRICS: received=24(23.6fps) processed=24(23.6fps) replaced=0(0.0fps) buildMs=23.18 estimatorMs=41.99 totalMs=42.38 actualFps=23.6
INFO [console] POSE_METRICS: received=24(23.8fps) processed=24(23.8fps) replaced=0(0.0fps) buildMs=23.28 estimatorMs=41.94 totalMs=42.04 actualFps=23.8
INFO [console] POSE_METRICS: received=25(24.5fps) processed=25(24.5fps) replaced=0(0.0fps) buildMs=23.15 estimatorMs=40.58 totalMs=40.68 actualFps=24.5
INFO [console] POSE_METRICS: received=26(25.2fps) processed=26(25.2fps) replaced=0(0.0fps) buildMs=21.80 estimatorMs=39.46 totalMs=39.56 actualFps=25.2
INFO [console] POSE_METRICS: received=24(23.6fps) processed=24(23.6fps) replaced=0(0.0fps) buildMs=23.27 estimatorMs=42.16 totalMs=42.25 actualFps=23.6
INFO [console] POSE_METRICS: received=25(23.7fps) processed=25(23.7fps) replaced=0(0.0fps) buildMs=23.30 estimatorMs=39.95 totalMs=40.04 actualFps=23.7
INFO [console] POSE_METRICS: received=24(23.2fps) processed=24(23.2fps) replaced=0(0.0fps) buildMs=23.56 estimatorMs=42.11 totalMs=42.20 actualFps=23.2
INFO [console] POSE_METRICS: received=22(21.5fps) processed=22(21.5fps) replaced=0(0.0fps) buildMs=25.54 estimatorMs=46.45 totalMs=46.55 actualFps=21.5
INFO [console] POSE_METRICS: received=26(25.2fps) processed=26(25.2fps) replaced=0(0.0fps) buildMs=21.41 estimatorMs=38.88 totalMs=38.96 actualFps=25.2
INFO [console] POSE_METRICS: received=26(24.7fps) processed=25(23.7fps) replaced=1(0.9fps) buildMs=22.42 estimatorMs=39.80 totalMs=39.89 actualFps=23.7
INFO [console] POSE_METRICS: received=26(25.4fps) processed=25(24.4fps) replaced=1(1.0fps) buildMs=21.89 estimatorMs=39.78 totalMs=39.88 actualFps=24.4
INFO [console] POSE_METRICS: received=26(24.2fps) processed=26(24.2fps) replaced=0(0.0fps) buildMs=23.12 estimatorMs=40.58 totalMs=40.67 actualFps=24.2
INFO [console] POSE_METRICS: received=25(24.4fps) processed=25(24.4fps) replaced=0(0.0fps) buildMs=23.34 estimatorMs=40.83 totalMs=40.92 actualFps=24.4
INFO [console] POSE_METRICS: received=25(25.0fps) processed=25(25.0fps) replaced=0(0.0fps) buildMs=22.48 estimatorMs=39.84 totalMs=39.94 actualFps=25.0
INFO [console] POSE_METRICS: received=23(22.3fps) processed=23(22.3fps) replaced=0(0.0fps) buildMs=25.04 estimatorMs=44.69 totalMs=44.79 actualFps=22.3
INFO [console] POSE_METRICS: received=25(23.3fps) processed=25(23.3fps) replaced=0(0.0fps) buildMs=24.12 estimatorMs=40.54 totalMs=40.64 actualFps=23.3
INFO [console] POSE_METRICS: received=24(23.8fps) processed=24(23.8fps) replaced=0(0.0fps) buildMs=23.54 estimatorMs=41.78 totalMs=41.88 actualFps=23.8
INFO [console] POSE_METRICS: received=24(23.5fps) processed=24(23.5fps) replaced=0(0.0fps) buildMs=22.74 estimatorMs=42.43 totalMs=42.53 actualFps=23.5
INFO [console] POSE_METRICS: received=23(22.4fps) processed=23(22.4fps) replaced=0(0.0fps) buildMs=25.08 estimatorMs=43.62 totalMs=43.73 actualFps=22.4
INFO [console] POSE_METRICS: received=24(23.7fps) processed=24(23.7fps) replaced=0(0.0fps) buildMs=23.87 estimatorMs=42.03 totalMs=42.12 actualFps=23.7
INFO [console] POSE_METRICS: received=25(24.2fps) processed=25(24.2fps) replaced=0(0.0fps) buildMs=23.58 estimatorMs=41.17 totalMs=41.26 actualFps=24.2
INFO [console] POSE_METRICS: received=24(23.8fps) processed=24(23.8fps) replaced=0(0.0fps) buildMs=22.44 estimatorMs=39.78 totalMs=39.88 actualFps=23.8
INFO [console] POSE_METRICS: received=26(24.3fps) processed=26(24.3fps) replaced=0(0.0fps) buildMs=22.65 estimatorMs=38.85 totalMs=38.94 actualFps=24.3
INFO [console] POSE_METRICS: received=25(24.2fps) processed=25(24.2fps) replaced=0(0.0fps) buildMs=23.23 estimatorMs=38.86 totalMs=38.94 actualFps=24.2
INFO [console] POSE_METRICS: received=23(22.6fps) processed=23(22.6fps) replaced=0(0.0fps) buildMs=25.21 estimatorMs=44.03 totalMs=44.12 actualFps=22.6
INFO [console] POSE_METRICS: received=25(24.3fps) processed=25(24.3fps) replaced=0(0.0fps) buildMs=22.59 estimatorMs=39.71 totalMs=39.80 actualFps=24.3
INFO [console] POSE_METRICS: received=25(24.8fps) processed=25(24.8fps) replaced=0(0.0fps) buildMs=22.11 estimatorMs=39.41 totalMs=39.50 actualFps=24.8
INFO [console] POSE_METRICS: received=26(24.5fps) processed=26(24.5fps) replaced=0(0.0fps) buildMs=23.08 estimatorMs=39.11 totalMs=39.19 actualFps=24.5
INFO [console] POSE_METRICS: received=26(24.5fps) processed=26(24.5fps) replaced=0(0.0fps) buildMs=22.97 estimatorMs=38.51 totalMs=38.60 actualFps=24.5
INFO [console] POSE_METRICS: received=4(2.8fps) processed=4(2.8fps) replaced=0(0.0fps) buildMs=19.23 estimatorMs=361.91 totalMs=362.27 actualFps=2.8
$
250 строкUTF-8LIVE