用自然语言玩转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)


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

机智新语

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

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

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

打赏作者

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

抵扣说明:

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

余额充值