本发明涉及导航领域,尤其是基于turtlebot2机器人构建地图的多目标点自主导航方法。
背景技术:
自主移动是机器人技术的一个重要研究领域,随着应用环境的复杂化,人类对移动机器人的自主性和智能性提出了更高的要求,在服务机器人领域,需要移动机器人在室内环境下自主地完成家庭服务、老年陪护、场景监测等任务,移动机器人在没有用户干预的前提下,通过有效的自主探索策略,实现完全自主的环境观测以及地图构建是非常重要过程。传统的机器人利用地图执行多点目标导航任务,用户一次只能发布单个目标给下位机,并不能实现多目标点的自主导航。
技术实现要素:
为了解决上述问题,本发明的目的是提供基于turtlebot2机器人构建地图的多目标点自主导航方法,可以使得turtlebot2机器人能够实现多目标点的自主导航,提高机器人的智能化。
为了弥补现有技术的不足,本发明采用的技术方案是:
基于turtlebot2机器人构建地图的多目标点自主导航方法,包括以下步骤:
s1、构建地图;
s2、获取多个目标位置信息;
s3、获取机器人初始位姿;
s4、ros中的导航包驱动机器人向任一目标位置移动;
s5、ros中的定位包获取当前机器人实时位姿;
s6、机器人到达目标位置,更新机器人初始位姿为当前到达的目标位置和机器人当前的状态;
s7、返回执行步骤s4直至获取到的多个目标位置都到达完毕。
进一步,所述步骤s1中的构建地图包括以下步骤:
s11、坐标框架转换;
s12、激光雷达扫描和收集环境数据;
s13、将激光雷达收集到的环境数据通过步骤s11转换为机器人坐标系数据并且将转换后的机器人坐标系数据运用栅格地图构建算法构建地图。
进一步,所述步骤s11坐标框架转换包括里程计坐标系向机器人坐标系转换和激光雷达坐标系向机器人坐标系转换。
进一步,所述步骤s13中的栅格地图构建算法,表示为
进一步,所述步骤s6更新机器人初始位姿为到达的目标位置和机器人当前的状态之后还包括计算存储机器人所行驶距离和到达目标位置所利用的时间。
本发明的有益效果是:turtlebot2机器人首先构建地图,然后机器人接收到设定的目标位置,控制机器人消息进行发布并且订阅move_base动作服务,接着获取机器人初始位姿,进而导航包move_base驱动机器人向所获取到的目标位置进行移动,利用定位包amcl_pose可以获取机器人当前所处的位置坐标信息,当所处的位置坐标信息与获取的目标位置坐标一致的时候,机器人停下来,将已到达的目标位置从最开始接收到的目标名单中进行去除,接着将当前的目标位置坐标和当前机器人的状态作为新的初始位姿,继续向下一个目标位置进行移动,直到开始所获得的目标位置都已经到达完毕;通过这样的方式,机器人在开始的时候可以接收到多个目标位置,然后可以连续地分别达各个目标位置,不用像以前那样需要断续地给机器人设定目标位置,使得机器人更加智能化。
附图说明
下面结合附图给出本发明较佳实施例,以详细说明本发明的实施方案。
图1是本发明方法的步骤流程示意图。
具体实施方式
参照图1,基于turtlebot2机器人构建地图的多目标点自主导航方法,包括以下步骤:
s1、构建地图;
s2、获取多个目标位置信息;
s3、获取机器人初始位姿;
s4、ros中的导航包驱动机器人向任一目标位置移动;
s5、ros中的定位包获取当前机器人实时位姿;
s6、机器人到达目标位置,更新机器人初始位姿为当前到达的目标位置和机器人当前的状态;
s7、返回执行步骤s4直至获取到的多个目标位置都到达完毕。
其中,turtlebot的目的是给入门级的机器人爱好者或者从事移动机器人编程开发者提供一个基础开发平台,使得人们可以利用turtlebot自带的软硬件,专注于应用程序的开发。避免了设计草图,购买、加工材料、设计电路、编写程序、组装等一系列工作。借助这种机器人平台,可以节省很多前期工作,只要根据平台的软硬件接口,就能开发出所需要的功能。turtlebot2为二代turtlebot,turtlebot2的硬件主要有移动底座、视觉传感器、电池和可装卸的结构模块;使用ros作为操作系统,能实现2d地图导航、跟随等功能。ros是一个机器人软件平台,ros通信机制是点对点的分布式通信机制是ros的核心,使用了基于tcp/ip的通信方式,实现模块间点对点的松耦合连接,可以执行若干种类型的通信,包括基于话题的异步数据流通信,基于服务的同步数据流通信,还有参数服务器上的数据存储等。导航包move_base可以让机器人移动至我们指定的目标地点,其中包含避障,路径规划等功能。定位包amcl_pose可以让机器人利用slam或odometry数据实时定位。turtlebot2机器人首先构建地图,然后机器人接收到设定的目标位置,控制机器人消息进行发布并且订阅move_base动作服务,还可以设置接受move_base服务时间,当没有连接move_base服务的时候,机器人停止运动;当连接到move_base服务的时候,控制端获取机器人初始位姿,进而move_base驱动机器人向所获取到的目标位置进行移动,利用定位包amcl_pose可以获取机器人当前所处的位置坐标信息,当所处的位置坐标信息与获取的目标位置坐标一致的时候,机器人停下来,将已到达的目标位置从最开始接收到的目标名单中进行去除,接着将当前的目标位置坐标和机器人当前的状态作为新的初始位姿,继续向下一个目标位置进行移动,直到开始所获得的目标位置都已经到达完毕;通过这样的方式,机器人在开始的时候可以接收到多个目标位置,然后可以连续地分别达各个目标位置,不用像以前那样需要断续地给机器人设定目标位置,使得机器人更加智能化。
其中,所述步骤s1中的构建地图包括以下步骤:s11、坐标框架转换;s12、激光雷达扫描和收集环境数据;s13、将激光雷达收集到的环境数据通过步骤s11转换为机器人坐标系数据并且将转换后的机器人坐标系数据运用栅格地图构建算法构建地图。机器人在创建地图的过程中需要进行坐标框架的转换,即为激光雷达坐标系向机器人坐标系转换和里程计坐标系向机器人坐标系转换;然后利用激光雷达进行周围环境扫描采集数据;然后将激光雷达采集到的数据转换为机器人坐标系的数据,最后将机器人坐标系的数据运用栅格地图构建算法进行地图的构建,这种地图的构建方法流程有效且具备很高的准确性。
其中,所述步骤s11坐标框架转换包括里程计坐标系向机器人坐标系转换和激光雷达坐标系向机器人坐标系转换。机器人可以通过各种传感器来获取周围环境信息,使得周围环境的构建更加具有准确性,根据定位方法的不同,传感器可以分为内部传感器和外部传感器两大类,内部传感器又称为相对定位传感器,而里程计为内部传感器,主要用于监测机器人的自身状态;外部传感器又称为绝对定位传感器,激光雷达为外部传感器;为了后面导航的准确性,因此需要将机器人上的里程计坐标系和激光雷达坐标系转换为机器人的坐标系;kobuki为机器人底盘,作为广泛使用的研究平台。ros提供的tf变换就是为解决坐标变换而生的,只需要告诉tf树参考系之间的变换公式即可,tf就是使用这样的树结构,保证每两个参考系之间只有一种遍历方式,而且所有变换关系,都是母节点到子节点的变换。toutlebot2机器人提供kobuki底盘包可以获取里程计信息,发布机器人坐标系与里程计坐标系关系;雷达固定在机器人坐标系中,就需要知道机器人坐标系与雷达坐标系的关系,编写节点程序发布两者坐标关系,从而形成tf结构树;通过tf结构树,从而里程计的数据和激光雷达收集的数据都可以快速地转换为机器人坐标系数据。
其中,所述步骤s12激光雷达扫描和收集地图数据包括建立工作空间,创建激光雷达包,利用cmake编译系统编译创建的激光雷达包,进而生成激光雷达节点和激光雷达节点客户端两个节点,运行ros中的可视化平台rviz观察雷达扫描结果,并且将扫描所得的数据信息记录下来,为栅格地图算法提供相关数据。其中cmake是一种跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程,它可以编译源代码、制作程式库、产生适配器、还可以用任意的顺序建构执行档;rviz是ros自带的一个图形化工具,可以方便地对ros的程序进行图形化操作。
其中,所述步骤s13中的栅格地图构建算法,表示为
其中,所述步骤s6更新机器人初始位姿为到达的目标位置和机器人当前的状态之后还包括计算存储机器人所行驶距离和到达目标位置所利用的时间。人们可以首先设定机器人到达目标位置停留的时间和到达状态返回值,机器人到达目标位置的时候,分别记录行驶的距离和所经历的时间,当机器人到达完所有获取到的目标位置的时候,控制机器人的终端就会输出到达目标位置的状态、行驶时间和行驶距离等信息,从而人们可以直观地了解机器人所到达目标位置的相关信息。
以上内容对本发明的较佳实施例和基本原理作了详细论述,但本发明并不局限于上述实施方式,熟悉本领域的技术人员应该了解在不违背本发明精神的前提下还会有各种等同变形和替换,这些等同变形和替换都落入要求保护的本发明范围内。