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()
|