基于ROS的无人车自主导航方法
技术领域
本发明涉及无人车技术领域,具体为基于ROS的无人车自主导航方法。
背景技术
从上个世纪70年代起,计算机、传感器等电子新技术的迅猛发展,为机器人行业的出现与兴盛,打下了牢固的基础。21世纪起,机器人技术在生活中应用越来越广泛,各行各业中都出现了它的身影。但目前机器人的智能化程度还有很高的提升空间。其中探索与导航是机器人智能化所急需解决的核心问题。
卫星定位可以准确快速地实现室外对汽车或机器人的定位与位置导航。但在室内,由于信号、反应速度等问题,汽车与机器人不能很好地接受到卫星发出的信号,从而进行导航。因此,设计实用性强和很好接收发出的信号的基于ROS的无人车自主导航方法是很有必要的。
发明内容
本发明的目的在于提供基于ROS的无人车自主导航方法,以解决上述背景技术中提出的问题。
为了解决上述技术问题,本发明提供如下技术方案:基于ROS的无人车自
主导航方法,包括步骤一,本地文件配置;
步骤二,规划最优线路;
步骤三,障碍规避;
步骤四,构建环境地图。
根据上述技术方案,上述步骤一中,包含如下步骤,
a)通过本地配置器,在仿真软件中加载出小车和障碍物的相关参数;
b)步骤二,通过通用配置文件和全局规划配置文件,根据地图环境与小车所需到达的目标点与位置,规划出基于整体的最优前进路线;
c)步骤三,最后利用本规划配置文件结合move_base功能包,并根据传感器反馈的信息,规划出局部最优前进路线,使之与全局路线基本吻合,让小车能够完成预期的的导航目标,在探索最开始的时候,由于地图信息的不全面,move_base功能包无法规划出全局最优规划路线。在移动到墙角附近时,甚至机器人有可能无法继续前进。但是,随着导航目标点的不断增多,地图构建也越来越完善,整个导航过程也变得越来越顺畅。move_base功能包也可以根据已探知的障碍信息进行全局最优路径规划。
根据上述技术方案,上述步骤二中,包含如下步骤,
d)利用rviz中的2D NAV Goal按钮,可以指定机器人所要到达的目标地点与机器人目标姿态。松开鼠标之后,在rviz界面中机器人与目标地点之间会出现一条绿色的线,这是move_base功能包使用全局规划制定的最优线路,在成功加载机器人模型与地图模型后,利用rviz界面中“2D NAV Goal”按钮,可以自由选择机器人要到达的位置与姿态,gazebo仿真软件中的机器人将与rivz中机器人保持步调一致。
e)机器人在前进时,周围还会出现一条红色的线,这是由于地形和障碍物等信息参数的影响,本地规划器为机器人规划的周期性的前进路线,目的是保证机器人在正常前进时,前进路线能及可能的靠近全局规划路线。
根据上述技术方案,上述步骤二中,包含如下步骤,在仿真过程中,机器人会随着全局规划与实时规划两条路线进行移动。当全局规划路线上出现了障碍物,机器人首先会移动到障碍物的附近,然后算法切换到本地路径规划。传感器开始探索障碍物的信息,反馈给cpu,cpu计算并结合本地路径规划,重新规划出适合机器人前进的路线。
根据上述技术方案,上述步骤四中,在确认目标地点后,机器人开始移动,并开始构建环境地图。在移动过程中,机器人依靠自身搭载的传感器,不断探索周围环境,自动避开障碍物,当机器人最终无法找到前进路线时,它会选择放弃,并在终端中进行报错,上述过程需要不断选择目标地点,引导机器人完成SLAM,通过编写exploring_slam.py程序,可以实现机器人自主探索SALM,与之前的random_navigation.py相比,新程序仅修改了代码中关于目标点的设置,程序编写成功后,给予相应的权限,然后重新运行系统,启动成功后,运行exploring_slam.py,可以看到在rviz和gazebo仿真软件中,通过随机选定的目标点,机器人开始向这些目的地移动,一边进行导航避障,一边进行地图的构建;。
根据上述技术方案,在机器人移动时,如果机器人无法到达指定的目标位置或者机器人遇到障碍物时,机器人会不断进行探索,寻找前进路线。
根据上述技术方案,当机器人最终无法找到前进路线时,它会选择放弃,并在终端中进行报错。上述过程需要不断选择目标地点,引导机器人完成SLAM,机器人实现定位与导航的核心是SLAM算法,它将问题描述为:机器人在未知环境中开始向目标点移动,在移动过程中不断根据传感器反馈的数据信号,与原始地图相对比,不断修正并更新地图,从而完成地图构建与自身定位的任务,Slam算法有两大类,一是基于激光传感器类slam,还有一类是视觉传感器类slam,对于激光类slam,可以直接获得有关环境的距离信息,从而实现直接定位。这一类传感器受光线影响较小,但技术门槛和价格较高。目前研究方向正在向小型化、成本低方向发展,对于视觉类slam,是通过传感器所获得的相关图像进行估计,再通过累计位置变化计算出当前的位置,这种方法更加接近于通过里程信息,对机器人进行定位。这一类传感器对光照环境、快速运动、高动态环境等要求较高,实际的机器人往往是多个传感器的融合。目前对移动手机VIO的研究将视觉信息与IMU信息进行融合,实现两个传感器的优势互补,为SLAM的小型化与低成本化提供了一种可行的方案。
根据上述技术方案,引导机器人完成SLAM过程中,分为以下三个步骤,
f)利用ROS平台下免费提供的SLAM算法,完成了机器人在未知室内环境中的定位与地图构建,在地图构建过程中所需的传感器相关参数用来表示Observation_sources,scan则详细列出了传感器的所有内容,
配置文件中传感器选择了较为常见的激光雷达传感器,data_type:LaserScan表示着激光雷达传感器所用的数据类型;topic:/scan则表达了激光雷达传感器在ROS中订阅的话题名称;marking和clearing表明当传感器检测到障碍物时,是否增加或删除原地图相关的障碍物参数;;
g)利用ROS平台下navigation功能包并结合传感器采集到的信息,对小车前进路线进行实时修正;
h)在ROS利用amcl功能包实现对小车的精准定位,并在rviz和gazebo等2D仿真软件对自主导航系统进行测试与验证。
根据上述技术方案,上述步骤四中,具体分为一下几个步骤,
步骤一,编写lauch文件;
步骤二,导航过程与分析。
根据上述技术方案,上述步骤二中,仿真的基本过程可以分为:首先启动gazebo仿真软件,然后启动move_base中所需的节点,创建名为mrobot_laser_nanv_gazebo.launch文件,在成功加载机器人模型与地图模型后,利用rviz界面中2D NAV Goal按钮,可以自由选择机器人要到达的位置与姿态。
与现有技术相比,本发明所达到的有益效果是:本发明,以ROS系统为平台,编写相关文件,通过Rviz、Gazebo仿真软件加载机器人模型,利用amcl、move_base等功能包完成机器人在室内环境下的自主避障与导航,最后结合Slam和自主导航功能,实现机器人在无人控制下的地图探索与构建。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的整体结构示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供技术方案:基于ROS的无人车自主导航方法,包括步骤一,本地文件配置;
步骤二,规划最优线路;
步骤三,障碍规避;
步骤四,构建环境地图;
上述步骤一中,包含如下步骤,
a)通过本地配置器,在仿真软件中加载出小车和障碍物的相关参数;
b)步骤二,通过通用配置文件和全局规划配置文件,根据地图环境与小车所需到达的目标点与位置,规划出基于整体的最优前进路线;
c)步骤三,最后利用本规划配置文件结合move_base功能包,并根据传感器反馈的信息,规划出局部最优前进路线,使之与全局路线基本吻合,让小车能够完成预期的的导航目标,在探索最开始的时候,由于地图信息的不全面,move_base功能包无法规划出全局最优规划路线。在移动到墙角附近时,甚至机器人有可能无法继续前进。但是,随着导航目标点的不断增多,地图构建也越来越完善,整个导航过程也变得越来越顺畅。move_base功能包也可以根据已探知的障碍信息进行全局最优路径规划;
上述步骤二中,包含如下步骤,
d)利用rviz中的2D NAV Goal按钮,可以指定机器人所要到达的目标地点与机器人目标姿态,松开鼠标之后,在rviz界面中机器人与目标地点之间会出现一条绿色的线,这是move_base功能包使用全局规划制定的最优线路,在成功加载机器人模型与地图模型后,利用rviz界面中“2D NAV Goal”按钮,可以自由选择机器人要到达的位置与姿态,gazebo仿真软件中的机器人将与rivz中机器人保持步调一致。
e)机器人在前进时,周围还会出现一条红色的线,这是由于地形和障碍物等信息参数的影响,本地规划器为机器人规划的周期性的前进路线,目的是保证机器人在正常前进时,前进路线能及可能的靠近全局规划路线;
上述步骤二中,包含如下步骤,在仿真过程中,机器人会随着全局规划与实时规划两条路线进行移动,当全局规划路线上出现了障碍物,机器人首先会移动到障碍物的附近,然后算法切换到本地路径规划。传感器开始探索障碍物的信息,反馈给cpu,cpu计算并结合本地路径规划,重新规划出适合机器人前进的路线;
上述步骤四中,在确认目标地点后,机器人开始移动,并开始构建环境地图。在移动过程中,机器人依靠自身搭载的传感器,不断探索周围环境,自动避开障碍物,当机器人最终无法找到前进路线时,它会选择放弃,并在终端中进行报错,上述过程需要不断选择目标地点,引导机器人完成SLAM,通过编写exploring_slam.py程序,可以实现机器人自主探索SALM,与之前的random_navigation.py相比,新程序仅修改了代码中关于目标点的设置,程序编写成功后,给予相应的权限,然后重新运行系统,启动成功后,运行exploring_slam.py,可以看到在rviz和gazebo仿真软件中,通过随机选定的目标点,机器人开始向这些目的地移动,一边进行导航避障,一边进行地图的构建;
在机器人移动时,如果机器人无法到达指定的目标位置或者机器人遇到障碍物时,机器人会不断进行探索,寻找前进路线;
当机器人最终无法找到前进路线时,它会选择放弃,并在终端中进行报错。上述过程需要不断选择目标地点,引导机器人完成SLAM,机器人实现定位与导航的核心是SLAM算法,它将问题描述为:机器人在未知环境中开始向目标点移动,在移动过程中不断根据传感器反馈的数据信号,与原始地图相对比,不断修正并更新地图,从而完成地图构建与自身定位的任务,Slam算法有两大类,一是基于激光传感器类slam,还有一类是视觉传感器类slam,对于激光类slam,可以直接获得有关环境的距离信息,从而实现直接定位。这一类传感器受光线影响较小,但技术门槛和价格较高。目前研究方向正在向小型化、成本低方向发展,对于视觉类slam,是通过传感器所获得的相关图像进行估计,再通过累计位置变化计算出当前的位置,这种方法更加接近于通过里程信息,对机器人进行定位。这一类传感器对光照环境、快速运动、高动态环境等要求较高,实际的机器人往往是多个传感器的融合。目前对移动手机VIO的研究将视觉信息与IMU信息进行融合,实现两个传感器的优势互补,为SLAM的小型化与低成本化提供了一种可行的方案;
引导机器人完成SLAM过程中,分为以下三个步骤,
f)利用ROS平台下免费提供的SLAM算法,完成了机器人在未知室内环境中的定位与地图构建,在地图构建过程中所需的传感器相关参数用来表示Observation_sources,scan则详细列出了传感器的所有内容,
配置文件中传感器选择了较为常见的激光雷达传感器,data_type:LaserScan表示着激光雷达传感器所用的数据类型;topic:/scan则表达了激光雷达传感器在ROS中订阅的话题名称;marking和clearing表明当传感器检测到障碍物时,是否增加或删除原地图相关的障碍物参数;
g)利用ROS平台下navigation功能包并结合传感器采集到的信息,对小车前进路线进行实时修正;
h)在ROS利用amcl功能包实现对小车的精准定位,并在rviz和gazebo等2D仿真软件对自主导航系统进行测试与验证;
上述步骤四中,具体分为一下几个步骤,
步骤一,编写lauch文件;
步骤二,导航过程与分析;
上述步骤二中,仿真的基本过程可以分为:首先启动gazebo仿真软件,然后启动move_base中所需的节点,创建名为mrobot_laser_nanv_gazebo.launch文件,在成功加载机器人模型与地图模型后,利用rviz界面中2D NAV Goal按钮,可以自由选择机器人要到达的位置与姿态,Move_base功能包提供导航的主要运行、交互接口,实现导航过程中机器人最优路径的规划,主要由全局路径规划与本地实时规划两大部分组成,全局路径规划是以地图信息和给定的目的地为目标进行的总体路径规划,在导航过程中利用A*算法或Dijkstra算法,计算出机器人所在地与目的地之间的最优路线,作为机器人的运动路线,在实际情况下,因为存在障碍物、死角等因素,导致机器人无法按照给定的最优路线进行移动,所以需要根据周围地图与障碍物信息,对机器人移动路线进行修正,使之尽量符合全局最优路线。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。