APP下载

基于视觉SLAM的自主移动机器人设计

2023-12-29黄广伟陈梦婷廖伟涛

机械工程师 2023年12期
关键词:建图发布者下位

黄广伟,陈梦婷,廖伟涛

(东莞城市学院 智能制造学院,广东 东莞 523419)

0 引言

同时定位和建图(Simultaneous Localization and Mapping,SLAM)[1-2]是指将移动机器人置于未知环境中的未知位置时,移动机器人自动逐步构建与环境一致的地图,并同时使用该地图确定其自身在地图中的位置,SLAM一直是研究的热点问题之一。SLAM技术是机器人实现自主移动的关键,传统的激光SLAM技术比较成熟,但其成本比较高,另外在灵活性、操作性、部署性等表现差,无法满足室外环境需要。本文采用“RGB-D+IMU+激光雷达”多传感融合SLAM策略可实现移动机器人在未知环境下快速自主定位与建图(SLAM),并使用Dijkstra算法[3]、DWA算法[4-5]相结合的方法,实现了自主移动机器人的全局路线规划与局部路线规,可实现精准路径规划与避障功能,具有一定的工程参考意义。

1 自主移动机器人硬件结构

自主移动机器人主要由控制器处理系统、传感器系统与运动执行系统等组成(如图1)。控制器处理系统由上位机英伟达Jetson nano、下位机STM32F407VET6控制板两部分组成。其中Jetson nano是基于Linux系统的主控制器,主要功能是处理深度相机RGB-D、高精度惯性测量传感器IMU、激光雷达等多传感信息,完成同时定位和建图(SLAM)任务,并进行精准的路径规划及避障等,另外通过串行端口接收下位机STM32传输的数据并对其发送控制命令;而下位机STM32主要是负责控制电动机。传感器系统主要由深度相机RGB-D、高精度惯性测量传感器IMU、激光雷达等组成,实时完成信号检测与姿态反馈等任务。运动执行系统主要由4个直流无 刷 电 动 机MG513、电动机驱动器TB6612FNG等组成,完成运动执行任务。

图1 自主移动机器人实物图

2 自主移动机器人控制系统

2.1 控制系统总体框架

自主移动机器人控制系统如图2所示,以英伟达Jetson nano为上位机,以单片机STM32为下位机。传感器系统(深度相机RGB-D、激光雷达)实时采集数据后输送回上位机,上位机根据采集数据信号应用ORB-SLAM3算法同时完成定位和建图(SLAM)任务,同时上位机通过串行端口与下位机通信,将控制命令发送给下位机(单片机STM32),单片机STM32接受控制命令后,发送控制信号给运动执行系统,从而实现运动控制。高精度惯性测量传感器IMU将自主移动机器人运动姿态反馈给主控制器,供及时调整路径、避障策略提供参考。

图2 控制系统框架

为了便于对自主移动机器人的实时控制,PC机通过Wi-Fi与主控制器(Jetson nano)连接,采用SSH方式实现远程登陆到自主移动机器人的主控制器(Jetson nano)。

2.2 处理器通信架构

自主移动机器人上位机与下位机通信架构如图3所示,从图3中可知上位机Jetson nano处理器与下位机STM32主控板之间的通过串口通信。Jetson nano作为计算单元并通过串口通信方式和STM32 进行数据交互,STM32作为实时主控板,直接控制底盘。

图3 自主移动机器人通信架构

Jetson nano、STM32程序启动后,当Jetson nano收到速度订阅信息后,会直接通过串口给STM32单片机发送信号;只有当Jetson nano向STM32单片机发送{0xff,0xfe,'e'} 指令之后,STM32单片机会立即按照通信协议反馈数据给Jetson nano,反之则STM32单片机只接收和执行串口发送来的速度与转向数据帧。

2.3 控制系统多线程设计

为了快速处理传感信息,本控制系统采用多线程设计,如图4所示,信息采集线程、控制信号线程可同时进行,可提高系统处理信息速度。

图4 控制系统多线程设计示意图

多线程创建代码如下:

2.4 ROS节点之间通信

本控制系统以ROS 为基础软件,ROS各节点之间通信采用Topic 方式。节点管理器(ROS Master)负责管理ROS内一切节点的发布与订阅,它会根据订阅者(Listener)节点所提供的需要订阅的话题名称及消息类型,自动寻找匹配的发布者节点(Talker),并将发布者的地址发送给订阅者。订阅者收到节点管理器发来的信息后,会通过使用XML/RPC协议请求发布者进行连接。发布者接收到XML/RPC协议请求之后会向订阅者发送确认反馈[6],订阅者接收到反馈并确认之后,将会使用TCPROS创建与发布者对应的连接,最后,发布者将使用TCPROS向订阅者发布消息。

如图5所示,Talker节点会发布名称为“bar”的Topic数据,该节点启动时,节点管理器(ROS Master)将接收到Talker的相关注册信息,包括节点的名称、话题名称、消息类型、话题缓冲大小等, 相应Listener 节点运行时也会提交对应的注册信息。从而实现ROS各节点之间通信。

图5 Topic通信模型

2.5 同时定位和建图(SLAM)

本文采用“RGB-D+IMU+激光雷达”多传感融合SLAM策略,使用深度相机RGB-D、激光雷达作为采集器,应用ORB-SLAM3算法进行自动逐步构建与环境一致的地图,可实现移动机器人在未知环境下快速自主定位与建图(SLAM),使用高精度惯性测量传感器IMU,将自主移动机器人六轴姿态角(或角速率)及加速度等信息反馈至主控制器,以便更好地调整姿态,其基本原理如图6所示。

图6 SLAM基本原理图

2.6 路径规划

本控制系统主要应用了ROS机器人操作系统下的navigation框架,使用了Dijkstra算法作为全局算法和DWA动态窗口算法作为局部算法以实现自主移动机器人路径规划功能,具体流程如图7(a)、图7(b)所示。

图7 路径规划流程图

3 真实环境实验

自主移动机器人选用室内实验室作为实验环境,以buntu为操作系统,以ROS系统为软件基础,使用ORBSLAM3算法对室内环境进行建图。实验场景如图8所示,为开放性实验室学生制作区,图8(a)中过道有障碍物,图8(b)中过道无障碍物,对自主移动机器人在光线变化不均、有无障碍物的不同场景下,同时定位与建图(SLAM)功能进行了测试。

图8 实验场景

另外对自主移动机器人路径规划,精确度进行了试验,试验过程如图9所示;对避障功能进行测试,如图10所示。

从真实环境试验结果来看,自主移动机器人可实现基于精确建图下的自主导航、路径规划及避障功能,同时精度达到了预期目标。

4 结语

本文采用“RGB-D+IMU+激光雷达”多传感融合SLAM策略,结合ORB-SLAM3算法,可实现快速实时定位与建图(SLAM),采用Dijkstra算法为全局路线规划算法、DWA算法为局部路线规划算法,以开放性实验室学生制作区为真实实验场景,从实验结果来看,能实现精确自主时定位和建图(SLAM),并能实现路径规划及避障功能,定位精度达到了±6 mm,实现了预期目标。

猜你喜欢

建图发布者下位
视觉同步定位与建图中特征点匹配算法优化
新加坡新法规引争议
基于三轮全向机器人的室内建图与导航
一种基于多传感融合的室内建图和定位算法
发射机房监控系统之下位机
基于NDN的高效发布/订阅系统设计与实现
机器人室内语义建图中的场所感知方法综述
广告发布者的著作权审查义务问题研究
景洪电厂监控系统下位机数据传输网络改造
加权映射匹配方法的站内搜索引擎设计