diff --git a/backend/device_manager.py b/backend/device_manager.py index 81802dfc..51951e9e 100644 --- a/backend/device_manager.py +++ b/backend/device_manager.py @@ -66,12 +66,8 @@ class DeviceManager: # 推流状态和线程 self.camera_streaming = False self.femtobolt_streaming = False - self.imu_streaming = False - self.pressure_streaming = False self.camera_streaming_thread = None self.femtobolt_streaming_thread = None - self.imu_thread = None - self.pressure_thread = None self.streaming_stop_event = threading.Event() # 全局帧缓存机制 @@ -248,22 +244,17 @@ class DeviceManager: self.femtobolt_config.synchronized_images_only = True # 视效范围参数示例,假设SDK支持depth_range_min和depth_range_max - # 启动FemtoBolt设备(直接尝试启动,失败时优雅处理) + # 直接尝试启动设备(pykinect_azure库没有设备数量检测API) + logger.info('准备启动FemtoBolt设备...') + + # 启动FemtoBolt设备 logger.info('尝试启动FemtoBolt设备...') - try: - self.femtobolt_camera = pykinect.start_device(config=self.femtobolt_config) - if self.femtobolt_camera: - self.device_status['femtobolt'] = True - logger.info('✓ FemtoBolt深度相机初始化成功!') - else: - logger.warning('FemtoBolt设备启动失败:设备返回None(可能未连接设备)') - self.femtobolt_camera = None - self.device_status['femtobolt'] = False - except BaseException as device_error: - logger.warning(f'FemtoBolt设备启动失败: {device_error}') - logger.info('这通常表示没有连接FemtoBolt设备,系统将继续运行但不包含深度相机功能') - self.femtobolt_camera = None - self.device_status['femtobolt'] = False + self.femtobolt_camera = pykinect.start_device(config=self.femtobolt_config) + if self.femtobolt_camera: + self.device_status['femtobolt'] = True + logger.info('✓ FemtoBolt深度相机初始化成功!') + else: + raise Exception('设备启动返回None') except Exception as e: logger.warning(f'FemtoBolt深度相机初始化失败: {e}') @@ -865,7 +856,9 @@ class DeviceManager: head_pose_data = { 'rotation': head_pose['rotation'], # 旋转角:左旋(-), 右旋(+) 'tilt': head_pose['tilt'], # 倾斜角:左倾(-), 右倾(+) - 'pitch': head_pose['pitch'], # 俯仰角:俯角(-), 仰角(+) + 'pitch': head_pose['pitch'], # 俯仰角:俯角(-), 仰角(+) + + 'temperature': imu_data.get('temperature', 25), 'timestamp': imu_data['timestamp'] } @@ -911,14 +904,6 @@ class DeviceManager: # 计算总压力 total_pressure = left_total + right_total - # 计算各区域压力百分比 - left_front_percent = (left_front / total_pressure * 100) if total_pressure > 0 else 0 - left_rear_percent = (left_rear / total_pressure * 100) if total_pressure > 0 else 0 - right_front_percent = (right_front / total_pressure * 100) if total_pressure > 0 else 0 - right_rear_percent = (right_rear / total_pressure * 100) if total_pressure > 0 else 0 - left_total_percent = (left_total / total_pressure * 100) if total_pressure > 0 else 0 - right_total_percent = (right_total / total_pressure * 100) if total_pressure > 0 else 0 - # 计算平衡比例(左脚压力占总压力的比例) balance_ratio = left_total / total_pressure if total_pressure > 0 else 0.5 @@ -931,15 +916,15 @@ class DeviceManager: # 构建完整的足部压力数据 complete_pressure_data = { - # 分区压力百分比 + # 分区压力值 'pressure_zones': { - 'left_front': round(left_front_percent, 1), - 'left_rear': round(left_rear_percent, 1), - 'right_front': round(right_front_percent,1), - 'right_rear': round(right_rear_percent, 1), - 'left_total': round(left_total_percent, 1), - 'right_total': round(right_total_percent, 1), - 'total_pressure': 100.0 # 总压力百分比始终为100% + 'left_front': left_front, + 'left_rear': left_rear, + 'right_front': right_front, + 'right_rear': right_rear, + 'left_total': left_total, + 'right_total': right_total, + 'total_pressure': total_pressure }, # 平衡分析 'balance_analysis': {