mi-task/config.py

203 lines
5.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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