Skip to main content
Glama
nonead

nUR MCP Server

by nonead

generate_bezier_path

Generate smooth Bezier curve paths for robot motion planning by specifying control points and desired point density.

Instructions

生成贝塞尔曲线路径 参数: - control_points: 控制点列表,格式为[{"x": 0, "y": 0, "z": 0, "rx": 0, "ry": 0, "rz": 0}, ...] - num_points: 生成的路径点数量 返回: - 路径点列表

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
control_pointsYes
num_pointsNo

Implementation Reference

  • The main MCP tool handler for 'generate_bezier_path'. Converts 6D control points from dicts to lists, calls AdvancedTrajectoryPlanner.generate_bezier_curve, converts back to dicts and wraps in return_msg.
    @mcp.tool() def generate_bezier_path(control_points: list, num_points: int = 50): """ 生成贝塞尔曲线路径 参数: - control_points: 控制点列表,格式为[{"x": 0, "y": 0, "z": 0, "rx": 0, "ry": 0, "rz": 0}, ...] - num_points: 生成的路径点数量 返回: - 路径点列表 """ try: if advanced_trajectory_planner is None: return return_msg("高级轨迹规划器未初始化") # 转换控制点格式 points = [ [p["x"], p["y"], p["z"], p["rx"], p["ry"], p["rz"]] for p in control_points ] # 生成贝塞尔曲线 path = advanced_trajectory_planner.generate_bezier_curve( control_points=points, num_points=num_points ) # 转换回字典格式 result_path = [] for point in path: result_path.append({ "x": point[0], "y": point[1], "z": point[2], "rx": point[3], "ry": point[4], "rz": point[5] }) return return_msg({"path": result_path}) except Exception as e: logger.error(f"生成贝塞尔路径失败: {str(e)}") return return_msg(f"生成贝塞尔路径失败: {str(e)}")
  • Input/output schema defined by type annotations (control_points: list of dicts with x,y,z,rx,ry,rz; num_points: int=50) and docstring describing parameters and return (path: list of points).
    def generate_bezier_path(control_points: list, num_points: int = 50): """ 生成贝塞尔曲线路径 参数: - control_points: 控制点列表,格式为[{"x": 0, "y": 0, "z": 0, "rx": 0, "ry": 0, "rz": 0}, ...] - num_points: 生成的路径点数量 返回: - 路径点列表 """
  • Tool registration via @mcp.tool() decorator on the handler function, which auto-registers with name 'generate_bezier_path' based on function name.
    @mcp.tool()
  • Initializes the global advanced_trajectory_planner instance (AdvancedTrajectoryPlanner()) called by the tool handler. Invoked in main().
    def initialize_extended_modules(): """初始化所有扩展模块""" global multi_robot_coordinator, advanced_trajectory_planner global advanced_data_recorder, advanced_data_analyzer try: # 初始化多机器人协调器 multi_robot_coordinator = AdvancedMultiRobotCoordinator() logger.info("高级多机器人协调器初始化成功") # 初始化高级轨迹规划器 advanced_trajectory_planner = AdvancedTrajectoryPlanner() logger.info("高级轨迹规划器初始化成功") # 初始化高级数据记录器 advanced_data_recorder = AdvancedDataRecorder() logger.info("高级数据记录器初始化成功") # 获取数据分析器实例(单例) advanced_data_analyzer = get_data_analyzer() logger.info("高级数据分析器初始化成功") return True except Exception as e: logger.error(f"初始化扩展模块失败: {str(e)}") return False
  • Core helper implementing Bezier curve generation via static method generate_bezier_curve, using calculate_bezier_point (Bernstein basis). Called internally by AdvancedTrajectoryPlanner (likely delegated). Handles position only (3D).
    class BezierCurveGenerator: """贝塞尔曲线生成器""" @staticmethod def calculate_bezier_point(t: float, points: List[List[float]]) -> List[float]: """ 计算贝塞尔曲线上的点 Args: t: 参数 (0-1) points: 控制点列表 Returns: List[float]: 曲线上的点 [x, y, z] """ n = len(points) - 1 result = [0.0, 0.0, 0.0] for i in range(n + 1): binomial = math.comb(n, i) weight = binomial * (t ** i) * ((1 - t) ** (n - i)) result[0] += weight * points[i][0] result[1] += weight * points[i][1] result[2] += weight * points[i][2] return result @staticmethod def generate_bezier_curve(control_points: List[List[float]], num_points: int = 100) -> List[List[float]]: """ 生成贝塞尔曲线 Args: control_points: 控制点列表 num_points: 生成的点数量 Returns: List[List[float]]: 曲线上的点列表 """ curve_points = [] for i in range(num_points): t = i / (num_points - 1) if num_points > 1 else 0.0 point = BezierCurveGenerator.calculate_bezier_point(t, control_points) curve_points.append(point) return curve_points

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