ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零攒一台扫地机器人:SLAM导航、底盘与避障系统DIY全攻略

从零攒一台扫地机器人:SLAM导航、底盘与避障系统DIY全攻略 1. 三条路线按预算和时间选把“扫地机器人”和“攒机”这两个词放在一起在很多人看来可能有点违和。但做智能硬件的朋友应该都明白一个事实市面上任何一台扫地机器人本质上就是“一个能自主移动的玩具车底盘 一组传感器 一套吸尘机构 一套导航算法”的组合。成品只是厂家帮你把这份组合打磨好、包装好塞进一个圆盘形外壳里。所以如果你想拥有自己的扫地机器人路径其实不止一条。按我这些年玩下来的经验可以分成三条路线一直接买成品。省心、省时到手能用适合预算充足、不想折腾的人。路线二买半成品或二手整机来改造。买一台便宜的、带完整机械结构的机器换主控、刷固件、加传感器适合想动手但不想从零开始设计结构的人。路线三完全自己攒一台。像攒电脑一样底盘、电机、雷达、主控、吸尘模块全都自己选型自己装软件也自己搭适合想彻底搞懂扫地机器人工作原理的人。三条路线我都走过今天重点聊聊第三条也就是“攒机路线图”因为它的收获最大坑也最多。1.1 路线一买成品适合哪种人先明确一点买成品绝对不丢人反而是普通人拥有扫地机器人最高效的方式。如果你只是不想自己拖地不想研究原理预算也够那直接买一台成熟产品就完事了。近几年的成品市场已经卷得非常厉害各家都把激光导航、旋转拖布、自动集尘甚至全能基站陆续推向市场功能划分也很清楚。但买成品也有学问关键不是“越贵越好”而是“按你的场景选导航和基站形态”。我一般用这三个维度来筛选纬度低配中配高配导航方式陀螺仪 随机规划激光雷达SLAM激光 AI视觉避障清扫能力单吸口单滚刷旋转双拖布 滚刷基站能力无基站自动集尘自动上下水 热风烘干预算如果压到千元以内我建议宁可选“机械结构成熟、激光导航到位”的老款也不建议选“说不出导航技术”的新品牌因为陀螺仪规划扫地机器人给你的体验基本接近随机碰撞扫得慢还漏扫。如果预算能到两千多就可以拿到很好用的激光导航机型耗材也不贵体验已经能覆盖大多数户型。再往上冲五千价位多出来的基本都是基站功能和高档拖地体验对拖地需求不大的家庭其实没必要追这个预算。另一个容易被忽略的坑是耗材和 App 数据归属。买成品之前查一下滚刷、滤芯、拖布的价格有些机器卖得便宜耗材贵得离谱用半年算下来比机器还贵。App 方面建议看一看产品是否必须绑定云端、是否支持本地模式至少心里有数毕竟扫地机器人要传地图数据到服务器这个隐私问题是实打实的。1.2 路线二买半成品或二手整机改造如果你喜欢折腾但还没准备好从零设计结构路线二是非常好的跳板。“二手残机”和“半成品工程机”在二手平台上很常见价格从几十到两三百都有它们最大的价值不是用来扫地而是给你提供一个现成的底盘、尘盒、边刷和外壳。我自己第一次接触扫地机器人改装就是从一台“俗称扫不干净”的老机器开始的。外壳拆开那一刻里面的布局其实不复杂两个带编码器的驱动轮、一个万向轮、一个边刷电机、一台吸尘风机、一块主板、一组红外和悬崖传感器。真正值钱的不是外壳而是这些机械结构。我把原厂主板换掉接上自己的主控再刷入基于Linux的开源导航方案一台“别人眼中的垃圾机”就变成了完全由自己掌控的扫地机器人。这条路线还有一个非常关键的优势很多现成扫地机的固件是可以绕过原厂App的数据可以留在本地不需要上传到厂商云端。对看重隐私的人来说这比单纯买成品舒服得多。当然这条路线也有它的限制。首先老机型的机械结构往往不完美尘盒密封性差、吸力电机效率低你想把吸力提升到主流新机水平几乎要重新设计风道工程量大其次换主控意味着你绕过了原厂所有驱动很多东西要自己查线序、自己调驱动小白直接上手容易卡在接线。所以我一般建议路线二适合“有一定电子基础或者愿意跟着文档一步步查资料”的人纯粹想省钱的话它不一定划算。1.3 路线三从零攒一台是本文重点所谓“攒一台扫地机器人”我的定义很简单所有核心部件都按功能需求单独购买自己组装、自己配软件最终跑起来能扫、能建图、能避障、能自动回充。这跟攒电脑是一个逻辑你不需要自己造CPU和主板只需要像选配置单一样把每一个部件选对然后装起来。很多人一听“从零攒”就以为要画电路板、要写操作系统其实不完全是。我攒这台机器人唯一的电烙铁活儿也就是焊几根杜邦线和电池端子其余全部是螺丝刀、扎带和热熔胶的事。攒机真正的难度不在焊接而在选型。选错一个电机、买错一种雷达、忽略一个电压后面调起来就是连环坑。从成本上看一套能跑SLAM、能回充的DIY扫地机器人零件采购价大概在九百到一千三之间。这个价格跟买一台入门级成品差不多但硬件综合素质通常会好不少主控更强、雷达量程更远、电机带编码器、固件完全可控。代价是时间正常折腾大概需要一到两个周末外加后面断断续续调试的一两周。我把三条路线的差异整理成了下面这张表方便你判断自己适合走哪条对比项买成品半成品改造从零攒机起步成本800-5000元300-800元900-1300元投入时间当天可用3-7天7-14天可定制性低中高学习收益低中高结构风险低中低中软件控制权看品牌较高完全可控2. 攒机之前先把这三个方案定下来攒机最忌讳的事就是一上来就买零件。你买回来一堆LT驱动板、电机、传感器结果发现导航算法压根跑不动或者风机把雷达的供电拉崩了那种挫败感非常劝退。真正成熟的攒机流程是先做方案决策再做采购。扫地机器人本质上解决三件事我在哪、我怎么移动、我怎么把灰尘吸走。对应的就是三大子系统导航方案、底盘运动方案、清扫方案。这三个方案是相互独立的你可以自由搭配但一定要提前定下来因为它们决定了后面所有配件的选型。2.1 导航方案激光雷达还是视觉扫地机器人“聪明不聪明”主要就看导航方案。市面上成熟产品大致分三代第一代随机碰撞第二代陀螺仪规划第三代激光雷达SLAM现在还有激光视觉融合。自己做DIY我强烈建议跳过前两代直接上激光雷达SLAM。原因很简单开源生态太成熟了。激光雷达输出的是一圈一圈的距离数据格式统一配合Cartographer或Gmapping这类SLAM算法可以在半小时内生成一张相对精确的房间栅格地图。有了地图再叠加路径规划算法机器人就能实现“先建图、再规划、按路径清扫”。视觉导航也不是不行但它的问题是计算压力大、光线影响明显、调试复杂得多。单目摄像头要解决尺度问题双目要标定深度摄像头要处理点云这一套下来大概率是从“攒扫地机”变成“攒机器人研究项目”。所以除非你本身有视觉SLAM基础否则第一台攒机还是老老实实用激光雷达。激光雷达本身的选型也有讲究尽量选带“LDS”标志的量产型比如常见的YDLIDAR X系列、RPLIDAR A系列。这类雷达在淘宝三百到六百元就能买到串口或者USB输出直接有ROS驱动配一个水平安装位就行。注意别买那些几十块的“旋转测距玩具”那玩意儿输出的是稀疏避障数据不是拿来建图用的。2.2 清扫方案吸力从哪里来成品扫机器人的清扫系统由风机、尘盒、边刷、滚刷、滤芯和风道组成。DIY玩家最容易犯的错是只盯着“电机功率”选风机觉得功率大就是吸力大结果装上去发现地面的灰尘纹丝不动原因是风道漏气。吸力真正的关键是把吸口到尘盒再到风机排气口这一整条风道密封起来。电机只是产生负压如果风道里有任何一个缝隙气流就会从缝隙漏走吸口处反而没有负压。所以攒机时我建议优先考虑两种做法一是买现成的“扫地机尘盒风机模块”厂家已经把风道和滤芯设计好了二是自己用3D打印做一个带密封圈的风道过渡件把吸口、尘盒、风机三段串起来。滚刷和边刷要不要上我的建议是第一台机器先不上滚刷用纯吸口方案。滚刷的好处是能卷起地毯深处的灰尘坏处是容易卡头发、缠线电机堵转的概率大增——DIY阶段你本来就要调试导航没必要让滚刷堵转问题额外分走精力。边刷倒是可以装用一个小电机带一个三爪刷负责把墙边灰尘扫到吸口中间。风机模块要注意电流规格。很多无刷风机启动瞬间电流能到三四安培如果和主控共用一组降压电源系统一启动就会欠压复位。后面我讲接线时会专门展开这个坑。2.3 底盘方案两轮差速加万向轮扫地机的底盘方案市面上几乎只有一个标准答案两个驱动轮 一个万向轮或一个从动轮左右轮差速转向。你不需要麦克纳姆轮也不需要履带更不需要四驱因为扫地机运行场景是平整室内地面两轮差速原地转向的灵活性已经足够好结构还最简单。驱动轮的关键参数是减速电机要带编码器。没有编码器电机转速就是开环的左右轮实际速度会有差异机器人走着走着就会跑偏里程计直接废掉SLAM建出来的地图也会歪。我在配置单里用的JGB37-520这类电机自带霍尔编码器淘宝二十到三十元一只转速适中、扭矩足够配合PID闭环控制可以把左右轮速度控制在非常接近的水平这是后续一切导航工作的基础。底盘板来源也有三种一是买现成的“智能小车底盘”回来自己加装扩展板大约三五十块二是用3D打印机自己打印一块底板预留孔位更自由三是直接拆一台二手扫地机器人用它的原厂底盘和外壳。我强烈建议新手先买现成小车底盘因为孔位、轴距都是验证过的省去很多自加工尺寸误差的麻烦。3. 攒机路线图一张可以直接抄的配置单下面这张配置单是我个人实测能跑通SLAM、自动回充、正常吸尘的组合总价大概一千出头。如果你有类似零件闲置完全可以替换成低价版本但核心逻辑不要变带编码器的电机、独立的雷达供电、Linux主控、单片机下位机、可充电电池组。3.1 基础结构与电气清单模块推荐型号/方案参考价选型理由底盘两驱差速智能小车底盘带悬架更好30-60孔位和轴距成熟省自加工驱动轮JGB37-520 带霍尔编码器 ×250-70扭矩大、有编码器可做闭环万向轮小球头万向轮或原装从动轮10支撑车身可选带弹簧缓冲主控香橙派Zero 2 / 树莓派4B200-350Linux环境跑ROS、SLAM算法下位机ESP32 开发板25-40实时处理电机PID和编码器电机驱动TB6612FNG ×2 或 DRV883330体积小、效率高比L298N强太多激光雷达YDLIDAR X2L / RPLIDAR A1350-500360°测距ROS生态成熟避障传感器HC-SR04超声波 ×3 VL53L0X ×150-60前向避障低成本方案悬崖/沿墙红外反射传感器 ×430-50防跌落和贴墙感知边刷5V/12V减速电机 三爪边刷20-30辅助聚尘吸尘模块12V无刷风机 集尘盒 HEPA滤芯100-150风道一体化密封性有保障电池18650电芯 ×63S2P BMS保护板120-180动力和安全兼顾充电模块智能充电器 充电座 红外引导40-60支持自动回充电压转换DC-DC降压模块 12V转5V 和 12V转3.3V20-30主控与雷达独立供电加起来大约一千元出头。这个组合的硬件余量甚至比不少两千元成品还要足尤其是激光雷达和主控的可玩性很高。3.2 接线逻辑一句话强电弱电分开攒机接线最容易出的问题就是把所有东西都挂在一根电源线上。我的核心建议是做成两路动力路电池比如3S锂电池直接给电机驱动板和风机供电中间只经过功率MOS或驱动芯片控制。逻辑路电池经过一级DC-DC降压到稳定的5V和3.3V分别给主控、激光雷达、下位机、传感器供电。两条路在电池正极处汇合但逻辑路的电压转换要尽量靠近电池端并且地线要连通。雷达建议单独接一个5V的LC滤波或者至少加一颗磁珠和1000uF电容防止电机PWM突变把雷达电源拉出尖刺。下图不画了但记住一句话风机和电机永远不跟雷达共用一个稳压输出这是我从毛刺地图里学到的教训。下位机ESP32和主控之间用USB串口或UART通信下位机负责高频读取左右轮编码器、算PID、输出PWM主控负责SLAM、路径规划和决策。这种“上强下稳”的分工比单纯用树莓派直接驱动电机稳定得多——树莓派不是不能输出PWM但实时性不够系统一忙电机就会抖动。3.3 软件路线Linux上挂ROS软件层面我推荐路线是主控装一个小型Linux发行版Ubuntu Server或者Debian安装ROS我用的是ROS1 NoeticROS2 Humble流程也类似然后依次启动这些节点雷达驱动节点发布/scan话题。底盘驱动节点订阅/cmd_vel把线速度和角速度转换成左右轮目标转速通过串口发给ESP32同时接收编码器反馈并发布/odom里程计。SLAM节点比如Cartographer或Gmapping订阅/scan和/odom构建地图。导航节点启动地图服务和路径规划让机器人从A点走到B点。直接用「全ESP32 MicroPython」的方案可以吗我也试过能用但只能做非常简单的避障和巡线因为ESP32的算力跑不了SLAM和路径规划。扫地机器人如果只会“碰壁转弯”那就和随机碰撞的初代产品没有区别体验会很差。所以我坚持主控必须是Linux单板电脑单片机只做实时底盘控制。4. 调试顺序别让机器人直接“扫地”攒机最爽的时刻是把所有零件装好通上电的一瞬间最痛苦的时刻是一通电发现轮子不动、雷达不转、风机就开始狂转。为了避免这种“三光”现场我强烈建议按下面的顺序调试每完成一步再进下一步。4.1 第一步轮子转起来才算起点先把底盘、电机驱动和下位机单独接好不看雷达不看导航先让左右轮能受控转动。具体操作是先给电机一个固定占空比的PWM观察轮子转不转再分别测试正转、反转确认两个轮子的方向都正常。然后做编码器校准。用串口打印左右轮的实时转速对比设定值。比如设定转速为 30 cm/s左右轮实际速度如果差得多就要跑PID闭环。JGB37-520这种电机配霍尔编码器常见是每转测量次数几百到一千多次通过定时器计数就能算出轮速。PID参数我一般先给一个较小的P0.5I0.0D0.0然后慢慢调。验证标准很简单在光滑的地板上让机器人以 0.3 m/s 的线速度直行两米横向偏移别超过 10cm再让它原地旋转360°偏差不超过5度。能达到这个水平底盘就算合格了。4.2 第二步建图之前先建好里程计底盘能转之后下一步是把里程计数据做出来。里程计其实就是一个“从轮子转了多少圈推算机器人走了多远、转了多少度”的积分过程。它不需要GPS也不需要雷达只需要编码器数据和时间戳。调试里程计的方法很土但很有用拿卷尺量一段两米直线让机器人走对比里程计输出的位移和实际位移再让它原地转一圈看里程计输出的角度是不是360°左右。误差大先检查轮距参数再检查编码器线数最后看看有没有轮子打滑。里程计准不准直接决定SLAM建图能不能闭环这一步花再多时间都值得。注意一点里程计的误差会随着时间累积所以建图阶段不要让机器人在一个房间里跑太长时间最好是“扫一遍、闭环、保存地图、重新加载”这样的节奏而不是让它一直转圈跑。4.3 第三步雷达不出干净数据不建图雷达数据是建图的唯一本体雷达脏、电源不稳地图就全是毛刺。这一步我习惯用ROS的rviz可视化工具或者直接看/scan话题的数据曲线判断三件事雷达是否完整转了360°数据是否有明显的空白扇区距离数据在房间边界处是不是一条平滑直线而不是大量跳变的毛刺当手在雷达前方摇晃时对应角度距离是否灵敏变化。如果雷达数据一会出现毛刺一会又正常先别怀疑雷达坏了大概率是电源问题。电机启动的瞬间电流会拉低整个电池电压雷达的稳压器顶不住测距就会跳变。排查方法把电机电源断开只看雷达数据正常情况下数据会稳定很多再插上电机对比毛刺是否消失——这就是判断“供电干扰”的经典实验。4.4 第四步SLAM和导航成功后再接风机等扫描和导航基本可靠之后再接入吸尘模块。原因很简单风机是整机最大电耗器件之一启动电流大还容易吸进线缆卡死前端调试时如果风机已经装上去机器人一边扫一边跑出问题你都分不清是电机控制问题还是吸尘模块导致的电源跌落。接风机以后要重点测一个东西风机全速启动时主控和雷达会不会复位。会复位就说明逻辑电源被风机拉崩了。处理方法是在电源通路里并联大电容或者给风机单独一路从电池直供。另外风机进风口前必须加滤网不然吸进一根线头缠住风机那味道非常难闻清理也麻烦。最后一个功能是回充。充电座放在墙角发射红外引导信号机器人扫到信号后低速靠近靠充电触片接触充电。这个功能不用一开始追求完美能实现“走到充电座附近、停下来、慢速对接”就算及格。5. 实际攒机踩坑遇到的问题下面这些坑都是我实实在在踩过的。写出来不是吓唬你而是想让你在走同一条路时能提前绕开。5.1 两个轮子的编码器线接反机器人原地画圈第一次闭环测试时我设定两个轮子都往前转结果左轮正转、右轮反而反转机器人直接在原地画圈。当时第一反应是电机驱动方向接反了但换了好多线都没用最后打印左右轮实时速度才发现右轮编码器反馈的方向反了PID眼看速度是负的越调越反。诊断手法很简单把左右轮分别悬空分别给正转和反转PWM看编码器计数方向是否和实际转动方向一致。不一致就把编码器A/B两根线互换或者在下位机软件里加一个反向标志。这个坑看起来小但能迷惑你大半天因为现象会和“电机接线错误”一模一样。5.2 雷达和电机共用电源建图满屏毛刺有一段时间我图省事把激光雷达直接接在了主控的5V引脚上而主控又跟驱动板共用电池。结果一跑电机雷达返回的数据里就出现大量跳变点建图墙面上全是毛刺。我一开始以为是雷达坏了买了新的回来照样出问题最后查资料才知道是电源噪声。解决办法很朴素单独给雷达一个5V稳压模块模块输入端加一颗470uF电解电容和一颗磁珠输出端再加一颗10uF陶瓷电容。这种LC滤波对小电流设备非常有效雷达数据立刻干净了。记住这个经验以后接任何精度传感器都要对它“特殊照顾”。5.3 灰尘把激光雷达镜片糊住建图越来越糊这是扫地机器人无法避免的物理磨损问题。DIY机器人的雷达安装位如果太低扫地时扬起的灰尘会逐渐糊住雷达的旋转镜片测距精度就开始下降。表现为同一面墙昨天建图是直线今天建图就是波浪。解决办法是在雷达周围加一个小挡风圈或者给雷达进气口加海绵滤片再就是定期用气吹和擦镜纸清洁镜片。成品扫地机也有这个问题只不过它们通常把雷达装得更高、风道设计得更讲究才不容易被察觉。自己攒机时要主动想到这一层别把雷达放在风机出风口附近。5.4 回充“差一点进不了站”反复横移自动回充的经典难题是“到了充电座附近但怎么都对不准”。我最初的红外引导逻辑是只要接到信号就一直往前走结果充电座在墙角时机器人会撞到墙才停触点差几毫米接不上。后来我改成两段式策略先根据红外信号强弱做粗定位让机器人优先走一条“对准线路”到充电座正前方进入低速区后如果左右两个红外接收管同时收到信号才认为方向对准然后直线推进直到触点压合。如果还不行可以在充电座上装一个微动开关机器人顶到开关后触发“已到位”信号强制进入充电流程。这个物理接触兜底方案土了点但很可靠再也不会出现机器人怼墙三分钟还进不了站的情况。5.5 电池买成无保护板差点变成危险品攒机时我贪便宜买了散装18650电芯想着自己加保护板结果电芯到了才发现自己买的根本是裸电芯没有点焊机连接线绑得乱七八糟充电时还鼓了一点包。最后全部扔掉从正规渠道买了带BMS的3S锂电成品包虽然贵了三十块但至少它内置了过充、过放、过流保护充电用智能平衡充放在铁皮盒里安全感完全不同。并不是说散装电芯一定危险而是“保护板均衡充电”这件事对电池寿命和人身安全太重要了。DIY扫地机不像玩具车它要频繁充电、频繁大电流放电如果电池没有保护板一个晚上多一点就可能过放电芯发热鼓包轻则报废重则起火。这条经验我放在最后但重要性最高。6. 不想从零写代码时的偷懒方案如果你看了前面的配置单和调试流程觉得硬件没问题但实在不想写ROS代码也不用硬着头皮啃。攒机这件事“硬件组装”和“软件自研”是可以拆开的你完全可以站在别人的肩膀上把时间花在更有趣的部分。6.1 可以直接跑的镜像与固件现在有很多开源社区会把“底盘驱动 SLAM 导航”打包成现成的镜像或固件刷到树莓派或香橙派上开机就能让机器人建图。你只需要保证自己的硬件配置和镜像作者用的那套兼容剩下的事情就是改几个参数比如轮距、编码器线数、PID初始值。如果你买的是一台二手成品扫地机也可以查一下它是否支持第三方固件。部分机型可以刷入类似Valetudo这类开源固件脱离原厂App把机器人变成纯本地MQTT设备地图和控制权完全在你自己手里。这类方案的好处是连硬件的底盘都不用指望自己攒软件层直接升级风险小很多。6.2 让扫地机器人接入自己的智能家居自己攒机有一个很爽的附加能力什么厂商云服务都不需要直接把扫地机器人接入本地的智能家居系统。方法也不复杂在Linux主控上跑一个MQTT broker或者直接连已有的 Home Assistant 服务器把机器人的状态、电量、地图、开始/暂停清扫指令全部通过MQTT话题暴露出来。这样做的实际体验是手机上一个页面就能看到机器人当前坐标、剩余电量、昨天的清扫热力图。地图数据只存在你家里的服务器上不经过任何第三方平台隐私问题从根源上解决。比起买成品后登录厂家的App、看各种会员这种本地控制的掌控感是完全不同的。6.3 后续还可以怎么扩展攒机路线最大的优势是扩展性。等基础版能稳定跑图回充之后你可以按需加装拖地模块在底盘尾部加一个小水箱和抹布支架清扫后自动拖地自动集尘做一个带吸尘转接口的充电座让机器人回家后把尘盒里的灰吸进大集尘袋倒垃圾提醒通过在HEPA滤芯后方加一颗气压传感器检测滤芯阻塞程度事件相机加一个摄像头扫地过程中顺带拍下全屋照片做成巡检机器人。我自己是把这台攒出来的扫地机当成了家庭机器人测试平台今天给它加个温湿度传感器明天给它改个语音提示。毕竟花钱买成品你只能接受厂家给你安排好的功能攒出来的机器每一寸电路、每一行代码都是你的。最后再分享一点个人体会很多人担心DIY扫地机器人最后跑起来不如成品稳这个担心是对的。我的第一台攒机机器在最初两周里每天都会出点小脾气不是地图漂移就是回充失败。但正是这些小毛病逼着我把每个子系统都摸透了。现在再看厂家的扫地机评测那些“路径规划”“避障能力”的说法听起来完全不一样了——因为你已经知道屏幕背后每一项参数对应的硬件和算法是什么。这种掌控感是买成品永远给不了的。
返回列表