资讯详情

资讯详情

小智AI×ESP32-S3:语音视觉协同的桌面机械臂改造实战

你有没有想过桌上那个只能陪你聊天的小智 AI有一天能真的“伸出爪子”帮你拿东西、按开关、开抽屉这个想法听起来像是实验室里的具身智能项目但实际上用一块一百多块钱的 ESP32-S3、一个几百块的总线舵机机械臂和一颗普通摄像头就能把一个纯语音对话的智能音箱升级成拥有“手臂和眼睛”的桌面机器人。我前后折腾了大概三周把整个链路从“单片机能说话”一路做到“说一句话它就识别目标、规划轨迹、抓取给你”。这篇文章把完整的端到端方案拆开讲清楚包括硬件选型的思路、语音与视觉和运动的协同逻辑、机械臂角度换算与偏差校准以及最终整合成一个可复现 Demo 的全过程。适合手里已经有一台小智 AI、想往里塞机械臂的朋友也适合想从零自己搭一套“语音视觉机械臂”桌面级具身智能底座的嵌入式玩家。1. 从“能聊天”到“能动手”这个项目的整体架构与工作流程1.1 为什么选小智 AI 作为改造底座小智 AI 在开源社区里之所以受欢迎核心原因是它把“语音交互”这件事做得很完整唤醒词检测、离线/在线语音识别、大模型对话、语音合成这些模块都已经打通而且代码结构清晰跑在 ESP32-S3 上非常流畅。如果从零写一套语音助手再去扩展机械臂光是音频前端和流式识别就够折腾好一阵子。把它当成改造底座还有一个额外好处小智 AI 天然具备麦克风阵列和外放接口这意味着机械臂执行完动作以后它能用语音回答你“我已经把红色杯子放到左边了”整个交互闭环是原生支持的不需要额外加语音模块。我的建议是不要一上来就动小智的语音主链路先把它当成一个“能听懂人话的调度中心”机械臂和视觉都是外围执行器通过串口或网络挂上去。1.2 三大子系统的分工与协同关系整个系统的物理构成可以拆成三块语音与大脑ESP32-S3 开发板负责唤醒词监听、ASR语音识别、意图理解以及把所有动作编排起来。眼睛一台 USB 摄像头或 ESP32-CAM负责拍摄工作台画面、识别目标物体、解算物体在空间中的位置。手臂4 自由度总线舵机机械臂通过 UART 串口接收关节角度指令执行抓取和搬运动作。这三块之间不是简单的串联而是“大脑调度、眼睛感知、手臂执行”的协作模式。语音题取出用户意图后ESP32-S3 先把任务拆解成“识别目标 → 获取坐标 → 规划轨迹 → 驱动舵机 → 语音反馈”这几步每一步都有一个明确的输入和输出。1.3 整条链路的信号流一图看懂我最初画流程图的时候走了不少弯路现在用文字把它理顺唤醒 识别 解析 小智小智 → 帮我拿红色杯子 → 目标杯子, 动作抓取 ↓ 发送视觉请求给摄像头/算力板 ↓ 返回目标在相机画面的像素坐标 ↓ 像素坐标 → 相机坐标 → 机械臂基座坐标空间换算 ↓ 逆运动学求 4 个关节角 轨迹插补 ↓ UART 发送角度帧 → 舵机转动 → 夹爪闭合 ↓ TTS: 已经拿起来了每一步的数据格式和接口是固定的意图就是一个 JSON 结构坐标就是三个浮点数关节角就是四个整数。这样做的好处是任何一个子系统都可以单独替换比如把摄像头换成一个带深度信息的 Intel RealSense或者把机械臂从 4 轴升级到 6 轴主控代码几乎不用重写。2. 硬件选型与通信架构ESP32-S3 的角色定位和模块取舍2.1 ESP32-S3 凭什么当“大脑”选 ESP32-S3 不只是因为它便宜而是因为它在这个场景里的适配度确实高双核 240MHz Xtensa LX7一个核跑语音识别和音频流另一个核处理运动控制和视觉结果解析并行不卡顿。WiFi BLE 双模WiFi 可以连接本地大模型做语义理解也可以作为服务端接收视觉算力板的结果。向量指令加速在本地跑轻量级唤醒词模型和关键词识别时S3 有额外的 AI 指令扩展比老款 ESP32 有明显性能优势。丰富的 UART 和 I2S一个 UART 给机械臂控制板一个 UART 给调试日志I2S 外接麦克风阵列资源刚好够用。有一点要提醒如果你用 ESP32-S3 直接驱动摄像头做目标检测分辨率别超过 240x320且要牺牲一部分语音实时性。所以我在这个项目里做了分工——ESP32-S3 专心做语音和调度视觉交给外置算力模块这个放到后面讲。2.2 机械臂本体与驱动方式的选择桌面级机械臂驱动方案常见的有三种我做了对比方案精度反馈能力接线复杂度成本适合场景普通 PWM 舵机低无角度反馈无每舵机 3 线极低纯玩具演示总线舵机半双工串行中高0.24° 级支持位置、电压、温度回读串联一总线中本项目的首选步进/伺服闭环电机高编码器信号需驱动器电源高高精度抓取任务我选的是总线舵机方案。原因很简单它有反馈。机械臂在运行过程中如果某个关节被卡住或者受到外力阻挡总线舵机会把实际角度和负载电流回传主控可以立即停止下一步动作避免扫齿或烧舵机。对于语音交互场景这个反馈还能用来做“动作完成确认”——只有收到所有关节到达目标角度的回包语音才会播报“完成”。半双工串行总线的接线很有优势4 个舵机串联起来只需要一根信号线和一根地线接到主控的 UART不像 PWM 舵机要每个引脚单独接线。我用的是 4 自由度结构底盘旋转 大臂 小臂 夹爪腕部旋转加上一个两指平行夹爪抓取乒乓球、纸杯、遥控器这类物件完全够用。2.3 视觉硬件的两种落地路径视觉部分有两种落法取决于你是“极简党”还是“可扩展党”路径 A纯 ESP32-S3 摄像头方案极简直接外接 OV2640 或 OV7725 摄像头跑一个轻量级的颜色识别或 QR Code 识别。优点是零额外硬件成本、低延迟缺点是识别能力和光线鲁棒性差复杂背景下基本不可用。路径 B外置算力板方案推荐我实际用的是RK3588 单板 USB 摄像头。摄像头采集画面RK3588 上跑 YOLOv5s 或轻量化检测模型然后把目标中心的像素坐标通过 WiFi/UDP 发给 ESP32-S3。如果以后想升级到 6D 位姿估计或视觉 SLAMRK3588 的算力也能扛得住。这个架构保留了完整的算力升级空间主控不关心视觉算法细节只消费坐标结果。如果你的预算更紧张南京这边很多玩友也在用 M5Stack 的 UnitV2 或者 K210 摄像头模组跑颜色块识别效果能用但检测种类非常受限。3. 视觉系统怎么给机械臂“指路”标定、识别与坐标换算3.1 摄像头固定方式决定了标定模型机械臂和摄像头的位置关系有两种对应的标定方法和算法完全不同Eye-in-Hand眼在手上摄像头装在机械臂末端跟着手臂一起动适合近距离精细操作但标定复杂需要手眼标定矩阵的动态更新。Eye-to-Hand眼在手外摄像头固定在工作台上方俯拍整个操作区域标定一次就能用适合桌面级抓取。我选的是Eye-to-Hand理由很实在桌面抓取的精度要求不高俯拍视角能看到整个机械臂和所有目标不需要考虑末端运动遮挡问题标定只要做一次。3.2 手眼标定的实际操作不必上张正友标定板的笨办法很多教程一上来就让你打印棋盘格标定板然后拍几十张照片跑 OpenCV 的 calibrateCamera。这一套在固定俯拍场景下其实是杀鸡用牛刀。因为我只需要机械臂基座坐标和像素坐标之间的映射关系完全可以用四点对应法直接求单应性矩阵。具体做法让机械臂末端依次移动到工作台上的 4 个已知物理坐标点比如矩形的四个角记录每一点的机械臂基座坐标 (Xw, Yw)。同时在摄像头画面里记录这 4 个点对应的像素坐标 (u, v)。用 OpenCV 的cv2.findHomography()求出 3x3 转换矩阵 H。之后任何目标物体的像素坐标 (u, v)左乘 H 矩阵就能得到机械臂基座坐标 (Xw, Yw)。import cv2 import numpy as np pixel_pts np.array([[210, 180], [380, 190], [390, 320], [190, 310]], dtypenp.float32) arm_pts np.array([[120, 150], [220, 150], [220, 250], [120, 250]], dtypenp.float32) H, _ cv2.findHomography(pixel_pts, arm_pts) np.save(homography_matrix.npy, H) # 使用时 pixel np.array([[[300, 240]]], dtypenp.float32) arm_pos cv2.perspectiveTransform(pixel, H) print(机械臂坐标:, arm_pos[0][0])注意一个细节四点对应法要求四个点尽量覆盖机械臂的整个工作范围且不能有任意三点共线否则矩阵会退化。我是直接把机械臂移动到工作空间四个极限位置来取点的比用标定板更贴合实际使用条件。3.3 目标检测YOLO 之外还有更轻量的选择视觉识别这一步我踩过不少坑。最初在 RK3588 上跑了 YOLOv5s识别率确实高但处理一张 640x480 的图像要 45ms 左右加上前后处理整体帧率能到 15fps对于静态物体抓取是够的。但 YOLO 的部署流程比较重要装 PyTorch、转 ONNX、调 NMS 参数Proj 的维护成本挺高。如果只做固定几种物体的抓取我后来发现传统颜色分割 轮廓筛选反而更稳定、更快。把摄像头画面转到 HSV 空间通过颜色阈值锁定目标区域再求轮廓的最小外接矩形的中心点处理一帧只花 3ms而且代码不超过 30 行。import cv2 import numpy as np def find_object_center(frame, lower_hsv, upper_hsv): hsv cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) mask cv2.inRange(hsv, lower_hsv, upper_hsv) kernel np.ones((5, 5), np.uint8) mask cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if not contours: return None c max(contours, keycv2.contourArea) M cv2.moments(c) if M[m00] 100: return None cx int(M[m10] / M[m00]) cy int(M[m01] / M[m00]) return (cx, cy), cv2.boundingRect(c)颜色分割的鲁棒性问题是老生常谈光线一变阈值就废。我的解决方案是在代码里做一个“动态采样校准”——每次启动时把目标物体放到工作台中央程序自动框选 ROI 并统计平均 HSV 值再以这个均值为中心生成 ±20 的阈值范围。这样即使早上和下午光线不同系统也能自适应。3.4 像素坐标到机械臂坐标的补偿细节单应性矩阵是把像素坐标映射到机械臂基座坐标但如果目标物体有一定高度比如一个杯子不是一张纸片映射结果会偏。因为俯拍相机是透视投影物体越高其顶部在图像中的位置偏移越大。补偿办法有两种测物体高度建立查表偏移提前量好每种物体的高度离线算出不同高度下坐标偏移量抓取时直接减去偏移。识别底部而不是顶部用夹爪去抓物体时需要的是物体底部在桌面上的位置所以检测算法里要尽量选择轮廓的下沿中心点而不是整个轮廓的中心。我的经验是对于高度小于 5cm 的物体乒乓球、小零件直接用轮廓中心映射过去误差在 8mm 左右完全能接受对于 10cm 以上的杯子必须用底部中心点或者查表偏移否则夹爪会撞到杯壁。记住一个常识视觉引导抓取的误差70% 来自标定和坐标换算而不是识别算法的准确率。先花时间把稳像、畸变、映射这三个环节做扎实比追求更高精度的检测模型划算得多。4. 机械臂控制与轨迹规划从角度换算到偏差校准的完整链路4.1 几何法求解四自由度逆运动学机械臂控制的核心是把“末端要到达的空间坐标”换算成“每个关节要转多少度”。4 自由度机械臂的逆运动学不需要用 ROS 里那些复杂的数值优化库几何法就够了。我把机械臂抽象成平面两连杆结构大臂 L112cm小臂 L210cm加夹爪 L38cm底盘旋转角直接由目标点的 arctan(y/x) 算出。腕部姿态角用一个 AI 对话生成的语义修正——比如用户说“水平抓取”或“垂直抓取”时设定不同的腕部角度。大臂和小臂的角度用余弦定理cos(θ2) (x² y² - L1² - L2²) / (2 * L1 * L2) θ2 acos(clamp(cosθ2, -1, 1)) // 小臂相对大臂的角度 θ1 atan2(y, x) - atan2(L2 * sinθ2, L1 L2 * cosθ2) // 大臂相对水平的角度这个公式看着简单但有几个重要细节容易被坑到。第一acos的输入必须做 clamp否则浮点误差会导致出现 NaN第二机械臂如果存在“关节方向相反”的情况比如某个电机正转对应角度增大但几何模型里是减小必须在代码里做映射翻转第三实际的舵机角度范围不能到 180°一般总线舵机有效范围是 0°~270°但机械臂结构会限制在 10°~170°左右做轨迹规划时必须做边界裁剪。4.2 总线舵机的控制协议与 UART 通信实现我用的总线舵机支持半双工串行通信9600bps 或 115200bps 均可指令帧结构很直观帧头舵机ID指令码参数校验和0x55 0x550x01~0xFE0x03写角度角度值 速度 等待标志累加和控制单个舵机的角度写帧可以参考这个协议格式55 55 01 03 2C 01 28 00 02 校验参数里角度用两个字节的小端表示例如 0x012C 就是 300对于 0.24°/bit 的精度对应 72°速度参数控制舵机转动快慢等待标志表示是否阻塞到目标角度。在代码里可以封装一个结构化命令发送函数先组帧再补累加校验UART 发送后等待舵机返回包超时重发。ESP32-S3 侧我用的是UART2波特率 115200rx_buffer_size调大一点避免总线舵机回传数据时把缓冲区冲爆。要注意半双工总线的方向控制发送的时候把 GPIO 拉到发送模式发完立刻切回接收模式。总线舵机的回传包最快可能在发送结束 1ms 内就返回所以切换延迟要尽可能低。4.3 轨迹插补别让机械臂“甩”过去如果直接把末端的目标点换算成四个关节角一次性发给舵机机械臂的运动会非常突兀——速度全开地冲过去轻则把目标撞飞重则抖动扫齿。正确做法是做梯形速度轨迹插补。我实现的是一个简单的多段线性插补把末端从当前点到目标点的直线路径分成 20~50 个插补点。每个插补点都做一次逆运动学得到一组关节角。把关节角序列按 50ms 间隔依次发送给舵机。这样做的好处是让大臂和底盘同时运动看起来像“平滑地伸过去”而不是“弹射起步”。代价是每次路径规划的计算量上去了但在 ESP32-S3 上跑 50 次三角函数运算毫无压力耗时不到 5ms。def plan_linear_path(start_point, end_point, steps30): path [] for i in range(steps 1): t i / steps x start_point[0] (end_point[0] - start_point[0]) * t y start_point[1] (end_point[1] - start_point[1]) * t z start_point[2] (end_point[2] - start_point[2]) * t path.append((x, y, z)) return path实际上每一步之间只是坐标的微小变化换算出来的关节角变化也不会太大舵机能很从容地跟上。4.4 机械臂偏差校准每个关节都需要“零点修正”这部分是整个项目里最磨人但也是最关键的环节。总线舵机的精度虽然比 PWM 舵机好但机械装配的偏差是躲不掉的舵机盘的安装角度不可能绝对精确、3D 打印件的尺寸误差、连杆之间的连接间隙这三点叠加在一起直接按理论角度发指令末端的实际位置和理论位置可能偏 1~2cm。对抓取来说1cm 的偏差就意味着夹爪指到杯壁而不是杯口。我的校准方法分成两步第一步角偏移校准。把机械臂摆到一个“机械零点”位置用尺子和角度尺量出每个关节的实际角度和理论角度对比得到每个关节的偏移量 offset。之后每次发角度指令都实际发送desired_angle offset。第二步末端误差补偿。角偏移校准完之后仍然有残余误差因为连杆间隙是非线性的不同姿态下间隙对末端位置的影响完全不同。我采用的方法是在工作空间取 9 个采样点3x3 网格让机械臂依次到达这些理论坐标实际量测末端位置得到误差向量表。抓取时先查最近邻误差向量做一次预补偿一般能把残余误差从 12mm 压到 4mm 以内。这套方法不需要额外的光学测量设备一把尺子加一个量角器就能做校准一次大概花一个半小时。校准数据存在 JSON 文件里上电加载后续就不用再动了。5. 端到端串联实战语音指令到机械臂抓取的全流程 Demo5.1 意图解析与任务编排这一层把自然语言转换成结构化的控制指令。我最初尝试在 ESP32-S3 本地用关键词匹配用户说“抓”、“拿”、“取”、“捡” → 动作GRASP用户说“放”、“摆”、“挪” → 动作PLACE目标物体名词 → 从内置词表获取物体颜色/类别这在固定场景下够用而且零延迟。但如果想让小智的对话能力更聪明一点可以走 WiFi 把文本发给本地大模型接口比如 Ollama 跑的 Qwen 或 Llama让模型输出结构化 JSON再回传解析。我用的是本地大模型方案因为它能理解更复杂的指令“把左边的红色杯子放到右边的盘子里”——这里涉及“左/右”的空间语义关键词匹配就非常吃力了。大模型返回的 JSON 结构{ action: MOVE, target: red_cup, location: left, destination: right_plate }ESP32-S3 拿到之后从 JSON 解析出 target 对应的颜色阈值再触发视觉模块去找左边区域的红色目标找到后计算坐标规划路径执行抓取和搬运。5.2 一条完整的“语音抓杯子”流水线假设系统已经就绪工作台上放着一个红色杯子用户说“小智小智帮我把红色杯子拿过来。”实际运行过程唤醒与识别约 300msESP32-S3 上的唤醒词引擎检测到“小智小智”开始采集语音流式识别出“帮我把红色杯子拿过来”。意图解析约 800ms音频文本通过 WiFi POST 到 RK3588 上的 Ollama 服务返回 JSON{action: FETCH, target: red_cup}。视觉定位约 100msESP32-S3 通过 UDP 向 RK3588 的视觉进程发送detect redRK3588 返回目标中心的像素坐标(u, v, w, h)。坐标换算约 1msESP32-S3 将像素坐标乘以手眼标定矩阵 H得到机械臂基座坐标(x, y, z)。逆运动学与轨迹规划约 10ms计算 4 个关节的目标角度生成 30 段插补轨迹。执行运动约 1.2sUART 逐段发送舵机角度指令每帧间隔 50ms等待舵机回读到位。夹爪动作约 500ms夹爪闭合到位总线舵机反馈力矩到达阈值确认已抓住。语音反馈ESP32-S3 合成语音播报“已经帮你把红色杯子拿过来了。”从用户说完话到夹爪闭合整体耗时约 3 秒。这个数字比我预想的要好主要是因为在 2.4GHz WiFi 局域网内UDP 传输坐标数据只有几十微秒真正占时间的是在线大模型的那 800ms。5.3 通信协议设计设备之间如何对齐语言多个模块之间打通数据链路是端到端项目最容易被忽视、后期最费时间的部分。我在设计时定了一个原则所有模块之间的通信必须是文本 JSON而不是二进制结构体。原因是调试成本天差地别。用 serial 调试器看到{action:FETCH,target:red_cup}和看到一堆十六进制55 55 01 03 2C 01前者的可读性要高太多。ESP32-S3 的 JSON 解析我用的是ArduinoJsonRK3588 那边解析用的是 Python 的json模块两边天然兼容。UDP 通信的报文格式// 从主控发给视觉模块 {cmd: detect, target: red_cup, region: [100, 80, 500, 400]} // 从视觉模块返回主控 {status: ok, x: 320, y: 240, w: 45, h: 60}5.4 主控程序的状态机设计ESP32-S3 上的主控程序不能写成线性流程因为语音识别是异步的、视觉返回是异步的、舵机运动也是异步的。我定义了一个简单的状态机IDLE → WAKEUP → LISTENING → PARSING → VISION_REQ → VISION_WAIT → IK_SOLVE → MOVING → GRIPPER → FEEDBACK → IDLE每一个状态都有超时进保护比如VISION_WAIT超过 2 秒没收到视觉结果会自动回到IDLE并语音提示“我没找到目标”。这个超时机制非常重要——没有它系统一旦在视觉阶段挂住机械臂就会悬在半空只能断电复位。6. 踩坑记录与调优实测中那些难缠的问题和解决思路6.1 总线舵机供电不足导致的重启循环第一次把 4 个舵机接上 ESP32-S3 的 5V 引脚时机械臂一启动整个板子就重启。原因是总线舵机峰值电流轻松超过 1.5A而开发板的稳压芯片根本供不了这个电流电压瞬间跌落导致 ESP32-S3 保护性重启。解决方法是外接独立的 7.4V 2A 锂电池或 5V/5A 电源适配器给舵机供电主控板用的是自己的 USB 供电两者共地不共电。这个共地的细节尤其关键不共地会导致串口信号不稳定舵机回传数据全是乱码哎这个问题我排查了整整一晚上才发现是地线飞了。强烈建议在舵机电源线上加一个 470μF 以上的电解电容做储能缓冲抓取瞬间电压跌落会明显改善。6.2 视觉坐标抖动单帧检测的噪声处理颜色识别方案的输出坐标并不是每帧都稳定光照变化和反光会让物体中心点上下跳动 3~5 个像素换算到机械臂坐标就是 2~4mm 跳动。如果直接把这个抖动坐标拿去做路径规划机械臂末梢会小幅震颤抓取失败率明显上升。我的处理是在视觉模块里加了一个简单的滑动平均滤波器——取最近 5 帧的坐标平均值只有当连续 5 帧都检测到目标且坐标方差小于阈值时才认为目标稳定返回最终坐标。这样处理之后坐标抖动从 3~5 像素降到了 1 像素以内抓取稳定性大幅提升。6.3 舵机温度漂移长时间运行的精度衰减连续运行 20 分钟后机械臂的末端位置会慢慢发生偏移尤其在大臂和小臂舵机上极其明显。后来查了舵机数据手册才明白总线舵机的位置反馈来自舵机内部电位器随着温度上升机械结构和电位器阻值都会发生变化零点位置会漂移。针对这个问题的短期方案是每次执行任务前先“复位归零”——让所有舵机回到机械零点位置再根据目标点重新规划。长期方案是升级成带磁编码器的闭环舵机比如步进一体机但成本会上一个台阶目前这个桌面级项目用归零方案就够了。6.4 一个让定位精度大幅提升的细节标定矩阵的刷新周期手眼标定矩阵 H 不是永久的——如果你移动过摄像头支架、或者拧过机械臂底座的螺丝H 矩阵就会失效。我用了一个很土但可靠的手段在机械臂底座旁边贴了两枚 Aruco 码标记每次系统启动时摄像头先检测 Aruco 码相对于画面中标准位置是否发生了偏移如果超过阈值就提示自动重新标定。这个方法省去了每次手动搬标定板的麻烦。6.5 针对初学者的模型收敛小建议如果你想直接复刻这个项目又从来没有接触过机械臂控制我的建议是不要一上来就做 4 自由度整机联调。先把每个舵机单独转起来记录角度范围和实际转动方向再做 2 自由度的平面轨迹调试最后才接完整的 4 轴运动。分阶段调试可以让问题定位快得多否则一旦整机运动异常你根本分不清是逆运动学算法错了、舵机接线错了、还是某个关节装反了。在调试过程中我用得最顺手的调试手段是用一根记号笔绑在夹爪上让机械臂在纸上画一个预设的方框路径——视觉上非常直观每次调整参数都能立刻看到偏差方向和大小。7. 个人经验总结与下一步扩展做这个项目的过程中我最大的体会是语音机器人加机械臂真正的难度不在任何一个单一模块而是端到端协同。语音识别单独跑没有任何问题舵机单独转也很听话但把它们接到一起你就会发现延迟、通信格式、异常处理、供电电磁干扰这些问题全冒出来了。工程上最花时间的永远是这些“接缝”的地方。另外一个很深的感悟是精度不够速度来凑速度不够反馈来凑。当机械臂定位偏差比较大的时候与其死磕机械结构加工精度不如把循环过程做稳——检测到位、试碰、微调用闭环反馈去吞掉系统误差。这个思路对桌面级项目尤其适用。如果后续还想扩展我列几个方向供参考升级到 6 自由度机械臂并接入 IK 库比如 ikpy能抓取的物体范围和姿态灵活性会大增。视觉模块从单目 RGB 升级到带深度信息的 RGBD 方案配合 3D 视觉算法实现真正的三维空间定位和避障。把主控从 ESP32-S3 升级到 RK3588 单板在边缘端直接跑完整的视觉 SLAM 和语义地图构建让小智真正具备环境理解能力而不是只认固定颜色块。关注一下“具身智能”方向的开源社区成果有很多现成的机械臂强化学习框架可以参考。这个项目折腾下来最大的成就感不是机械臂成功抓起了杯子而是看着一个原本只会“说话”的小智能助手第一次对物理世界有了操作能力。技术栈覆盖了嵌入式、语音、视觉、运动控制、通信协议几乎每一个环节都能延伸出很多可以深入的方向。对想入门具身智能的嵌入式开发者来说这是一个非常好的起点。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →