基于Jetson Nano 的视觉识别搬运智能车

2023-12-13 11:20王树强张天翼
机电工程技术 2023年11期
关键词:建图激光雷达物体

李 鑫,王树强,李 猛,吴 磊,张天翼

(沈阳化工大学机械与动力工程学院,沈阳 110142)

0 引言

AGV是现代自动化领域出现的一项高新技术。随着物流仓储、智能汽车等行业的快速发展,AGV 技术便依托此类行业快速发展,此技术的应用大大提高了物流运转的效率。而目前AGV车的行走路径大多依赖有预设的参照介质进行运动,智能化程度较低,无法应用在某些复杂的场景中,例如在具有可移动障碍物的场景中,就无法有序工作。

相对于有预设参照介质的导引技术的广泛应用,无预设参照介质的SLAM 导引技术目前的市场规模还远远无法与之相比。应用SLAM导引技术的AGV不但可以实现自主避障,还可以实现自主规划路径。按照不同的传感器来划分,SLAM 技术目前可分为两种,一种是基于激光雷达的激光SLAM 技术,另一种是基于视觉传感器的视觉SLAM 技术[1]。激光SLAM 技术主要用于室内,视觉SLAM技术既可以用于室内,也可以用于室外,应用场景更为丰富,但在一些暗处或者一些无纹理区域是无法进行工作的。在精度方面,激光SLAM 技术构建的地图精度在某种程度要高于视觉SLAM,且可以直接用于定位导航。

通过对现有的AGV智能车进行硬件与软件方面的优化,设计出了一种以激光SLAM 技术为主,视觉识别技术为辅的搬运智能车。依托ROS 机器人操作系统,通过多种硬件的相互配合,可使智能车完成SLAM 建图、自主路径规划、导航避障与物体识别等功能。

图1 智能车实物

1 设计原理

(1)感知系统。智能车必须能够感知周围环境,包括通过传感器获取的障碍物、路标、道路标志等信息。这些传感器可以包括激光雷达、摄像头、惯性测量单元(IMU)等。

(2)运动控制系统。基于感知系统获取的环境信息,智能车必须能够做出决策并控制自身的运动。例如,在自动驾驶模式下,车辆需要确定车速、转向、刹车等控制指令。

(3)建图与定位。SLAM 算法用于将传感器获取的环境信息融合到一个全局地图中,同时利用该地图进行定位。在智能车中,建图与定位可以帮助车辆精确定位自身位置并规划路径[2]。

(4)视觉识别。视觉识别技术可以帮助智能车识别特定物品、交通标志、行人、车辆等物体,并根据这些信息做出相应的决策,如避让行人等[3]。

图2 程序流程

综上所述,该智能车需要通过感知系统获取环境信息,运动控制系统进行决策和控制,SLAM 算法进行建图与定位,视觉识别技术进行目标识别和判断。这些功能的协同工作,使智能车能够实现自主驾驶,并在行驶过程中能够感知周围环境并做出相应的决策和控制。

2 硬件设计

2.1 机械臂

根据物品的抬升和下降的任务,设计出如图3 所示的机械臂结构。通过减速箱带动转轴进行旋转使得前臂向前弯曲或向后伸直,后臂在前臂的带动下进行前曲运动。

图3 机械臂结构示意图

欧拉-伯努利梁理论公式用于计算梁在受力时的弯曲变形和应力,即

式中:σ为梁上的弯曲应力;M 为梁上的弯矩;y 为梁上某点到中性轴的距离;I为梁的截面惯性矩[4]。

应变能密度公式为:

式中:u为应变能密度;σ为应力;ε为应变。

弹性模量公式用于计算材料在弹性阶段的刚度,即

式中:E为弹性模量;σ为应力;ε为应变。

由于载荷会在由机械臂构建的框架内移动,最后计算得到机械臂承受的最大载荷为6 kg[5]。

2.2 机械臂驱动机构

机械臂的驱动力由马达和减速箱组成,减速箱为三级减速,由3 个齿轮相互啮合而成。马达主体固定于底板下方,三级减速箱位于底板上方。此机构可使前臂以较慢的速度进行前屈,完成下降动作。如图4~5 所示。

图4 减速箱结构

图5 机械抓手三维图

2.3 舵机与机械抓手

该物体抓取系统由两个舵机、螺旋装置和一个金属抓手组成,当识别到相应物品以后,通过机械臂的前屈使得金属抓手到达相应高度,然后通过螺旋装置来前后移动金属抓手的位置,上方舵机调整抓手的方向,下方舵机通过啮合机构控制抓手的开合,从而对相应物体进行抓取[6]。

2.4 主控设备

主控采用的是英伟达的Jetson Nano。Jetson Nano 是一款基于NVIDIA Maxwell架构的低功耗人工智能计算平台。它的作用是用于接收深度相机拍摄的图像和视频以及激光雷达的信号,并对其进行分析。在内存和存储方面,它本身配备了4 GB LPDDR4 RAM和16 GB eMMC存储器,由于需要运行Ubuntu系统来控制智能车,此系统会占用较大内存空间,为满足内存需求,于是添加了64 GB SD卡来扩展存储空间,将镜像系统烧录在SD 卡中,同样可以启动开机大程序。在网络和连接方面,由于该主控支持千兆以太网和WiFi,进行系统调试时可直接将主板与局域网路由器通过网线连接或通过其自身构建的局域网与终端连接。深度相机、激光雷扩展板等其他硬件可通过主板上的USB 3.0、USB 2.0 等接口与主控连接[7]。如图6 所示。

图6 主控接口示意图

2.5 ROS机器人控制板

该控制板是此智能车的驱动控制器,也是一款STM32 核心开发板。板载集成了STM32 核心控制单元、MPU9250 九轴姿态传感器等重要配置,同时提供4 路编码电机、4 路PWM舵机、串行总线舵机等外设接口。它可以支持Jetson Nano主控通信和供电。该控制板的特点为不需要额外编写外设的驱动程序,只需要通过串口发送对应控制命令就可以快速控制智能车上的外设,既简单又高效[8]。如图7 所示。

图7 微处理器模块电路

2.6 激光雷达

由于该智能车需要实现建图、自动避障以及路径规划等功能,于是在改智能车前端安装了一个激光雷达,型号为思岚A1 激光雷达,该雷达采用的测量方式为三角测距法,最小测量半径为0.15 m,最大测量半径可以达到12 m,并且采样帧率可以达到8 kHz,借助ROS 操作系统,可以完成SLAM 建图、自动避障、路径自主规划等功能。

当光路系统中,激光入射光束与被测物体表面法线夹角小于90°时,该入射方式即为斜射式。

如图8 所示,激光发射的激光以与物体表面法线成一定角度入射到物体表面,反射(散射)光在B 处通过透镜会聚成像,最后由感光单元收集。在每个测距过程中,激光雷达都会发射调制的红外激光信号。激光信号照射目标物体后产生的反射将被激光雷达的视觉采集系统接收,然后通过嵌入激光雷达中的DSP 处理器进行实时计算,随后将从通信接口输出被照射目标物体与激光雷达之间的距离值和当前角度信息。在电机机构的驱动下,激光雷达的测距核心将顺时针旋转,以实现对周围环境的360°扫描测距检测[9]。

图8 雷达工作原理示意图

2.7 深度相机

为了识别并对物体应用KCF追踪技术进行实时追踪,该智能车配备了一台深度相机,同样位于智能车的前端。深度相机的型号为Astra Pro,其深度范围0.6 ~8 m,精度为1 m,深度处理芯片为MX400,基本可以满足对物体的追踪功能。并且,它还拥有ORB- SLAM2 建图、Rtabmap三维建图、Yolov4-tiny 物体识别功能,同时,还可以支持自动驾驶功能。

2.8 减速电机与麦克纳姆轮

智能车的全方位运动依靠4 个减速电机与麦克纳姆轮,通过编码电机转速的差异,配合麦克纳姆轮实现全方位移动[10]。同时,为前轮增添悬挂系统,可以保证4个轮子位于同一平面,电机采用的是520 编码电机。图9为电机驱动电路。

图9 电机驱动电路

3 软件设计

3.1 主控操作系统

主控的操作系统采用的是Ubuntu操作系统。该智能车的系统配备了多个功能包,有Open CV及其相关功能,例如物体追踪、颜色追踪、物体识别(需事先导入训练模型)、激光雷达SLAM建图以及导航避障等功能[11]。

3.2 远程控制及多机通信

通过智能车内置的M.2无线网卡来创造出一个局域网,终端连接该网络以后可以通过VNC进行远程控制该智能车。为了减轻智能车主板计算量,在相应终端配置虚拟机。所用平台为Workstation 16Pro,镜像系统为Ubuntu18.04,根据智能车的IP地址来配置虚拟机,即可实现多机通信[12]。

3.3 物体追踪及抓取

为了实现智能车对物体的实时追踪功能,需要为智能车安装相应的功能包。其中常见物体追踪算法有BOOSTING、MIL、KCF 和CSRT。虽然BOOSTING 算法已经发展超过了10年,技术较为成熟,但由于其速度较慢、精度较差,所以不适合用在智能车这种需要及时作出反应的设备上。MIL 算法缺点和BOOSTING 一样,同样也是速度较慢。KCF 和CSRT 算法相比,虽然在精度上不如后者,但其速度较快,应用于智能车上,以便于应对各种复杂情况,并及时做出反应。通过对比几种算法,最终选择采用KCF物体追踪算法[13]。

将带有KCF算法的功能包下载到主控系统当中,即可通过终端输入代码,直接开启KCF功能,此功能的开启需要深度相机进行硬件支持。在确定物体实际坐标以后,通过机械臂的前屈以及螺旋装置,将金属抓手送到物体正上方,通过Open CV来确定物体摆放的方向,然后通过舵机控制金属抓手的方向以及开合,完成对物体的抓取工作[14]。物体识别效果如图10 所示。

图10 物体识别效果

3.4 Gmapping建图算法

Gmapping算法是一种常见的基于过滤SLAM 框架的开源SLAM 算法。它的优点是可以实时绘制室内地图,在构建小场景地图时所需的计算量小且精度高。缺点是所需的粒子数随着场景的增长而增加。由于每个粒子都携带一幅地图,因此构建大型地图所需的内存和计算量将大大增加,并且没有环回检测,因此,在回环闭合期间可能会发生地图错位。虽然粒子数的增加可以使地图最终闭合,但它不适合在大型场景中应用,因为这会大大增加计算量和内存[15]。

同样,Gmapping算法在应用过程中也是通过各个节点进行话题消息的传输,如图11 所示。

3.5 导航避障

该功能以激光雷达为主要硬件基础,进行障碍物检测,并进行导航。首先需要开启Gmapping建图功能来为场景绘制二维平面图,随后在虚拟机中开启ROS 系统内置的rviz程序。通过rviz 工具可以实现单点导航以及多点导航等功能[16]。

(1)单点导航。使用rviz工具的2D Pose Estimate设置初始位姿,直到仿真中的小车位置,与实际小车的位置一致。然后点击rviz工具的2D Nav Goal,选择地图上没有障碍物的地方为目标点,松开鼠标即开始导航,只能选择一个目标点,到达即停止。

(2)多点导航。和单点导航第一步相同,先设置小车的初始位姿。然后点击rviz工具的Publish Point,随后在地图上没有障碍物的地方选择目标点,松开鼠标即开始导航,可再次点击Publish Point,然后选点,机器人就会点与点之间巡航[17]。导航避障功能效果如图12 所示。

图12 导航避障功能效果

4 测试与结果分析

在足够宽敞的室内,通过摆放杂物来模拟复杂的场景,测试其自动路径规划、导航避障与物体追踪功能。测试过程中不断减小两个障碍物之间的距离,同时在智能车运动过程中加入移动障碍物,测试路径规划功能。如表1 所示,通过测试可知,随着通道宽度不断增加,系统路径自动规划时间也在加长,当宽度小于约0.6 m时,智能车无法通过通道,这与激光雷达的参数有关,随着激光雷达精度的提高,智能车可以在更狭窄的通道中进行自主路径规划。如果采用更高算力的主控,也可以缩短行进时间。

表1 测试结果

测试发现,在物体识别与抓取方面,该智能车有着良好的表现,在多次测验中,都能够正确地识别并抓取物品。实地测试效果如图13 所示。

图13 实地测试效果

5 结束语

本文介绍了一种基于Jetson Nano 的视觉识别搬运智能车,在原有的AGV基础上,舍弃了巡线等功能,为其加入了SLAM建图以及视觉识别等功能,通过SLAM 建图功能,使得智能车不必受路径上的参照标识物所限制,可以缩短智能车的现场安装调试时间[15]。在硬件结构上,设计了一套机械臂系统,该机械臂可进行前屈运动,可抓取小车前方0.5 m 内的物体。在软件方面,通过ROS机器人操作系统,可实现KCF 物体追踪、Gmapping建图等算法,以及自动路径规划等功能,可使智能车的应用领域更加灵活多变。通过实地测试,该智能车能适应多种复杂环境,同时初步掌握了该智能车正常工作的各项参数。

猜你喜欢
建图激光雷达物体
手持激光雷达应用解决方案
视觉同步定位与建图中特征点匹配算法优化
法雷奥第二代SCALA?激光雷达
深刻理解物体的平衡
基于三轮全向机器人的室内建图与导航
基于激光雷达通信的地面特征识别技术
一种基于多传感融合的室内建图和定位算法
我们是怎样看到物体的
基于激光雷达的多旋翼无人机室内定位与避障研究
机器人室内语义建图中的场所感知方法综述