draw_rectangle
Draw rectangles or squares with Universal Robots by specifying origin coordinates, width, and height parameters for robotic path planning.
Instructions
给定起点位置和边长,在水平或竖直方向画一个正方形 origin:画长方形时TCP的起点位置 width:长(米) height:宽(米) coordinate:圆所在的平面。z:圆形所在的平面与基座所在平面垂直,其它:圆形所在的平面与基座所在平面平行。默认值:z。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | ||
| origin | Yes | ||
| width | Yes | ||
| height | Yes | ||
| coordinate | No | z |
Implementation Reference
- The draw_rectangle tool handler. Decorated with @mcp.tool(), it registers the tool and implements the logic to draw a rectangle by calculating four waypoints based on origin, width, height, and coordinate plane, generating a URScript program with movel commands, logging it, and sending it to the robot via RealTimeClient.SendProgram.@mcp.tool() def draw_rectangle(ip: str, origin: list, width: float, height: float, coordinate="z"): """给定起点位置和边长,在水平或竖直方向画一个正方形 origin:画长方形时TCP的起点位置 width:长(米) height:宽(米) 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] + width wp_2[1] = wp_2[1] + width wp_2[2] = wp_2[2] - height wp_3[2] = wp_3[2] - height else: wp_1[1] = wp_1[1] + width wp_2[1] = wp_2[1] + width wp_2[0] = wp_2[0] + height wp_3[0] = wp_3[0] + height cmd = (f"def my_program():\n" f" movel(p{str(origin)}, a=1, v=0.25)\n" f" movel(p{str(wp_1)}, a=1, v=0.25)\n" f" movel(p{str(wp_2)}, a=1, v=0.25)\n" f" movel(p{str(wp_3)}, a=1, v=0.25)\n" f" movel(p{str(origin)}, a=1, v=0.25)\nend\nmy_program()") logger.info(f"draw_rectangle 发送脚本:\n{cmd}") 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)}")