
1. 一台扫地机拆出来的全栈知识地图第一次把一台开源扫地机器人完整拆开、跑通建图、再自己改了一版路径规划算法之后我最大的感受是这东西根本不是什么高级玩具它是一套被压缩进塑料壳里的机器人工程课程。你花几百块买一台开源机型等于同时拿到了运动控制、传感器融合、SLAM、路径规划、嵌入式开发、电源管理这六七门课的实体教具。而且它比实验室里的教学平台便宜太多摔了不心疼改坏了还能重买。这篇内容我想干一件事把开源扫地机器人全栈拆解这件事讲透。不是那种开箱测评式的扫得干不干净而是从硬件架构、传感器布局、主控选型一路讲到固件烧录、建图调参、路径算法二次开发。适合谁看三类人一是想入门机器人但不知道从哪下手的学生或转行者二是做嵌入式、想补机器人系统知识的工程师三是纯粹好奇这玩意儿到底怎么知道自己在哪的动手党。看完你至少能明白一台会扫地的机器里每个模块在干什么、为什么这么设计、你想改的话从哪改。我前后拆过三台不同方案的开源机型踩过的坑包括但不限于激光雷达数据读出来全是噪声、里程计标定错了导致地图歪成麻花、电池管理板烧过一次。这些经验我都会揉进下面的内容里尽量让你少走弯路。2. 全栈拆解的整体思路为什么按感知-决策-执行来切2.1 拆解一台扫地机本质是拆一条机器人技术栈很多人拆扫地机是从外壳-电池-电机-主板这种物理顺序来的拆完一堆零件摆桌上但还是不知道它们怎么协同。我更推荐按机器人学的经典三层结构来切感知层、决策层、执行层。这个切法的好处是它直接对应了机器人工程的核心知识模块你拆完不是得到一堆零件而是得到一张知识地图。感知层负责我在哪、周围有什么对应的是激光雷达、陀螺仪、加速度计、悬崖传感器、碰撞传感器、里程计。决策层负责我该去哪、怎么去对应的是主控芯片上跑的SLAM算法、路径规划、任务调度。执行层负责我怎么动起来对应的是电机驱动、轮子、边刷、滚刷、风机。三层之间靠总线通信通常是UART、I2C或SPI连起来形成一个闭环。为什么这个切法对学习最有效因为机器人工程里最难的不是单个模块而是模块之间的耦合。比如激光雷达告诉你前面有墙但如果你不知道自己的精确朝向这个前面就是错的。所以感知层内部要先做传感器融合把雷达、陀螺仪、里程计的数据对齐到同一个坐标系里。这个对齐的过程就是机器人工程里最核心的基本功之一。2.2 方案选型的几个关键分岔口开源扫地机器人在方案上有几个明显的分岔口选错了后面会很痛苦我先把这几个岔口讲清楚。第一个岔口是定位方案用激光雷达LDS还是视觉摄像头激光雷达方案成熟、精度高、算法资料多但成本高、结构复杂要转起来。视觉方案便宜、结构简单但对光照敏感、算力要求高。目前开源社区里主流的还是激光雷达方案因为SLAM算法比如Gmapping、Cartographer对激光数据的支持最完善。如果你是新手我强烈建议从激光雷达方案入手别一上来就挑战视觉。第二个岔口是主控平台用STM32这类MCU还是树莓派这类Linux单板机还是两者结合纯MCU方案实时性好、功耗低但跑不动复杂SLAM。纯树莓派方案算力够但实时控制比如电机PID容易受系统调度影响。所以主流做法是双核架构MCU负责底层实时控制电机、传感器采样树莓派负责上层算法SLAM、规划两者通过串口通信。这个架构你理解了后面看任何一台扫地机的框图都不会懵。第三个岔口是开源程度有些机型只开源了上层算法底层固件是黑盒有些则是从固件到硬件全开源。全开源的机型比如基于ROS的某些方案学习价值最高但上手门槛也最高。我的建议是先买一台半开源的成熟机型把上层跑通再逐步往底层挖。2.3 一张表看清各模块的技术归属为了让你对拆解即课程这件事有更直观的感受我整理了一张模块与技术点的对应表。这张表是我自己拆机时画的后来发现它几乎就是一份机器人工程的 syllabus。硬件模块对应技术点所属课程方向学习难度激光雷达点云处理、扫描匹配SLAM/感知中高IMU陀螺仪加速度计姿态解算、卡尔曼滤波传感器融合中轮式里程计运动学模型、标定移动机器人低电机编码器PID控制、闭环调速运动控制低中主控MCU实时系统、通信协议嵌入式中树莓派/上位机ROS、算法部署机器人软件中高电池管理电源设计、充放电保护硬件电子中悬崖/碰撞传感器信号采集、状态机嵌入式低看懂这张表你就明白为什么我说一台扫地机装着一整套机器人工程课程。它不是夸张是字面意思。3. 感知层拆解机器怎么知道自己在哪、周围有什么3.1 激光雷达扫地机的眼睛也是最贵的单件激光雷达LDS是开源扫地机里成本最高的传感器之一也是整个SLAM系统的数据源头。它的原理不复杂一个激光发射器加一个接收器装在一个旋转平台上每转一圈就测一圈距离形成一个2D的点云切片。常见的是360度扫描每秒转5到10圈每圈采样几百个点。拆开看激光雷达内部有几个关键部件激光二极管、光电接收器、旋转电机、编码器、以及一块专门的处理小板。编码器用来告诉系统当前激光指向哪个角度这样每个距离值才能对应到一个方向。这里有个坑编码器和激光的同步如果没做好点云会错位表现出来就是地图上出现重影或者鬼影墙。我遇到过一台机器地图上总是多出一堵不存在的墙查了半天发现是雷达内部编码器磁铁松动导致角度读数偶尔跳变。激光雷达的数据通过串口传给主控协议各家不同但基本都包含角度距离信号强度三要素。信号强度这个字段很多人忽略其实它很有用强度过低说明是玻璃或黑色物体反射率低这些点在做地图时应该被过滤掉否则会污染地图。我在调参时会把强度阈值设成动态的近处要求高、远处放宽效果比固定阈值好不少。3.2 IMU与里程计两个不靠谱的传感器如何互补IMU惯性测量单元通常包含陀螺仪和加速度计。陀螺仪测角速度积分一下得到角度加速度计测线性加速度积分两次得到位移。听起来很美但实际用起来全是坑陀螺仪有零偏静止时输出不为零积分会累积误差加速度计噪声大积分两次误差爆炸。所以IMU单独用基本没法定位它的价值在于和里程计融合。轮式里程计靠编码器数轮子转了多少圈乘以轮子周长得到位移。它的优点是短距离精度不错缺点是会打滑——轮子转了一圈但机器没动或者机器被推动但轮子没转。打滑在扫地机上特别常见因为地面有灰尘、地毯、门槛。所以感知层的核心工作之一就是把IMU和里程计融合起来用卡尔曼滤波或者互补滤波取长补短。陀螺仪提供短时间内的角度变化不受打滑影响里程计提供长时间的位置约束不受零偏影响。融合后的位姿估计才是SLAM算法真正吃的输入。这里有个实操心得里程计标定一定要做而且要在实际使用的地面上做。标定方法是让机器直线走一段已知距离比如2米看里程计报了多少算出比例系数。我见过有人在地毯上标定结果拿到木地板上跑地图直接歪掉。不同地面的摩擦系数不同打滑程度也不同标定环境要贴近使用环境。3.3 悬崖与碰撞传感器低技术含量但决定体验悬崖传感器一般是红外测距装在机器底部边缘朝下发射红外光通过反射判断下方有没有地面。如果反射不到比如遇到楼梯就触发悬崖状态机器停止前进。这个传感器技术含量不高但可靠性直接决定机器会不会摔下楼。我拆过一台机器悬崖传感器被灰尘挡住结果机器在楼梯口犹豫了半天最后还是一头栽下去——幸好我接住了。碰撞传感器更简单就是一圈微动开关或者霍尔传感器撞到东西就触发。它的作用是弥补激光雷达的盲区比如低于雷达扫描平面的障碍物或者透明物体。很多开源方案里碰撞信号会直接触发一个后退转向的状态机逻辑很简单但调不好就会让机器在角落里反复撞墙。这两个传感器的共同点是它们不参与SLAM但参与行为决策。也就是说它们的数据不进地图但会打断当前的路径规划。理解这一点很重要因为你在改算法时要清楚哪些数据是全局的哪些是局部触发的。4. 决策层拆解SLAM、路径规划与任务调度4.1 SLAM扫地机最核心的算法也是最难调的部分SLAM同步定位与建图是扫地机的灵魂。简单说它要同时回答两个问题我在哪和周围是什么样。这两个问题是耦合的你不知道自己在哪就没法准确建图地图不准定位也会错。所以SLAM是一个鸡生蛋蛋生鸡的问题解法通常是迭代优化。开源扫地机常用的SLAM方案有两类滤波类如Gmapping基于粒子滤波和图优化类如Cartographer基于位姿图。Gmapping计算量小适合算力有限的平台但建图精度一般回环检测弱。Cartographer精度高、支持回环但对算力要求高树莓派上跑起来有点吃力。我自己的经验是新手先用Gmapping把流程跑通理解SLAM的输入输出再上Cartographer。Gmapping调参相对直观主要调粒子数、更新阈值、激光似然模型参数。粒子数越多越准但越慢一般设30到80之间。更新阈值控制走多远更新一次地图设太小会频繁更新导致地图模糊设太大又跟不上。Cartographer的调参就复杂多了涉及子图大小、回环频率、优化权重等。我调Cartographer时最头疼的是回环检测参数太松会误回环把两个相似但不同的地方认成同一个地图直接扭曲参数太紧又检测不到真正的回环地图会累积漂移。我的做法是先用默认参数跑一遍看地图哪里歪再针对性调。4.2 路径规划从能扫到到扫得好的分水岭路径规划分两层全局规划和局部规划。全局规划负责从A到B走哪条路常用算法是A*、Dijkstra、或者基于栅格地图的覆盖规划。局部规划负责走着走着遇到障碍怎么绕常用的是动态窗口法DWA或者人工势场法。扫地机的路径规划和普通移动机器人有个关键区别它的目标不是到达某点而是覆盖整个区域。所以全局规划的核心是覆盖策略常见的有弓字形来回扫、螺旋形、分区覆盖。弓字形最简单也最常用但遇到复杂家具布局时效率低。分区覆盖会先把地图切成几个矩形区域每个区域单独弓字扫效率高但分区算法复杂。局部规划在扫地机上主要是脱困逻辑。机器卡在椅子腿之间、被电线缠住、进了死胡同都需要局部规划来救。我见过最蠢的脱困逻辑是随机转一个角度再走结果机器在原地转圈。好一点的逻辑会记录最近走过的位置优先往没走过的地方走。这个思路叫基于历史的脱困实现不难但效果提升明显。4.3 任务调度被低估的大脑部分任务调度是决策层里最容易被忽略、但实际影响体验最大的部分。它要决定什么时候开始扫、先扫哪个房间、电量低了什么时候回去充电、充完电要不要继续扫、遇到障碍是绕还是跳过。这部分逻辑通常是一个状态机待机、清扫、回充、充电、续扫、故障。每个状态有进入条件、退出条件、和执行动作。状态机写得好不好直接决定机器是智能还是智障。比如续扫逻辑机器扫到一半电量低回去充电充完电要回到断点继续扫。如果断点记录不准机器会重复扫已经扫过的地方或者漏扫。我在改任务调度时最大的体会是状态机的边界条件比主逻辑更重要。主逻辑比如电量低于20%回充很简单但边界条件刚好在回充路上电量耗尽怎么办、回充路上遇到障碍怎么办、充电时被手动搬动怎么办才是bug的重灾区。建议你在写状态机时先把所有边界条件列出来再写代码。5. 执行层拆解电机、驱动与电源管理5.1 电机与驱动PID调参是门手艺扫地机通常有四个电机两个驱动轮电机、一个边刷电机、一个风机电机滚刷另算。驱动轮电机一般是带编码器的直流减速电机边刷和风机可能是无刷电机。驱动方案常见的是H桥驱动芯片比如TB6612、L298N。电机控制的核心是PID闭环调速。编码器反馈当前转速PID根据目标转速和实际转速的差值调整PWM占空比。P、I、D三个参数的作用分别是P比例决定响应速度I积分消除稳态误差D微分抑制超调。调参顺序一般是先P后I再D先把P调到系统开始振荡再往回退一点然后加I消除静差最后加D平滑。这里有个实操坑两个驱动轮的PID参数要分别调。因为两个电机的特性不可能完全一致用同一组参数会导致机器走不直。我调的时候会让机器直线走2米看偏移多少然后微调其中一个轮子的参数。走直线是扫地机最基本也最重要的能力走不直的话地图会歪路径规划也会乱。5.2 电源管理安全第一别学我烧板子电源管理包括电池、充电电路、放电保护、电量计。开源扫地机常用的是锂电池组比如4串18650配一块BMS电池管理系统板。BMS负责过充保护、过放保护、过流保护、温度保护。我烧过一次BMS板原因是充电时用了不匹配的充电器电压高了0.5VBMS的保护没来得及触发板子上的MOS管就挂了。从那以后我养成习惯充电器参数一定要和BMS规格严格匹配宁可慢充也不要快充。电量计是另一个容易出问题的部分。简单的方案是用电池电压估算电量但锂电池的电压和电量不是线性关系中间有一段很平所以估算不准。好一点的方案是用库仑计直接积分电流精度高但成本高。开源方案里两种都有如果你要做低电量回充功能电量计的精度直接决定这个功能靠不靠谱。5.3 执行机构的机械细节别小看刷子和轮子机械部分看起来简单但细节很多。边刷的作用是把墙角和边缘的灰尘扫到主刷路径上它的转速和角度都有讲究。转速太高会把灰尘打飞太低又扫不干净。边刷一般是间歇工作的只在沿墙时转中间区域不转省电。驱动轮的设计也有讲究。轮子直径影响越障能力直径越大越容易过门槛但机器整体高度会增加。轮子的材质影响抓地力橡胶轮抓地好但容易沾灰硅胶轮好清理但磨损快。我试过给轮子缠一圈防滑胶带过门槛能力明显提升但噪音也大了。滚刷和风机的配合是吸尘效果的关键。风机提供负压滚刷把灰尘搅起来送进风道。风道设计不好会导致灰尘回流或者大颗粒卡住。我拆过一台机器风道里积了一堆头发吸力直接减半。所以定期清理风道和滚刷是必须的这不是维护建议是性能保障。6. 实操过程从零跑通一台开源扫地机6.1 硬件准备与固件烧录假设你拿到一台半开源机型第一步是确认硬件版本和固件版本。通常厂商会提供固件源码和烧录工具你需要一根USB转串口线连到主控的调试口。烧录前一定要备份原厂固件万一改崩了还能刷回去。烧录工具常见的是ST-LinkSTM32平台或者esptoolESP32平台。烧录时注意波特率和复位时序这两个不对会一直连不上。我第一次烧录时卡了两个小时最后发现是串口线质量太差换了一根就好了。所以调试工具别省钱一根靠谱的串口线能省你半天时间。烧录完成后先别急着装回去用串口终端连上看有没有启动日志。正常的启动日志会打印固件版本、传感器初始化状态、电机自检结果。如果某个传感器初始化失败日志里会有提示这时候先解决硬件问题别往下走。6.2 上位机环境搭建与ROS配置上位机通常是树莓派要装ROS。ROS版本选择要和你的算法包匹配目前主流是ROS1的Noetic或者ROS2的Humble。装ROS的过程网上教程很多我就不重复了重点讲几个容易踩的坑。第一个坑是串口权限。ROS节点要读串口数据但Linux默认串口需要root权限。解决办法是把用户加到dialout组或者写udev规则。我推荐写udev规则给串口设备固定一个别名比如/dev/robot这样即使插拔顺序变了设备名也不会变。第二个坑是时间同步。树莓派没有RTC实时时钟断电后时间会乱。ROS对时间敏感时间不对会导致TF变换出错。解决办法是装一个NTP服务开机自动同步时间。如果没网可以加一个RTC模块。第三个坑是算力分配。树莓派跑SLAM时CPU占用很高如果同时跑其他节点比如摄像头、语音会卡顿。我的做法是把不重要的节点降频或者延后启动优先保证SLAM的实时性。6.3 建图实操第一次跑SLAM的完整记录建图是检验整机是否正常工作的最好方式。操作流程是启动雷达节点、启动里程计节点、启动SLAM节点、然后用遥控或者手机APP控制机器走一圈。我第一次建图时地图上全是重影。排查过程是这样的先看雷达数据单独显示是否正常正常再看里程计数据是否合理发现直线走2米里程计报了2.3米最后确认是里程计标定系数错了。重新标定后地图立刻清晰了。建图时还有几个技巧走慢一点给SLAM算法足够的计算时间避免原地快速旋转旋转时雷达数据匹配容易出错走闭合路径让算法有机会做回环检测。我一般会先沿房间边缘走一圈再走弓字形填充中间这样建出来的地图最完整。建完图后要保存地图通常是保存成栅格地图pgm图片pgm的yaml描述文件。保存后可以用图像工具打开看看检查有没有明显的错误比如墙是断的、房间是连通的但实际有墙。地图质量直接决定后续导航的效果所以这一步值得多花时间。6.4 路径规划调参从乱撞到有序清扫地图建好后就可以跑路径规划了。第一次跑的时候机器大概率会乱撞这是正常的因为默认参数不一定适合你的环境。调参的顺序建议是先调局部规划避障再调全局规划覆盖。局部规划的关键参数是膨胀半径。栅格地图上的障碍物会被膨胀一圈膨胀半径决定了机器离障碍物多远就开始避让。半径太小会贴着障碍物走容易撞半径太大又会在窄通道里过不去。我一般设成机器半径加5厘米实测比较平衡。全局规划的关键参数是覆盖间距。弓字形清扫时两条平行路径之间的距离。间距太大漏扫太小重复扫。理论上间距应该等于机器的清扫宽度但实际要留一点重叠比如80%宽度防止边缘漏扫。我试过设成100%宽度结果墙边总有一条灰带扫不到。调参是个反复的过程建议每次只改一个参数改完跑一圈看效果。同时改多个参数出了问题都不知道是哪个引起的。我调一台机器通常要跑十几圈才能调到满意别指望一次到位。7. 常见问题与排查技巧实录7.1 建图相关问题的速查表建图是问题最集中的环节我把遇到过的问题整理成一张表方便你对照排查。现象可能原因排查方法解决思路地图重影里程计标定不准直线走2米对比里程计读数重新标定比例系数地图扭曲IMU零偏未校准静止时看陀螺仪输出重新校准零偏鬼影墙雷达编码器松动检查雷达内部机械结构紧固或更换雷达地图断裂雷达数据丢包看串口是否有校验错误检查线缆和波特率回环错误回环参数过松看地图是否出现不合理连接收紧回环检测阈值地图模糊粒子数太少看CPU占用和更新频率增加粒子数或降低速度这张表里的每一条我都是亲自踩过的。特别是鬼影墙那条我一开始以为是算法问题调了好几天参数都没用最后拆开雷达才发现是机械问题。所以遇到问题先怀疑硬件再怀疑软件这个顺序能省很多时间。7.2 导航与脱困的典型故障导航阶段最常见的问题是机器卡住不动或者反复绕圈。卡住不动通常是局部规划找不到可行路径原因可能是膨胀半径太大或者地图上有错误的障碍物。排查方法是把实时雷达数据和地图叠加显示看机器认为的障碍物和实际是否一致。反复绕圈通常是全局规划的目标点不可达或者局部规划和全局规划冲突。比如全局规划让机器往左局部规划发现左边有障碍让往右两个一打架机器就原地转。解决办法是给局部规划更高的优先级或者加一个卡住检测如果机器在某个位置停留超过一定时间就重新规划。脱困逻辑我改过好几版最后稳定下来的方案是记录最近N秒的位姿如果发现机器在一个小范围内反复移动就触发脱困。脱困动作是后退一段距离然后随机转一个角度但避开刚才的方向再尝试前进。这个逻辑简单但有效比纯随机好很多。7.3 电源与充电的坑充电问题是仅次于建图的第二大问题源。常见现象是回充对不上座、充不上电、充电时反复断开。回充对不上座通常是回充引导信号的问题红外引导或者视觉引导没对准。我的做法是在充电座附近建一个精确的小地图让机器在近距离时用高精度定位对准。充不上电要先排除硬件问题充电器输出电压是否正常、充电触点是否氧化、BMS是否保护了。我遇到过一次充电触点氧化用砂纸打磨了一下就好了。充电时反复断开通常是接触不良或者BMS的温度保护触发了充电时电池发热。这里有个安全提醒锂电池充电时人不要离开太久尤其是自己改过电路的情况下。我烧板子那次就是充电时去吃饭了回来闻到糊味。现在我充电都在视线范围内而且充电座附近不放易燃物。7.4 我踩过的三个印象最深的坑第一个坑是地图坐标系搞混。ROS里有map、odom、base_link好几个坐标系TF变换没配好机器在地图上的位置就是错的。我花了整整一个周末才理清这几个坐标系的关系。建议新手先把REP-105ROS的坐标系标准读一遍能少走很多弯路。第二个坑是串口通信的粘包问题。雷达数据是流式的如果读取时没处理好帧边界会把两帧数据粘在一起导致解析错误。解决办法是加帧头帧尾校验或者用固定长度的协议。我一开始没注意雷达数据时好时坏查了很久才发现是粘包。第三个坑是电机干扰传感器。电机启动时电流突变会产生电磁干扰影响IMU和雷达。表现出来就是机器一加速陀螺仪数据就跳。解决办法是给电机加滤波电容或者把传感器线缆远离电机线。这个坑很隐蔽因为静止时一切正常一动就出问题。8. 二次开发把这台机器变成你的实验平台8.1 可以改什么、值得改什么跑通原厂功能后你就可以开始二次开发了。可改的地方很多但我建议按投入产出比来排序。最值得改的是路径规划算法因为这是体验差异最大的部分而且改起来不需要动硬件。你可以把默认的弓字形换成螺旋形或者加一个重点区域重复清扫的逻辑。其次是传感器融合。原厂的融合算法通常比较保守你可以试试更激进的方案比如用扩展卡尔曼滤波EKF替代互补滤波看定位精度有没有提升。这个改动需要一些数学基础但网上资料很多值得一试。再次是任务调度。你可以加一些自定义逻辑比如检测到某类障碍物就跳过、按房间顺序清扫、语音控制指定房间。这部分逻辑用状态机实现改起来灵活。最不建议新手改的是底层固件尤其是电机控制和电源管理。这部分改错了可能烧硬件而且调试困难。等你对系统足够熟悉了再动。8.2 加装传感器的思路开源扫地机通常留了扩展接口I2C、UART、GPIO你可以加装传感器。常见的加装有温湿度传感器判断是否需要在潮湿环境加强清扫、空气质量传感器判断灰尘浓度、摄像头做视觉识别。加装传感器要注意供电和通信。树莓派的GPIO供电能力有限大功率传感器要单独供电。通信方面I2C总线要注意地址冲突多个设备挂同一条总线时地址不能重复。我加装过一个空气质量传感器一开始读不到数据后来发现是I2C地址和雷达冲突了改地址后正常。8.3 数据记录与算法迭代二次开发最重要的是数据记录。每次跑机器时把雷达、里程计、IMU、规划路径都录下来出问题时可以回放分析。ROS有rosbag工具专门干这个。我习惯每次改算法前先录一段bag改完后用同样的bag回放对比这样能客观评估改动效果。算法迭代的节奏建议是小步快跑。每次只改一个地方录bag对比确认有效再改下一个。我见过有人一次改五个地方结果效果变差了都不知道是哪个引起的。机器人算法调试是个细活急不得。9. 这套课程到底能学到什么拆完、跑通、改完一台开源扫地机你实际掌握的东西比想象中多。硬件层面你会看懂原理图、会用万用表、会焊接和排查电路。嵌入式层面你会写状态机、会调PID、会处理串口通信。算法层面你会理解SLAM的原理、会调路径规划参数、会做传感器融合。系统层面你会搭ROS环境、会做TF变换、会用rosbag做数据分析。这些技能不是孤立的它们在一台扫地机上形成了一个完整的闭环。你改一个参数能看到机器行为的直接变化你换一个算法能对比出效果差异。这种即时反馈是纯理论学习给不了的。我个人最大的收获是建立了一套系统思维。以前我看机器人看到的是一堆零件现在我看机器人看到的是感知-决策-执行的流水线每个环节的输入输出、约束条件、优化空间。这套思维迁移到其他机器人项目上上手速度会快很多。如果你也想入这个坑我的建议是先买一台成熟的半开源机型别一上来就自己攒。自己攒看起来省钱但调试成本极高容易在硬件问题上耗尽热情。先用成熟机型把软件跑通理解系统再逐步往硬件深入。这样学习曲线最平滑也最容易坚持下来。最后分享一个小技巧加一个社区。开源扫地机有很多活跃的社区和群组遇到问题先搜一下大概率有人踩过同样的坑。我很多问题的解法都是从社区里学来的比自己闷头查快得多。机器人工程是个实践性极强的领域多交流、多动手进步会比你想象的快。