基于STM32 的智能搬运机器人设计
2022-09-22林俊仁郭骏祥王一凡张博鑫倪虹霞
林俊仁,郭骏祥,王一凡,张博鑫,倪虹霞
(长春工程学院,长春 130012)
0 引 言
近年来,制造企业不断完善生产系统,智能制造与智慧物流行业快速发展,智能仓储由于其便于管理、效率高等特点得到广泛应用。过去传统人力进行搬运、运输等重复工作,费时费力,应用ROS 智能车和AGV 智能车在物流运输领域成为必然趋势。智能搬运机器人是智能仓储的重要组成之一。本文设计的智能搬运机器人是一款基于STM32 和树莓派的室内自主行走、自动避障的自动导引小车(Automated Guided Vehicle,AGV),可以自主进行路径规划,识别物料,独立完成搬运工作。
STM32 单片机用于控制车的行进、速度及转向等基本功能,如前进、后退、拐弯等。设计一个二轮平衡车和四轮智能车结构,两种机械结构更加适用于多种环境,电机PID 速度控制,了解并使用电机编码器,完成航向角的测量,可以对智能车精确控制。而树莓派主要用于发布导航信息和里程信息,利用SLAM 算法对智能车精准定位,以达到导航的目的。
1 智能搬运机器人室内导航技术
智能搬运机器人的核心技术是自主导航技术,其包括环境感知、定位及路径规划等3 个部分。室内环境感知,由激光雷达传感器实现,通过激光雷达传感器测出机器人与目标之间的距离,运用算法计算目标地点的位置。
智能搬运机器人室内定位由二维码导航技术实现,通过差分定位,结合现场地图,利用控制系统分析地图坐标数据,并与已建立的地图信息对比实现定位。该技术定位准确、灵活,易于铺设和更换路径,易于控制通信,是现场应用比较广泛的方式。
2 总体设计
2.1 硬件设计
智能搬运机器人由多个模块组合构成,其硬件包括了智能车车架、树莓派4b、舵机、STM32 f103c8t6开发板、双路直流减速电机、激光雷达、编码器、电池、电机驱动、MPU6050、LED 屏幕,系统硬件组成结构图如图1 所示。
图1 系统硬件组成结构
硬件系统主要组成部分:
(1)采用STM32 单片机作为主控芯片,其内部资源丰富,片上外设、定时器等数量较多,功能强大,有专用的PWM 引脚,更加稳定。该单片机具有I2C,SPI 等接口,利于开发和控制,DMA 控制器用于数据的运输,减少对CPU 的占用。
(2)智能车机械结构分为两种:两轮和四轮。两轮为平衡车结构,体积小,更利于进入狭小的环境;四轮更加稳定,利于进入地面不平的环境,稳定性和平衡性更好。
(3)电源:本设计采用航模电池,电池组规格为,电压:11.1V 到12.6V,1100mAh,8C。其尺寸:69mm×34mm×19mm,重量约90g。满足电机驱动模块和树莓派供电要求,电机驱动模块给STM32 单片机提供5V 的直流电源供电。
(4)测速编码器:编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到位移或者速度信息。编码器从输出数据类型上可以分为增量式编码器和绝对式编码器。从编码器检测原理上来分,还可以分为光学式、磁式、感应式、电容式。常见的是光电编码器(光学式)和霍尔编码器(磁式)。设计采用的是霍尔编码器,满足智能搬运车测速编码需求。
(5)超声波传感器:采用HC-SR04 超声波测距模块,有UART 和IIC 功能,2cm 盲区,采用升级解调芯片RCWL-9205,2.2mA 工作电流,工作电压3~ 5.5V,接口丰富。
(6)舵机:采用该SG90,反应速度0.12~ 0.13 秒/60°,工作扭矩为0.156 8Nm,可使用温度为-30℃到60℃,使用电压为5V,可用于举升等功能。
(7)屏幕采用OLED 屏,由STM32 控制驱动,优点有可视角度大,功耗低,不需要背光源,对比度高等优点,供电范围:3.3~ 5V,工作温度:-30℃~70℃,通信方式采用I2C 或者SPI,使用寿命不少于160 000 小时。
(8)树莓派4b 采用Ubuntu 系统,CPU 为64 位1.5GHz 四核(28nn 工艺),蓝牙5.0,内存为1~ 4GB DDR4,拥有双micro HDMI 接口,千兆以太网,电力需求为3A,5V。
(9)激光雷达采用了RPLIDAR A1,精度较高,可用于定位导航,采样频率可达8k,扫描频率达到5.5Hz,扫描范围为360°,功耗较低,可以实现多点触控与人机交互,抗环境光能力强。
2.2 软件模块组成部分
本系统主要功能有导航定位,二维码识别,避障等功能。软件设计模块主要分为两个部分,一个是树莓派部分,包括激光雷达导航,SLAM 算法,模型文件编写等模块,一个是STM32 智能车部分,有PID 速度控制,航向角度控制,二维码识别等软件模块。软件模块组成框图如图2 所示。
图2 系统软件组成结构
2.2.1 PID 部分
二轮结构下:平衡智能车运用了PID 进行直立、平衡和速度控制,分为直立环、速度环、转向环,每一个PID 出的输出结果都由单片机输出成PWM 进入电机。直立环PID 只运用了PD 控制,输入的参数为角度偏差和机械中值(取决于平衡车的机械结构),角度由MPU6050(陀螺仪)测量;速度环运用了PI 控制,输入的参数为智能车轮子的转速,也就是智能车电机编码器的速度,同时使用了一阶低通滤波器,使速度控制更精准;转向环用了PD 控制,输入参数为智能车的转向角度。PID 的基本流程如图3 所示。
图3 PID 的基本流程
四轮结构下,前轮使用舵机转向,整个四轮车采用了四驱驱动,通过PID 控制其速度,输入的参数为智能车的输入电机编码器的转速,输出结果为PWM值。
2.2.2 舵机控制
使用不同的PWM 波实现舵机的各个角度转动,控制脉冲的长短来控制舵机的最大转动角度。本系统下,舵机的基准信号周期为20ms,宽度为1.5ms,而最小脉冲为1ms,最大脉冲为2ms 实现搬运,具有卸下物品等功能。
2.2.3 激光雷达部分
使用思岚科技的RPLIDAR A1,用5V 直流电源供电,有以下两种使用方法。
直接通过STM32 与激光雷达相连接,使用STM32F401RE_Nucleo 开发板(STM32F401RE_Nucleo开发板背面的SB62、SB63 各自连通后开发板正面CN9上面的D0、D1才能和UART2 的Rx、Tx 连通),RPLidar 通过UART1 引脚与STM32F401 相连并通讯,波特率为115 200,通过程序读取激光雷达的输出。
程序1 的基本思路如下:定义一个UART1 Rx的DMA 缓冲区用于存储数据,取变量名为uart1_rx_buffer,将以定义成一个环形队列,所占用的连续内存空间从逻辑上可分为UART1_RX_BUFFER_AMOUNT(程序中的一个变量)份,这个变量中的每一个元素的data 指针都指向uart1_rx_DMA_buffer的n 份的首地址。UART 接收过程中,将数据传给DMA,并完成数据入列,并在中断函数中实现入队操作,调整队列。定义一个UART1_RX_BUFFER 结构体,其中state 用于表示DMA 缓存区的状态,start_DMA_time_ms 和finish_DMA_ms 用于表示DMA 的开始接收和完成接收的时间。ValidPos 用于表示保存了多少数据,readPos用于将要存储的数据的下标,data中存储着缓存区里的数据,可以通过printf 函数打印出来。图4 为思岚官网RPLIDAR A1 的打印数据,引脚配置如图5 所示。
图4 打印数据程序(部分截图)
图5 芯片引脚配置
将RPLIDAR A1 连接树莓派,使用思岚科技官网的SDK 包,得到需要的位置信息用于导航,在SDK包中ultra_simple 是一个简单的演示程序,可以快速地集成到现有的系统,但并不稳定,使用simple_grabber 是输出柱状图的雷达数据,用户需要使用connect()函数打开串口并连接到激光雷达上。采用了Cartographer 算法(由google 推出的一套基于图优化的SLAM 算法),相较于Hector 算法能更加精准地判断位置,具有回环检测功能,Cartographer 是一个在多个平台和传感器配置上提供2D 和3D 实时同步定位和绘图(SLAM)的系统,本方案采用的是2D SLAM,主要融合了Local 和Global 两种方式,使用了Submap 这一概念。使用Cartographer 算法时,需先安装ROS 和cartographer_ros 的依赖项,或则会报错,还需配置自己的设备信息,构建.launch 文件,最终实现点云的第一人称可视化。
2.2.4 显示部分
本设计采用的显示屏幕是OLED 屏幕,由I2C 或者SPI 控制,可以用来显示中文,英文,标点符号。如图5 所示,一共有四个引脚。VCC 接单片机的3.3V引脚,GND 接电源负极,也可以并联上一个滤波电容,保证供电稳点,不会出现闪屏的现象,SCL 和SDA 分别为OLED 屏时钟线和数据线连接单片机的I2C 引脚。
2.2.5 二维码识别
使用openmv 实现二维码识别,可以读取不同的二维码信息,获得智能车的基本位置。
3 实验结果与分析
智能搬运机器人系统测试内容是对研究完成的系统的主要功能进行测试,检验系统功能的完成程度是否满足设计要求。在测试过程中,对系统中不满足设计要求的部分进行优化和完善。本系统的智能车主要由PID 速度控制,MPU6050 姿态控制,二维码识别,激光雷达导航,发布里程计和深度信息,机器人模型文件等多部分代码文件组成,使用Keil uVision5、VIM 等多个编程软件以及调试软件,使用STLINK 下载器将调试好的软件下载到单片机和树莓派中,最终完成智能物流搬运车的设计。测试内容及结果如表1 所示。
表1 测试内容及结果
4 结 语
文章设计一款实现智能搬运功能的机器人,实现了智能定位、导航、避障及物资搬运等功能,实现了搬运智能化的设计要求,解决了传统物流行业依赖人工、效率低等问题。该智能搬运机器人适应性强,只需对其程序进行简单修改就可以适应多个不同环境需求,为智能制造领域物流运输提供有力支撑。