compare_robots_performance
Analyze and compare performance metrics for multiple robots over specified time periods to evaluate operational efficiency.
Instructions
比较多个机器人的性能
参数:
- robot_ids: 机器人ID列表
- metric_columns: 比较指标列
- start_time: 开始时间戳
- end_time: 结束时间戳
返回:
- 比较结果
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| robot_ids | Yes | ||
| metric_columns | Yes | ||
| start_time | No | ||
| end_time | No |
Implementation Reference
- MCP tool handler for compare_robots_performance. Decorated with @mcp.tool() for automatic registration. Delegates core logic to AdvancedDataAnalyzer.compare_robots() after initialization check.@mcp.tool() def compare_robots_performance(robot_ids: list, metric_columns: list, start_time: float = None, end_time: float = None): """ 比较多个机器人的性能 参数: - robot_ids: 机器人ID列表 - metric_columns: 比较指标列 - start_time: 开始时间戳 - end_time: 结束时间戳 返回: - 比较结果 """ try: if advanced_data_analyzer is None: return return_msg("高级数据分析器未初始化") # 执行比较 comparison = advanced_data_analyzer.compare_robots( robot_ids=robot_ids, metric_columns=metric_columns, start_time=start_time, end_time=end_time ) return return_msg({"comparison": comparison}) except Exception as e: logger.error(f"比较机器人性能失败: {str(e)}") return return_msg(f"比较机器人性能失败: {str(e)}")
- Core helper method implementing the robot comparison logic. Loads data for each robot_id in the time range, computes statistics (mean, median, std, min, max) for each metric_column, and summarizes the best performer per metric (maximizing or minimizing based on metric name).def compare_robots(self, robot_ids: List[str], start_time: Optional[float] = None, end_time: Optional[float] = None, metric_columns: Optional[List[str]] = None) -> Dict[str, Any]: """ 比较多个机器人的性能 Args: robot_ids: 机器人ID列表 start_time: 开始时间 end_time: 结束时间 metric_columns: 要比较的指标列 Returns: Dict[str, Any]: 比较结果 """ comparison_results = { 'robots': {}, 'summary': {} } all_data = [] # 收集每个机器人的数据 for robot_id in robot_ids: df = self.load_data( start_time=start_time, end_time=end_time, robot_id=robot_id ) if not df.empty: comparison_results['robots'][robot_id] = { 'data_points': len(df), 'metrics': {} } # 计算指标 if metric_columns: for col in metric_columns: if col in df.columns: comparison_results['robots'][robot_id]['metrics'][col] = { 'mean': df[col].mean(), 'median': df[col].median(), 'std': df[col].std(), 'min': df[col].min(), 'max': df[col].max() } all_data.append((robot_id, df)) # 生成比较摘要 if metric_columns and all_data: for col in metric_columns: values = [] valid_robots = [] for robot_id, df in all_data: if col in df.columns: values.append(df[col].mean()) valid_robots.append(robot_id) if values: best_idx = np.argmin(values) if 'error' in col.lower() or 'temperature' in col.lower() else np.argmax(values) comparison_results['summary'][col] = { 'best_robot': valid_robots[best_idx], 'best_value': values[best_idx], 'average_value': np.mean(values), 'range': {'min': min(values), 'max': max(values)}, 'variation': np.std(values) / np.mean(values) if np.mean(values) > 0 else 0 } return comparison_results