基于STM32的智能物流车设计

1. 引言

自从21世纪初以来,中国物流行业的规模迅速扩大,物流服务水平显著提升,发展环境和条件不断改善,为加快中国物流行业进一步发展奠定了坚实基础。如今,越来越多的人选择网上购物,使得物流和快递行业蓬勃发展。过去,物流行业整体科技水平较低,但近年来,随着互联网等相关技术的快速发展,物流行业的自动化水平得到提升。

先进的互联网技术和人工智能的发展提升了智能移动机器人的技术水平。在国内外,许多智能自动车辆已得到广泛应用。尤其是在物流行业,许多机械性和重复性的货物配送劳动完全可以通过智能机器人替代。在电商仓库中,可以看到大量智能物流车的工作场景。这不仅能够减少机械的重复性劳动,还能提高工作效率。因此,对如何设计智能物流车的研究具有重要的实际价值,并对众多行业有所帮助。

2. 总体结构设计

一般来说,智能物流车主要由三部分组成:控制系统、检测系统和动力系统 [1]。

在控制系统方面,采用STM32F103ZET6单片机作为控制核心进行数据处理和分析。在检测系统方面,汽车使用OpenMV实现物体识别功能,同时使用两种传感器:超声波传感器和灰度传感器。在动力系统方面,汽车采用JX6221舵机作为机械臂的舵机以及六自由度机械臂,同时还采用了JGB37-520编码器减速电机和驱动模块。

我们的设计方案包括机械结构、电路结构和控制结构。

2.1 机械结构设计

主要的机械结构包括4个麦克纳姆轮、一个六自由度机械臂等。麦克纳姆轮具有许多优点,与传统车轮相比,它可以实现全方位移动,使汽车能够向各个方向运动。然而,其缺点是相同尺寸下比普通车轮更重,且每个车轮都需要由单独的电机驱动,这给设计过程带来了困难和不便。机械臂的功能是抓取物体。六自由度机械臂具有较大的活动范围,为抓取物体提供了便捷性。我们已组装完成如图1所示的整辆汽车。

示意图0

2.2 电路设计

电路设计包括电源模块、降压模块和驱动模块。

  • 电源 :汽车由12V锂电池供电。
  • 降压模块 :我们使用5V和3.3V稳压模块。其中,5V用于超声波传感器、灰度传感器、OpenMV、编码器;3.3V用于单片机供电。
  • 驱动模块 :驱动电路的基本原理为H桥驱动原理。我们采用两个双H桥电机驱动,以节省空间并提高效率。

2.3 控制程序设计

为了使汽车更好地发挥作用,我们仔细研究了实际的仓库情况。大多数搬运工在接收到任务后开始配送货物,并在完成配送任务后返回起点。因此,基于物流行业的实际情况,我们在图2中设计了一个近似程序逻辑。

示意图1

3. 视觉识别模块

3.1 OpenMV 简介

OpenMV 是一种可编程的基于STM32F765VIT6作为控制核心的可编程摄像头。它具有多种功能,如颜色识别、形状识别、二维码扫描识别、人脸识别等。此外,还具备串行通信等功能。我们可以使用MicroPython编程语言编写程序来实现相应功能。OpenMV功能强大,便于用户在工程中应用,其传输效率和稳定性都很高 [2]。

3.2 工作过程

首先,汽车移动到二维码区域,OpenMV 扫描二维码。需要注意的是,OpenMV 会打印出包含任务信息的字符串,我们需要使用 code.payload() 函数提取二维码内容,以便进行下一步处理和传输。我们采用对不同颜色编号的方法(例如红色为1,蓝色为2,绿色为3等)。数据被 OpenMV 读取后将被存储,以便机械臂按顺序完成抓取物体的任务。

然后,汽车移动到物体区域,OpenMV开始进行颜色识别。在颜色识别过程中,我们使用 find_blobs函数,其默认输入参数是一个名为thresholds的元组。thresholds表示包含颜色阈值的元组,用于识别目标颜色。该元组中有6个参数,分别是L、A、B的最小值和最大值。L代表明暗,A代表红色和绿色,B代表黄色和蓝色。OpenMV IDE自带阈值编辑器,可用于调试阈值范围。相同颜色的阈值在不同光照下可能会有很大差异,因此在调试时应特别注意光照的影响。一组阈值需要多次调试才能达到最佳效果。在阈值编辑器中,黑色代表其他颜色,白色代表目标颜色。调试的原则是使目标区域尽可能白,干扰区域尽可能黑。图3显示的效果非常清晰且良好,因此我们选择此时的阈值。

示意图2

为了使调试过程更加清晰,在OpenMV识别到目标颜色后,我们在目标物体的图像上绘制一个矩形框(大致包围该物体),并在矩形框的中心绘制一个十字标记以标示目标中心。方便的是,OpenMV可以在串行终端中打印出物体的x和y坐标,如图4所示,这为机械臂的运动提供了便利条件。

示意图3

4. PI控制方法

4.1 PI控制

由于我们使用麦克纳姆轮是一种全向轮,我们使用PID控制方法调节电机速度,以确保汽车在直线行驶时不会产生较大的轨迹偏差。PID是一种经典的控制方法,代表比例、积分和微分。PID控制包括位置式PID和增量式PID。通常,增量式PID应用于电机速度控制。增量式PID是从传统PID控制公式[3]推导而来的。

然而,在具体的电机调速应用场景中,我们通常忽略D的影响,仅考虑两个参数(P和I)对系统的影响。PID是经典的闭环控制。因此,我们需要从编码器读取电机的实际速度,然后通过PI算法调整后,将调整过的PWM值赋给电机。这样就完成了两个参数的调节过程,使电机速度稳定在目标速度。

4.2 PI参数的设定方法

我们可以使用串口打印在某一时间段内测量电机的速度,并绘制该时间段内的速度折线图,这样更加直观明显。我们还可以使用Matlab进行理论上的初步调试。根据实际情况进行具体调节,最终使电机速度等于目标速度。

P的值是I和D的基础,决定了系统响应的速度和强度。P越大,线路振荡越严重;反之,P越小,电机速度响应越慢。此时折线图显示,电机需要经过较长时间才能达到目标速度。

I 的值既能消除静态偏差,又能提高响应速度。I 可以减小整个系统产生的误差,特别是能够消除因外部干扰(例如:汽车撞击障碍物)导致的车轮减速等误差。I 越小,相对于目标速度观察到的偏差就越大;反之,过小的值会导致系统振荡加剧。

综上所述,PI调节过程需要花费大量时间。随着外部环境的变化,这两个参数可能与上次调整时有很大不同。此外,随着程序运行时间的增加,误差会累积。因此,在程序后期运行时,速度会越来越偏离目标速度。我们认为有必要在各种情况下进行调整,以获得一组能使电机以稳定速度运行的参数。

5. 传感器应用

5.1 超声波传感器

我们应用四个 HC-SR04 传感器。首先,TRIG 引脚发送八个 40kHz 的方波。然后,回声引脚检测是否有信号返回。当回声引脚输出高电平时,我们开始计时,直到其输出低电平为止。该时间差即为超声波在空气中传播的持续时间。

我们在汽车的前方和后方分别固定两个超声波传感器。根据同一侧两个传感器之间的差异,可以微调当前汽车的位置。如果左侧距离大于右侧距离,则需要向前移动左前轮;如果右侧距离大于左侧距离,则需要向前移动右前轮。这种方法不仅能够避免汽车与障碍物发生碰撞,还能避免机械臂抓取物体时产生较大偏差,导致物体掉落。根据公式 (1),可计算出到障碍物的近似距离。

$$ d = vt / 2 \quad (1) $$

在 (1) 中,$d$ 表示汽车到目标的距离,$v$ 表示超声波的速度,通常等于 340 米/秒,$t$ 表示时间差。

我们设计了固定在汽车上的4个超声波传感器的分布。超声波传感器的分布如图5所示。

示意图4

5.2 灰度传感器

灰度传感器是配备有发光二极管和光敏电阻。工作过程是二极管照射地面,光敏电阻感应反射光。根据反射光的强度,将光信号转换为电信号,并传输到微控制器进行处理。

使用灰度传感器的目的是确定汽车行驶过程中的位置,以便进行相应的调整。我们共使用了十二个灰度传感器,每侧安装三个,以确保汽车能够沿直线行驶。

我们设计了固定在汽车上的12个灰度传感器的分布。灰度传感器的分布如图6所示。

示意图5

6. 测试与可行性分析

由于智能物流小车搭建完成后,我们对汽车的性能进行了测试。我们生成并打印了一个包含配送任务信息的二维码。例如,二维码信息为 213(1 代表红色,2 代表蓝色,3 代表绿色),表示汽车应先运送蓝色物体,然后是红色物体,最后是绿色物体。此外,我们还构建了一个带有黑色网格的场地,其中包括三个区域:货物仓库区、存储区和路径区域。

在测试过程中,我们使用了各种任务二维码以及不同形状和颜色的物体。经过多次测试和调试,发现该汽车确实能够按照指定顺序将物体从仓库区运送到存储区,且沿直线行驶时无明显偏差。汽车能够准确、平稳地完成整个运输过程。这证明了我们的设计方案是可行的。我们的测试如图7所示。

示意图6

7. 总结

随着当前物流行业的发展和科学技术的迅速进步,本文提出了一种智能物流车的设计方案。随着物流行业的发展,使用智能物流车替代人工配送的现象将越来越普遍。其原因是物流车具有便捷性和高效率的优势。此外,它可以在危险或恶劣环境中代替人类运输货物,从而避免人员伤害。根据 [4] 和 [5],智能物流车可应用于物流行业、自动控制、工业生产、医院等场合。

智能物流车的发展前景十分广阔。在不久的将来,智能物流车将在多个行业中发挥自身作用,帮助完成人类难以完成的任务,为社会创造更多的效益和价值。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐