
1. 人机混行场景下AGV叉车的安全边界到底在哪第一次在车间里看到AGV叉车和工人共用一条通道的时候我心里是发毛的。那台两吨多的家伙驮着托盘从拐角转出来旁边两个工人正低头看手里的单据距离不到一米。当时我脑子里只有一个念头这要是传感器漏检一次或者调度系统算错一步后果不堪设想。后来我自己参与了一个汽车零部件厂的AGV叉车部署项目厂区面积大概八千平米部署了六台叉车式AGV负责从原料库到产线的托盘搬运。车间里同时有三十多个工人在走动还有人工叉车、牵引车混行。这个项目让我对人机混行区域的安全保障有了完全不同于纸面上理解的认知。先说一个反直觉的结论AGV叉车在人机混行区域的安全核心不在于传感器有多灵敏而在于整个安全体系的分层设计是否合理。很多人一上来就盯着激光雷达的线数、毫米波雷达的探测距离觉得硬件堆够了就安全了。实际上我见过装了三个激光雷达加四个超声波传感器的AGV照样在车间里出过险情。问题出在哪出在安全逻辑的层级没有理清楚。人机混行区域的安全保障本质上要解决三个层次的问题。第一层是感知层也就是AGV怎么知道前面有人、有障碍物第二层是决策层也就是感知到之后怎么判断该减速、该停、还是该绕行第三层是管理层也就是多台AGV之间、AGV与人工车辆之间怎么协调避免出现调度冲突。这三层任何一层出问题整个安全体系就是纸糊的。我见过太多项目把百分之八十的精力花在感知层买最贵的传感器结果决策逻辑写得一塌糊涂AGV看到人要么急停要么愣在原地不动反而制造了新的安全隐患。也见过调度系统只考虑AGV之间的路径规划完全没把人工车辆的随机性纳入模型结果两台AGV和一台人工叉车在十字路口堵成一团。这篇文章适合几类人看正在规划AGV叉车部署的工厂技术负责人、做AGV调度系统开发的工程师、负责车间安全管理的EHS人员以及刚入行做移动机器人集成的同行。我会从实际项目经验出发把感知、决策、调度、管理这几个层面的安全设计逻辑拆开讲包括我们踩过的坑、试过的方案、以及最终跑通的那套组合拳。2. 感知层AGV叉车怎么“看见”混行区域里的人2.1 激光雷达不是万能的盲区才是要命的地方几乎所有AGV叉车都会配激光雷达做SLAM导航和障碍物检测但激光雷达有一个致命问题它只能扫描一个平面。大部分AGV用的单线激光雷达安装在车体底部大概十五到二十厘米的高度扫描的是一个水平面。这意味着什么呢如果工人蹲在地上捡东西或者地上有个矮托盘激光雷达很可能扫不到。我们在项目里做过测试一个身高一米七的工人站在AGV前方三米处激光雷达能稳定检测到。但当他蹲下系鞋带高度降到六十厘米以下时单线激光雷达的检测率直接掉到百分之四十左右。这个数据当时把我们都吓到了因为车间里工人蹲下作业是常态。解决方案是多传感器融合但不是简单堆砌。我们最终的配置是这样的传感器类型安装位置检测范围主要作用单线激光雷达车体前下方前方0.1-8米导航建图与中距离障碍检测3D深度相机车体前上方前方0.3-5米立体空间人员检测与姿态识别超声波传感器车体四周0-2米近距离盲区补盲防撞触边车体底部四周接触式最后一道物理防线这套配置的逻辑是激光雷达负责大范围扫描3D相机负责识别人的姿态和高度超声波补近距离盲区触边做最后的物理兜底。四层叠加之后蹲下的人、矮托盘、甚至地上散落的零件都能被检测到。注意3D深度相机的安装角度很关键。我们一开始装在车体正前方水平位置结果发现对远处蹲着的人检测效果差。后来把俯仰角向下调了十五度检测率明显提升。这个角度需要根据车体高度和实际场景反复调试。2.2 传感器融合的“时间对齐”问题多传感器融合听起来很美好但实际做的时候有一个很容易被忽略的坑时间同步。激光雷达的扫描频率是10Hz3D相机是30Hz超声波是20Hz如果这些数据没有对齐到同一个时间戳融合出来的结果就是错的。我们最初的做法是各传感器数据直接丢给融合算法结果AGV在移动过程中经常出现“幽灵障碍物”——明明前面没人系统却报有障碍物。排查了很久才发现是激光雷达和相机的时间戳差了大概50毫秒AGV以1米每秒的速度移动时50毫秒就是5厘米的位移在融合算法里被误判成了障碍物。后来我们用了硬件触发同步的方案用一个FPGA板子给所有传感器发统一的触发信号确保每个采样周期内所有传感器的数据都是同一时刻的。这个改动之后幽灵障碍物的问题彻底消失了。如果你不想上硬件同步软件层面也可以用时间戳插值的方式做近似对齐但精度会差一些。对于AGV叉车这种低速场景一般不超过1.5米每秒软件同步勉强够用但如果速度再高建议还是上硬件方案。2.3 人员检测不能只靠“有没有”还要判断“在干嘛”这是我们在项目后期才意识到的问题。最初的安全逻辑很简单检测到前方有人就减速距离小于一米就停车。但实际运行中发现这种逻辑太粗糙了。举个例子工人站在通道旁边整理货架身体没有移动AGV每次经过都要减速甚至停车严重影响效率。但另一个场景工人背对着AGV在通道中间慢慢走AGV如果只是减速工人突然蹲下或者变向就可能发生碰撞。所以我们后来引入了人员意图判断的模块。具体做法是用3D相机提取人体的骨骼关键点判断人的朝向、移动速度和移动方向。如果人面向AGV且静止判定为“注意状态”AGV正常通过但保持警戒如果人背对AGV且移动判定为“潜在风险”AGV减速并鸣笛提示如果人快速朝AGV移动方向靠近判定为“高风险”AGV立即停车。这套逻辑跑下来误停车率降低了大概百分之六十同时安全响应速度反而提升了。因为系统不再是一刀切地停车而是根据实际风险等级做差异化响应。3. 决策层从“看到人”到“知道该怎么做”之间的鸿沟3.1 急停不是最安全的做法有时候反而更危险很多安全规范里写的是“检测到人员进入危险区域立即停车”但在实际混行场景里急停可能是最危险的操作。为什么这么说AGV叉车驮着托盘行驶时如果突然急停托盘可能因为惯性前滑甚至翻倒。我们项目里就出过一次AGV载着一个装满零件的塑料箱以1.2米每秒的速度行驶前方两米处突然出现一个工人系统触发急停结果箱子滑出去砸在地上零件散了一地。虽然没有伤到人但如果旁边有工人后果不堪设想。所以正确的做法是分级响应而不是一刀切急停。我们的分级策略是这样的一级响应预警区距离3-5米AGV减速到0.5米每秒同时声光报警提示前方人员。二级响应减速区距离1.5-3米AGV减速到0.2米每秒持续鸣笛准备停车。三级响应停车区距离小于1.5米AGV平稳停车但不是急停而是以受控的减速度停下来。四级响应紧急区距离小于0.5米或碰撞即将发生触发紧急制动同时切断驱动电机动力。这个分级策略的关键在于减速度的控制。一级和二级响应用的是正常制动减速度控制在0.5米每二次方秒以内三级响应减速度可以到1米每二次方秒只有四级才用最大减速度。这样既保证了安全又避免了货物滑落的风险。3.2 路径规划要留“逃生通道”AGV叉车在混行区域行驶时路径规划不能只考虑最短路径还要考虑如果前方突然出现人AGV有没有地方可以避让。我们最初的路径规划用的是经典的A*算法追求路径最短。结果发现AGV经常贴着墙壁或者货架走一旦前方出现人AGV既不能前进也不能后退只能停在那里等人走开。如果人一直不走整条通道就堵死了。后来我们在路径规划里加了一个安全走廊的概念。具体做法是在生成路径时不仅计算路径本身还计算路径两侧各一米范围内的可通行空间。如果某段路径两侧的可通行空间不足就标记为“高风险路段”AGV经过时自动降速并且调度系统会尽量避免多台AGV同时进入这段路。这个改动让AGV的避让能力大幅提升。现在遇到前方有人AGV可以主动向一侧偏移避让而不是傻傻地停在原地。3.3 多AGV之间的“路权”分配单台AGV的安全逻辑相对简单多台AGV加上人工车辆混行复杂度就上来了。核心问题是谁优先通过我们试过几种方案。第一种是“先到先得”谁先到达路口谁先过。问题是AGV的速度和出发时间不同容易出现一台AGV长期霸占路口的情况。第二种是“固定优先级”比如载重高的优先。但实际场景里空载AGV赶去取货和满载AGV送货同样重要固定优先级不合理。最终我们用的是一种动态路权分配的方案。调度系统实时计算每台AGV的“紧迫度”综合考虑任务截止时间、当前载重、剩余电量、路径拥堵程度等因素给每台AGV算一个优先级分数。到达路口时分数高的先过。同时设置一个最大等待时间任何AGV等待超过三十秒优先级自动提升避免饿死。对于人工叉车我们没有办法直接控制所以采用的是预测避让策略。调度系统会根据人工叉车的历史运行数据预测它未来几秒可能出现的位置提前让AGV避让。同时在人工叉车经常出没的区域设置“人工优先区”AGV进入这些区域自动降速并提高警戒级别。4. 调度系统多AGV协同中的安全陷阱4.1 死锁两台AGV互相“谦让”到天亮多AGV调度里最经典的问题就是死锁。我们项目里遇到过这样一个场景两台AGV在一条窄通道里相向而行通道宽度只够一台AGV通过。按照避让逻辑两台AGV都检测到对方都决定停下来让对方先过。结果就是两台AGV面对面停着谁也不动后面的AGV越堵越多。这个问题在教科书里叫“死锁”解决方案理论上也很成熟比如资源分配图、银行家算法之类的。但在实际AGV调度里这些算法太重了而且AGV的场景变化太快不适合用那么复杂的逻辑。我们最终用的是一种基于让行规则的简单方案在窄通道两端设置虚拟的“通行令牌”同一时间只允许一台AGV持有令牌进入通道。AGV到达通道入口时先申请令牌拿到令牌才能进入离开通道后释放令牌。如果申请不到令牌就在入口等待并且调度系统会通知后面的AGV绕行。这个方案实现简单运行稳定。关键是令牌的申请和释放必须可靠我们用了心跳机制来检测AGV是否还在通道内如果AGV失联超过五秒自动释放令牌避免因为一台AGV故障导致整条通道瘫痪。4.2 交叉路口的“幽灵堵车”另一个常见问题是交叉路口的拥堵。我们的车间里有四个十字路口最初没有做特殊处理结果高峰期经常出现AGV在路口堵成一团的情况。分析下来发现问题出在AGV的停车位置上。AGV检测到前方有障碍物时会停在当前位置等待。但如果它正好停在路口中间就会挡住其他方向AGV的通行路径导致连锁反应。我们把这种现象叫做“幽灵堵车”——没有实际障碍物但交通就是动不了。解决方案是在路口设置虚拟停车线。AGV接近路口时如果检测到前方拥堵必须停在停车线以外不能进入路口区域。同时调度系统会实时监控每个路口的占用情况如果某个路口已经有两台以上AGV在等待就通知后续AGV绕行其他路线。这个改动之后路口的通行效率提升了大概百分之四十而且再也没有出现过路口堵死的情况。4.3 调度系统的“降级模式”任何系统都可能出故障调度系统也不例外。我们项目里遇到过调度服务器宕机的情况当时六台AGV全部停在原地整个车间的物流瘫痪了。虽然后来恢复了但这件事让我们意识到调度系统必须有降级模式。降级模式的核心思路是当AGV检测到与调度系统失联时不再依赖中央调度而是切换到本地自主模式。每台AGV根据自己的传感器数据和预设规则独立运行比如遇到障碍物就避让遇到路口就减速观察遇到其他AGV就按照预设的让行规则处理。本地自主模式的安全性肯定不如中央调度但至少能保证AGV不会全部停摆。而且我们在设计时加了一个限制本地模式下AGV的最高速度限制在0.5米每秒并且禁止进入窄通道和复杂路口区域。这样即使调度系统出问题AGV也能安全地退到最近的等待区不会造成安全事故。5. 现场管理技术之外的安全保障5.1 地面标识和物理隔离不是“土办法”是最后一道防线做了这么多技术方案我想说一个可能不太“技术”但极其重要的点地面标识和物理隔离。很多项目过度依赖技术手段忽略了现场管理的基础工作。我们在项目里做了几件事。第一在AGV固定行驶路径的地面上画了黄色警示带宽度大概十厘米工人一眼就能看出这是AGV的行驶区域。第二在人机混行最频繁的区域设置了可移动的物理隔离栏把AGV通道和人员通道分开。第三在AGV的转弯处和路口设置了凸面镜帮助工人提前看到AGV。这些措施看起来很简单但效果非常明显。项目运行三个月后统计工人主动避让AGV的比例从最初的百分之三十提升到了百分之八十五以上。很多时候事故的避免不是因为AGV有多智能而是因为人提前意识到了风险。5.2 培训要“真刀真枪”不能只念PPT工人培训是另一个容易被忽视的环节。我们最初的做法是发安全手册、开培训会但效果很差。工人该横穿通道还是横穿该低头看手机还是低头看手机。后来我们改了培训方式做现场演练。让工人亲自站在AGV前面看AGV怎么减速、怎么停车、怎么鸣笛。还让工人体验了一次AGV的紧急制动感受一下那个声音和气势。那次演练之后工人的安全意识明显提升了一个档次。还有一个细节我们在AGV上装了语音提示模块不是简单的“嘀嘀”声而是明确的人声提示比如“AGV正在行驶请避让”、“AGV即将转弯请注意”。人声提示比单纯的警报声更容易引起注意尤其是对于戴着耳塞的工人。5.3 安全日志和持续改进最后说一个我觉得最有价值的经验安全日志。我们在调度系统里加了一个模块记录每一次安全事件包括AGV减速、停车、避让、紧急制动等。这些日志不仅用于事后追溯更重要的是用于持续改进。比如我们分析日志发现某个路口每周平均发生二十次AGV减速事件远高于其他路口。去现场一看发现那个路口旁边是一个休息区工人经常在那里聚集。后来我们把休息区挪了位置减速事件直接降到了每周三次。还有一个发现AGV在下午两点到三点之间的安全事件明显高于其他时段。排查下来这个时段是工人交接班时间人员流动最频繁。我们调整了AGV的调度策略在这个时段降低AGV的运行速度增加安全距离安全事件数量下降了百分之五十。这些改进都不是靠技术方案一次性解决的而是靠持续的数据分析和现场调整。安全这件事没有一劳永逸的方案只有不断迭代的过程。6. 几个让我印象深刻的真实险情6.1 托盘超出车体导致的“隐形”碰撞有一次AGV叉车搬运一个超长托盘托盘长度超出了车体尾部大概三十厘米。AGV在转弯时托盘尾部扫到了一个工人的腿。幸好速度很慢工人只是被碰了一下没有受伤。事后分析发现AGV的传感器全部集中在车体前方和两侧尾部完全没有检测能力。而托盘超出车体的部分传感器也检测不到。这是一个典型的感知盲区问题。解决方案是在车体尾部也加装了超声波传感器并且在调度系统里对超长托盘做了标记AGV搬运超长托盘时自动降低转弯速度并且禁止在人员密集区域转弯。6.2 地面反光导致的激光雷达误判车间里有一块区域地面做了环氧地坪表面很光滑。AGV经过时激光雷达的光束打在地面上产生了镜面反射导致雷达误判前方有障碍物AGV频繁急停。这个问题排查了很久因为激光雷达的数据看起来很正常就是突然出现一个障碍物点云。后来我们用高速相机拍下了激光雷达的扫描过程才发现是地面反光造成的。解决方案有两个一是调整激光雷达的安装角度让光束尽量不垂直打在地面上二是在那块区域的地面上贴了防反光膜。两个措施叠加之后问题解决了。6.3 工人突然蹲下导致的“消失”前面提到过工人蹲下时激光雷达检测率下降的问题但实际场景比测试更复杂。有一次AGV正在正常行驶前方三米处一个工人突然蹲下捡东西激光雷达瞬间丢失目标AGV没有减速继续以正常速度前进。幸好工人很快站起来AGV检测到之后紧急停车距离已经不到一米。这件事之后我们给AGV加了一个记忆跟踪功能。当传感器检测到人员目标后即使目标短暂消失系统也会根据目标最后的移动速度和方向预测其未来一到两秒的位置并继续保持警戒。如果目标在预测位置重新出现系统立即恢复跟踪如果超过两秒没有重新出现才判定为误检并解除警戒。这个功能加上之后类似“突然消失”导致的风险场景基本消除了。7. 写在最后一些个人体会做AGV叉车安全这件事我最大的体会是技术方案再先进也替代不了对现场的理解。我们花了大量时间在车间里观察工人的行为习惯、AGV的运行轨迹、以及各种意外情况的发生规律。很多安全逻辑的改进不是来自实验室的测试而是来自现场的一次次观察和复盘。另一个体会是安全设计要有冗余但不能过度。我见过一些项目为了追求绝对安全把AGV的速度限制得极低结果物流效率还不如人工搬运最后项目被叫停。安全和经济性之间需要平衡而这个平衡点只能在实际运行中不断调整。最后一个建议如果你正在做AGV叉车的人机混行项目一定要在正式上线之前做压力测试。我们当时模拟了高峰期的人员流动、多台AGV同时调度、传感器故障等各种场景发现了不少问题。这些问题如果在上线后才暴露代价会大得多。安全这件事说到底就是一句话把每一个可能出问题的环节都想到然后为每一个环节都准备好应对方案。没有捷径但每一步都值得。