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