APP下载

基于ROS的SLAM智能车

2021-09-13江苏房守江张睿

汽车维修与保养 2021年6期
关键词:建图里程计激光雷达

◆文/江苏 房守江 张睿

本文主要研究设计了一款基于树莓派ROS平台的SLAM智能车。该智能车利用激光雷达以获取周围环境的深度信息,采用ROS环境下具备SLAM算法的gmapping功能包,并通过STM32对智能车的底层驱动控制可实现即时定位、地图构建、自主导航和避障功能。

一、前言

室外定位与导航可以使用GPS,但在室内进行定位与导航会比较复杂。SLAM为即时定位与地图构建技术,很好地解决了室内智能车的地图构建和即时定位问题,具备重要的理论与应用价值。而对于智能移动这个问题,除了要有SLAM技术之外,还需要加入路径规划和运动控制技术。

二、设计方案

本设计中,SLAM智能小车由小车底盘、传感器系统和树莓派计算机系统组成,其中,底盘是智能小车的运动载体,用来实现整个智能小车的运动,传感器系统由光电编码器、激光雷达和IMU组成,用来采集实现可靠SLAM所需的各种传感器信息,计算机系统包括下位机和便携式计算机系统,便携式计算机系统用来运行ROS操作系统和SLAM程序,本系统整体设计方案如图1所示。

图1 智能车设计方案

1.相关传感器

(1)激光雷达

要完成智能车的SLAM和自主导航,首先要有感知周围环境的能力,尤其要有感知周围环境深度信息的能力,这是探测障碍物的关键数据。激光雷达可以提供智能车本体与环境障碍物之间的距离信息,其优点是精度高,响应快,数据量小,可以完成实时SLAM任务。本设计中采用SLAMTEC公司低成本激光雷达RPlidar-A1,可实现12米测距,一秒8 000次测量频率,扫描频率5Hz。

针对RPlidar-A1激光雷达,通过安装完成ROS相应的驱动功能包,在sensor_msgs包中定义了专用数据结构——LaserScan,用于存储激光雷达获取的深度信息。

(2)里程计与IMU

里程计采用底盘电机光电编码器方案,由STM32下位机经过运动学计算获得线速度后发送给ROS进行里程的转换,进而获得小车在地图上的坐标。IMU提供的姿态数据融合到角速度上,小车原地旋转是否准确需要靠准确的IMU和里程计。IMU数据的读取和线速度的计算均由STM32下位机主控负责,并通过USB传输给上位机。

2.运动控制板(下位机)

运动控制板采用STM32F103RC作为主控,主要负责小车运动模型解算、IMU数据读取、线速度的计算、遥控部分控制,最终通过USB传输给上位机。其中,IMU数据由MPU6050模块进行读取,接口电路如图2。线速度计算由光电编码器完成,光电编码器接口电路如图3。主控板可装载峰值6A的电机驱动模块,引出四路编码电机驱动接口,其中一路电机驱动接口电路如图4所示。

图2 MPU6050接口电路

图3 电机驱动模块接口电路

图4 光电编码器接口电路

3.ROS主控制器

ROS主控系统控制器采用Raspberrypi 4B,Linux版本安装了 Ubuntu 18系统。同时装有ROS机器人操作系统,ROS版本为Melodic,作为机器人ROS主控制节点。

(1)ROS系统

机器人操作系统(ROS)是一个开放源代码的机器人中间件套件,安装到Linux系统上。ROS系统由许多独立的节点组成,每个节点都使用发布/订阅消息传递模型与其他节点进行通信。小车节点我们称为主节点(ROS Master),因本地运行数据收发延迟最低,本设计中雷达、建图、导航、操作和监控都在本地节点运行,采用USB供电、HDMI接口的7英寸液晶作为ROS主控显示器。

(2)gmapping功能包

gmapping功能包为开源的功能包,集成了粒子波算法,开发者无需掌握内部复杂的算法,利用其对用户开放的接口即可实现相关功能,如图5所示。

图5 gmapping功能包总体框架

gmapping功能包需要获取环境深度信息、IMU信息和里程计信息,通过相关参数配置及算法实现,以进行定位与地图构建,gmapping功能包向用户开放的关键接口如表1所示。

表1 gmapping功能包向用户开放的关键接口

使用gmapping建图的一般步骤是:①在主控节点启动雷达与Gmapping节点,同时程序会将IMU姿态与位置融合发布odom位置信息;②启动本地雷达与Gmapping节点;③启动rviz在窗口内即可看到机器人tf位姿数据、激光节点、地图数据;④保存地图,如图6所示,保存后地图文件为map.pgm和map.yaml。

图6 利用gmapping建图

(3)自主导航

导航是在给定环境中将机器人从一个位置移动到指定目的地,导航需要使用保存好的地图,通过amcl寻找位置,move_base路径规划从而实现机器人自主导航。本设计采用navigation导航包实现智能车的自主导航:①启动底盘通讯与雷达节点;②本地启动nav导航包,导入地图文件;③启动本地可视化rviz,设置初始姿势位置;④确定目标位置,开始导航,如图7所示。

图7 自主导航

三、总结

本文研究设计的SLAM智能车,采用树莓派便携式计算机系统,配备低成本单线国产激光雷达、带四个驱动电机的底盘、STM32控制器等,成本低,功能完善,建图与自主导航效果好,可很大程度上满足室内建图和自主导航的功能需求。

猜你喜欢

建图里程计激光雷达
手持激光雷达应用解决方案
室内退化场景下UWB双基站辅助LiDAR里程计的定位方法
视觉同步定位与建图中特征点匹配算法优化
法雷奥第二代SCALA?激光雷达
基于三轮全向机器人的室内建图与导航
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
基于激光雷达通信的地面特征识别技术
一种基于多传感融合的室内建图和定位算法
基于激光雷达的多旋翼无人机室内定位与避障研究
基于模板特征点提取的立体视觉里程计实现方法