""" 机器狗控制系统配置文件 """ # 系统配置 SYSTEM_CONFIG = { # 时间配置 'TIME_SLEEP': 5000, # 默认等待时间(毫秒) # 测试配置 'ENABLE_SINGLE_TEST': True, # 是否启用单独测试功能 'DEFAULT_TEST_OBSERVE': True, # 测试时是否默认显示详细信息 # 安全配置 'SAFETY_CHECK': True, # 是否启用安全检查 'AUTO_STAND_UP': True, # 是否自动站立 # 显示配置 'USE_EMOJI': True, # 是否使用emoji图标 'SHOW_TIPS': True, # 是否显示提示信息 'CLEAR_SCREEN': True, # 是否支持清屏 # 日志配置 'LOG_LEVEL': 'INFO', # 日志级别 'LOG_TO_FILE': False, # 是否记录到文件 'LOG_FILE_PATH': '/tmp/robot_dog.log', # 日志文件路径 } # 测试配置 TEST_CONFIG = { # 基础运动测试参数 'BASIC_MOVEMENT': { 'turn_speed': 0.5, # 转弯速度 'move_speed': 0.3, # 移动速度 'default_distance': 1.0, # 默认移动距离 'default_angle': 90, # 默认转弯角度 }, # 弧形运动测试参数 'ARC_MOVEMENT': { 'default_radius': 0.5, # 默认弧形半径 'arc_speed': 0.25, # 弧形运动速度 }, # 自定义步态测试参数 'CUSTOM_GAIT': { 'gait_switch_time': 2.0, # 步态切换时间 'test_duration': 5.0, # 测试持续时间 }, # 视觉功能测试参数 'VISION_FUNCTION': { 'scan_timeout': 10.0, # 扫描超时时间 'detection_confidence': 0.7, # 检测置信度 }, # 复杂运动测试参数 'COMPLEX_MOVEMENT': { 'curve_segments': 5, # 弯道段数 'spiral_turns': 3, # 螺旋圈数 }, } # 任务配置 TASK_CONFIG = { # 任务1配置 'TASK_1': { 'qr_scan_timeout': 15.0, # QR码扫描超时时间 'line_follow_speed': 0.2, # 横线跟随速度 }, # 任务2配置 'TASK_2': { 'curve_speed': 0.25, # 弯道速度 'arrow_detection_timeout': 10.0, # 箭头检测超时时间 }, # 任务3配置 'TASK_3': { 'climbing_speed': 0.15, # 爬坡速度 'slope_angle_threshold': 15.0, # 坡度角度阈值 }, # 任务4配置 'TASK_4': { 'stoop_height': 0.3, # 俯身高度 'obstacle_detection_distance': 0.5, # 障碍物检测距离 }, # 任务5配置 'TASK_5': { 'final_scan_timeout': 20.0, # 最终扫描超时时间 'positioning_precision': 0.05, # 定位精度 }, } # 硬件配置 HARDWARE_CONFIG = { # 通信配置 'LCM_URLS': { 'control': "udpm://239.255.76.67:7670?ttl=255", 'feedback': "udpm://239.255.76.67:7671?ttl=255", 'odometry': "udpm://239.255.76.67:7667?ttl=255", }, # 相机配置 'CAMERA': { 'resolution': (640, 480), # 分辨率 'fps': 30, # 帧率 'auto_exposure': True, # 自动曝光 }, # 传感器配置 'SENSORS': { 'imu_rate': 100, # IMU采样率 'odometry_rate': 50, # 里程计采样率 }, } # 获取配置的便捷函数 def get_config(category, key=None, default=None): """ 获取配置值 Args: category: 配置类别 ('SYSTEM', 'TEST', 'TASK', 'HARDWARE') key: 配置键,如果为None则返回整个类别 default: 默认值 Returns: 配置值或默认值 """ config_map = { 'SYSTEM': SYSTEM_CONFIG, 'TEST': TEST_CONFIG, 'TASK': TASK_CONFIG, 'HARDWARE': HARDWARE_CONFIG, } if category not in config_map: return default config = config_map[category] if key is None: return config return config.get(key, default) def update_config(category, key, value): """ 更新配置值 Args: category: 配置类别 key: 配置键 value: 新值 """ config_map = { 'SYSTEM': SYSTEM_CONFIG, 'TEST': TEST_CONFIG, 'TASK': TASK_CONFIG, 'HARDWARE': HARDWARE_CONFIG, } if category in config_map: config_map[category][key] = value def print_config(): """打印当前配置""" print("="*60) print(" 当前系统配置") print("="*60) print("\n🔧 系统配置:") for key, value in SYSTEM_CONFIG.items(): print(f" {key}: {value}") print("\n🧪 测试配置:") for category, config in TEST_CONFIG.items(): print(f" {category}:") for key, value in config.items(): print(f" {key}: {value}") print("\n🎯 任务配置:") for category, config in TASK_CONFIG.items(): print(f" {category}:") for key, value in config.items(): print(f" {key}: {value}") print("\n⚙️ 硬件配置:") for category, config in HARDWARE_CONFIG.items(): print(f" {category}:") if isinstance(config, dict): for key, value in config.items(): print(f" {key}: {value}") else: print(f" {config}") print("="*60) if __name__ == "__main__": print_config()