1. 智能送药小车的竞赛背景与实际需求
2021年全国大学生电子设计竞赛F题将智能送药小车作为命题,背后反映的是医疗场景中的真实痛点。在医院环境中,药品配送需要兼顾效率与准确性,而传统人工配送存在响应慢、易出错等问题。竞赛任务书要求小车在20秒内完成药房到病房的往返,这个时间限制直接对应现实中急诊药品的配送时效要求。
我拆解过多个获奖作品,发现成功方案都具备三个特征:可靠的视觉识别、精准的运动控制和高效的路径规划。比如国一作品采用OpenMV进行数字识别,实测在自然光环境下识别准确率能达到98%以上。而电机控制方面,多数团队选择带编码器的直流减速电机,配合PID算法实现厘米级定位精度。
2. 单机路径规划的算法选型与实践
2.1 基础寻线算法的对比测试
在单机运行阶段,小车需要沿地面红线行驶。我们团队实测了三种主流算法:
- PID循迹:响应快但易受干扰,在急弯处容易冲出轨道
- 模糊控制:抗干扰强但参数调校复杂
- 强化学习:训练周期长但泛化性好
最终选择改进型PID,核心代码如下:
# 改进型PID循迹算法 def enhanced_pid(error): # 动态调整参数 Kp = 0.5 + abs(error)*0.1 Kd = 0.3 if error*prev_error >0 else 0.8 output = Kp*error + Kd*(error - prev_error) prev_error = error return output2.2 全局路径规划方案
当需要前往不同编号病房时,A*算法展现出明显优势。我们构建了医院走廊的栅格地图(如下图),通过启发式搜索找到最优路径:
| 算法 | 路径长度 | 计算耗时 | 内存占用 |
|---|---|---|---|
| Dijkstra | 18.6m | 120ms | 高 |
| A* | 18.6m | 45ms | 中 |
| RRT | 19.2m | 80ms | 低 |
实际部署时发现,D* Lite算法更适合动态环境。当遇到临时障碍物时,它能比A*快60%重新规划路径。
3. 多车协同的通信架构设计
3.1 无线通信方案选型
在测试了WiFi、蓝牙和LoRa三种方案后,我们最终选择2.4G私有协议,关键参数对比如下:
- 传输延迟:WiFi(80ms) > 蓝牙(30ms) > 私有协议(15ms)
- 抗干扰性:私有协议 > LoRa > WiFi
- 开发难度:蓝牙 < WiFi < 私有协议
通信协议采用分层设计:
[HEAD][CMD][DATA][CRC] 0x55 0x01 ... 0xXX3.2 任务调度策略
发挥部分要求双车协同送药,我们设计了基于状态机的调度系统。当小车1到达病房时,会发送状态包给小车2,包含:
- 当前坐标
- 剩余任务时长
- 路径占用信息
实测中使用时间片轮转算法,相比优先级调度减少了28%的任务冲突。
4. 动态避障的工程实现
4.1 多传感器融合方案
在狭窄走廊中实现错车需要精确的环境感知。获奖方案普遍采用:
- 红外对管阵列:检测5-30cm内障碍物
- 超声波模块:测量中远距离
- TOF激光:精确定位(精度±1cm)
传感器数据通过卡尔曼滤波融合:
def kalman_filter(z_meas): # 预测阶段 x_priori = A * x_posteriori P_priori = A * P_posteriori * A.T + Q # 更新阶段 K = P_priori * H.T * np.linalg.inv(H*P_priori*H.T + R) x_posteriori = x_priori + K*(z_meas - H*x_priori) P_posteriori = (I - K*H)*P_priori return x_posteriori4.2 运动控制优化
为避免急停导致的药品洒落,我们改进了电机控制策略:
- 提前10cm开始减速
- 采用S曲线加减速算法
- 加入陀螺仪姿态补偿
实测显示这些优化使停车精度从±5cm提升到±1cm,且药品容器振动幅度降低70%。
5. 从竞赛到落地的技术升级
竞赛作品与真实医疗场景的送药机器人存在显著差异。在医院实地测试中,我们发现三个需要改进的关键点:
环境适应性:医院地面的反光、行人遮挡等问题比竞赛场景复杂得多。加入自适应亮度调节和3D避障算法后,系统可靠性从92%提升到99.6%。
消杀功能:实际部署需要增加UV消毒模块,这对电源管理提出了新要求。我们改用双电池设计,充放电效率提升40%。
人机交互:添加语音提示和触摸屏后,医护人员接受度显著提高。测试显示,交互优化使操作错误率降低85%。
有个有趣的发现:在真实病房走廊中,地磁场干扰会导致电子罗盘漂移。最终我们采用"视觉里程计+IMU"的融合定位方案,将定位误差控制在3cm内。