Skip to main content
Glama

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
NameRequiredDescriptionDefault
robot_idsYes
metric_columnsYes
start_timeNo
end_timeNo

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nonead/nUR_MCP_SERVER'

If you have feedback or need assistance with the MCP directory API, please join our Discord server