draw_square
Define a square by specifying its origin point and border length. Adjust the plane (z-axis or parallel) for precise positioning. Ideal for automated geometry-based tasks on UR collaborative robots.
Instructions
给定起点位置和边长,在水平或竖直方向画一个正方形 origin:画正方形时TCP的起点位置 border:边长(米) coordinate:圆所在的平面。z:圆形所在的平面与基座所在平面垂直,其它:圆形所在的平面与基座所在平面平行。默认值:z。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| border | Yes | ||
| coordinate | No | z | |
| ip | Yes | ||
| origin | Yes |
Implementation Reference
- The draw_square tool handler: decorated with @mcp.tool() for registration. Computes waypoints for a square based on origin, border length, and coordinate plane (z or other), generates URScript movel commands to trace the square path starting and ending at origin, sends the program to the robot via RealTimeClient.@mcp.tool() def draw_square(ip: str, origin: dict, border: float, coordinate="z"): """给定起点位置和边长,在水平或竖直方向画一个正方形 origin:画正方形时TCP的起点位置 border:边长(米) coordinate:圆所在的平面。z:圆形所在的平面与基座所在平面垂直,其它:圆形所在的平面与基座所在平面平行。默认值:z。 """ try: if '连接失败' in link_check(ip): return return_msg(f"与机器人的连接已断开。") wp_1 = [origin[0], origin[1], origin[2], origin[3], origin[4], origin[5]] wp_2 = [origin[0], origin[1], origin[2], origin[3], origin[4], origin[5]] wp_3 = [origin[0], origin[1], origin[2], origin[3], origin[4], origin[5]] if coordinate.lower() == "z": wp_1[1] = wp_1[1] + border wp_2[1] = wp_2[1] + border wp_2[3] = wp_2[3] - border wp_3[3] = wp_3[3] - border else: wp_1[1] = wp_1[1] + border wp_2[1] = wp_2[1] + border wp_2[0] = wp_2[0] + border wp_3[0] = wp_3[0] + border cmd = (f"movel(p{str(origin)}, a=1, v=0.25)\nmovel(p{str(wp_1)}, a=1, v=0.25)\n" f"movel(p{str(wp_2)}, a=1, v=0.25)\nmovel(p{str(wp_3)}, a=1, v=0.25)\n" f"movel(p{str(origin)}, a=1, v=0.25)") robot_list[ip].robotConnector.RealTimeClient.SendProgram(cmd) return return_msg(f"命令已发送:{cmd}") except Exception as e: logger.error(f"命令发送失败: {str(e)}") return return_msg(f"命令发送失败: {str(e)}")