mi-task/config.py

203 lines
5.2 KiB
Python
Raw Normal View History

"""
机器狗控制系统配置文件
"""
# 系统配置
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()