基于ROS无人车配送系统设计与实现

作者: 赵伟成 毛恩兵 莫仁函 叶志毅 王嘉豪

基于ROS无人车配送系统设计与实现0

摘要:针对无人车配送系统的关键技术,设计并实现了一种基于ROS的无人车配送系统,以提高物流效率和降低成本。

首先,根据ROS操作系统的特点分析了移动机器人系统结构,设计了无人车配送系统的硬件框架,并搭建出无人车。随后,利用ROS操作系统提供的工具包,设计了激光SLAM算法进行自主建图,设计了TEB算法和运动控制策略进行环境感知和路径规划,实现了无人车的运动控制和自主导航。最后,为了实现远端操控,采用C#编写了远端客户端操控程序,对Socket编程实现了与无人车的通信,通过发布控制指令实现了无人车配送系统的运行控制。实验验证表明,所设计的无人车配送系统能够实现可靠的自主建图、定位和导航,运行稳定可靠,为无人车配送系统的实际应用提供了一种参考方案。

关键词:ROS系统;激光SLAM;路径规划;TEB算法;Socket通信

中图分类号:TP18 文献标识码:A文章编号:1009-3044(2023)18-0010-05

0 引言

随着物流业务的不断发展和市场需求的不断提高,无人车配送系统可以极大地提高物流效率和降低成本,逐渐成为一个备受关注的领域,具有广泛的应用前景。然而,无人车配送系统的研发仍然面临着许多技术挑战,如何实现精准的自主导航和配送功能是一个关键问题。随着机器人技术和人工智能技术的快速发展,机器人操作系统(Robot Operating System,ROS)提供了一系列功能强大的工具和算法,帮助研究人员开展无人车自主导航、路径规划、环境感知和建图等功能的开发,被广泛应用于无人驾驶机器人的研究中。本文基于ROS设计并实现了一种无人车配送系统,采用二维激光雷达感知环境信息,利用步定位与地图构建(Simultaneous Localization And Mapping,SLAM)技术进行自主建图,利用时间弹性带(TimeElastic Band, TEB)算法进行路径规划,实现无人车的运动控制、自主导航和配送功能。同时,为了实现与上位机的通信,本文采用C#编写了上位机客户端应用程序,并通过Socket接口实现上位机系统与无人车配送系统之间的通信,发布无人车启停、目标点位置指令,控制无人车自主将货物运动至目标位置。

1 无人车配送系统硬件设计

无人车配送系统实际上是一个无人驾驶的移动机器人,从控制的角度看,其结构框图如图1所示,主要包括控制系统、驱动与执行机构和传感器系统。

控制系统类似于人的大脑,主要实现任务及信息的处理,输出控制命令信号,实现机器人的算法处理、运动控制、人机交互、系统监督等功能。传感器系统包括内部传感器和外部传感器,相当于人体的感官和神经,主要完成信号的采集和反馈,实现机器人对所处环境的感知。驱动与执行机构包括驱动系统和执行机构,主要将控制系统下达的命令转化成执行机构需要的信号,驱动执行机构实现某种动作。移动机器人一般采用直流电机作为移动的执行机构,机械臂使用伺服系统作为执行机构。

1.1无人车配送系统硬件结构

无人车配送系统主要实现物品的无人配送,其系统硬件结构如图2 所示,主要包括ROS 主控制器、ROS 底层控制器、伺服电机、直流电机和相关传感器。

ROS主控制器主要实现无人车的建图、路径规划与导航、控制命令的接收与输出;ROS 底层控制器实现无人车位姿状态参数的采集,并根据ROS主控制器下发的控制指令驱动直流电机或伺服电机进行行走;传感器主要用于感知环境信息,实现无人车的定位、路径规划与自主导航,包含轮式里程计、惯性测量单元IMU、位置编码器、超声波、激光雷达、深度相机。

1.2无人车配送系统运动结构设计

本文设计的无人车配送系统采用阿克曼运动型[2]来描述机器人的转弯行为,其具有良好的机动性能和控制精度,能够适应复杂的室内环境。车体结构由两个驱动轮和两个转向轮组成,其中驱动轮通过电机驱动,转向轮通过伺服电机实现。阿克曼运动模型是指基于车辆底盘的特殊运动模型,用于描述车辆的转弯行为。在阿克曼运动模型中,车辆前轮和后轮转向角度不同,通过转弯半径和车辆的轴距、前后轮之间的距离等参数来描述车辆转弯过程。设车辆的前轮转向角度为δ,则车辆前进方向与车辆前轮转向角度之间的夹角为β,车辆转弯半径为r。根据车辆的运动学模型可得:

式中,L 表示车辆轴距,W 表示前后轮之间的距离。

根据关系式(1)可以计算出车辆在转弯时的前进方向与转弯半径之间的关系。通过阿克曼运动模型,可以设计出更加精确的路径规划和运动控制算法,以实现车辆的准确导航和控制。通过考虑机器人的阿克曼运动模型,利用激光SLAM进行实时建图和路径规划,产生精确运动控制指令,实现无人车的自主导航和精准避障。在运动控制中,根据机器人的阿克曼运动模型,可实时计算出机器人的转弯半径和前进方向,实现更加准确地运动控制和转弯。

1.3感知装置布局与设计

为了实现室内环境的感知和建图,无人车采用激光雷达和摄像头[3]等传感器进行数据采集,系统各感知装置的安装位置如图3所示。

二维激光雷达是无人车系统的主要感知装置,能够提供高精度的环境地图感知,为机器人的导航和路径规划提供重要支持。深度相机主要用于目标识别和定位,辅助机器人的导航。超声波传感器用于障碍物检测,用于路径规划和导航时的避障。IMU单元和编码器为激光SLAM和路径规划算法提供参考数据,实现高精度的建图和最优路径规划。当二维激光雷达存在局限时,系统通过深度相机进行路标和环境障碍物识别,辅助无人车进行路径规划和控制,形成多传感器融合建图策略。同时,深度相机可以检测环境中的动态障碍物,从而进行避障操作,以提高系统的稳定性和可靠性,适应不同工作环境下的无人车运行。

1.4 ROS 底层控制器设计

ROS主控制器采用英伟达Jetson Nano控制器,搭载四核Cortex-A57 处理器、128 核Maxwell GPU 以及4GB LPDDR内存,在ROS操作系统上运行激光SLAM建图和路径规划算法,实时依据激光雷达、深度相机产生无人车行驶指令。ROS 底层控制器负责执行ROS主控制器的控制指令,并为ROS主控制器提供辅助数据,协助实现无人车的自主导航和路径规划,是无人车中最为重要的部分之一。ROS 底层控制器采用STM32F103RCT6作为控制微处理器,负责驱动电机控制无人车的行走和转弯[4]。STM32F103RCT6的内核为ARM Cortex-M3,主频为72MHz,具有较强的计算能力和稳定性,支持 SWD 和 JTAG 调试。

STM32F103RCT6微处理器具有51个I/O 引脚、8个定时器、2 个 I2C 接口、5 个串口、3 个 SPI 接口、1 个CAN2.0,完全满足无人车运动控制所需的各种输入输出接口及各种传感器数据采集的需要。

ROS 底层控制器主要驱动直流电机实现小车行走,驱动伺服电机实现转弯,采集惯性测量单元IMU、位置编码器、超声波传感器,实现对无人车位置信息的实时采集,并为无人车的建图与自动导航提供数据依据。设计的ROS 底层控制器微处理器核心电路原理图如图4(a)所示,编码器和惯性测量单元IMU接口电路原理图如图4(b)所,电机驱动电路原理图如图4(c)所示,与ROS主控制器通信的串口转换电路原理图如图4(d)所示。

ROS 底层控制器采用PID 控制算法,通过对速度、角速度、方向等参数的实时监测和调节,实现了无人车的精确运动控制。在实际控制过程中,还考虑了阿克曼运动模型的特点,通过合理地调整控制参数和控制方式,有效提高了运动控制的精度和稳定性。为了与ROS主控制器进行通信,ROS 底层控制器配备了一个TTL串口转USB接口电路,方便与ROS主控制器连接,实现与ROS 系统进行数据交换和控制指令传递。

2 无人车配送系统软件设计

无人车配送系统的软件主要是实现无人车的SLAM建图、路径规划和自主导航,其软件系统框架如图5所示。

2.1 激光SLAM 算法

激光SLAM算法是无人车配送系统中的重要组成部分,能够实现自主建图和定位。本设计由于使用的是二维激光雷达,支持Gmapping算法的数据格式,因此本文采用激光Gmapping算法进行SLAM建图[5]。该算法可以同时实现建图和定位,并具有精度高和性能高效,占用的计算资源较少,能够满足实时性要求。

通过Gmapping算法可以获取地图信息,并利用地图信息实现路径规划和导航。实现Gmapping算法流程如图6所示。

2.2 路径规划和控制策略

在无人车配送系统中,路径规划和控制是核心问题。本文采用了TEB算法进行路径规划[6],该算法可以生成平滑的轨迹,并适应阿克曼车模的运动特性。

TEB算法实现流程如图7所示。

在进行路径规划的同时,利用ROS提供的Move⁃Base功能包实现路径控制和导航,通过发布目标点指令,无人车可以实现自主导航,运行到目标点完成配送功能。然而,由于每辆无人车的硬件配置不同,需要对路径规划配置文件进行修改和优化。鉴于考虑无人车运动模型和激光雷达测量存在误差、局部地图建立和更新频率因素的影响,需要对路径规划器的四个配置文件costmap_common_params. yaml、global_cost⁃map_params.yaml、local_costmap_params.yaml和teb_lo⁃cal_planner_params.yaml进行了优化修改,使之不受测量误差和更新频率的影响。在进行优化时,需要调整无人车的最大速度、加速度、最小曲率半径和最大加速度等参数,以适应无人车的阿克曼运动模型。同时,需要根据激光雷达的扫描范围和测量精度,调整局部地图的分辨率和更新频率,以提高路径规划的精度和实时性。经过参数优化后,将路径规划TEB算法和控制策略在仿真环境和实验平台上进行了测试,测试结果表明,路径规划TEB算法和控制策略能够在复杂环境中实现较为稳定和高效的路径规划和运动控制,为无人车的自主导航提供了可靠的支撑。

2.3远端操控PC 客户端设计

远端操控PC主要实现无人车货物配送的初始设置、启动/停止控制和运行过程的监管。要实现与无人车的操控,需要与无人车的ROS主控制器进行通信,实现控制命令及参数的交互。随着5G技术的发展,大多场所均覆盖了5G信号,本文设计的无人车通过5G信号与远端操控PC成一个局域网络,通过无线网络进行连接,实现上位机与ROS之间的通信。为方便对无人车的操控,本文采用C#编写了PC客户端,其操作界面如图8所示。客户端程序通过Socket[7]编程,实现远端操控PC与ROS主控制器之间的网络通信,向ROS主控制器发布控制指令,实现机器人的远程控制和配送功能。同时,客户端程序还可以接收无人车发送的状态信息,实现对无人车状态的实时监测。

远程控制和配送是通过订阅和发布不同的话题来实现的。具体而言,是利用ROS提供的导航功能包、视觉功能包以及Socket通信包来实现与远端操控PC的通信,进而实现无人车的操控。首先,需要订阅amcl_pose话题来获取小车在当前地图中的位姿,从而确定小车的当前状态;然后,通过上位机发布初始坐标(启动位置)、装货点坐标(货物位置)和卸货点坐标(目的地位置)等信息给MoveBase 功能包;最后,ROS主控制器根据接收到的位置点信息进行建图、定位,以实现无人车的自主导航和配送功能。

2.4深度相机辅助导航策略

当二维激光雷达受到限制时,如遇到复杂的障碍物或无法准确检测到墙角等细节时,可以通过深度相机进行辅助导航。本文设计的无人车安装了深度相机,可通过OpenCV库进行图像处理,获取环境辅助信息,与激光雷达信息进行融合,辅助无人车的自主导航。首先在运行环境路径中预定义一些路标,例如不同形状和颜色的标志,如图9所示。通过预处理让深度相机可以识别出这些标志并提取其特征。然后通过模板匹配技术来检测这些标志,从而确定无人车的位置和姿态。

上一篇 点击页面呼出菜单 下一篇