您当前的位置: 主页 > 559955静心阁开奖结果 > 正文
一种基于ROS的移动机器人室内环境探索系统与控制方法
作者:admin      发布时间:2019-10-09

  该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】

  移动机器人得到从激光雷达采集的距离信息无法直接进行SLAM操作,因为这些数据是基于激光雷达中心来表示的,即这些数据在base_laser坐标系下。为了能够使用这些数据,需要进行数据的坐标变换,即从base_laser变换到base_link下。如图3所示的基本模型中,已知激光雷达测得位于在其正前方0.3m处有障碍物,而激光雷达安装于底盘前方0.1m,上方0.2m处。从而可以获取从base_link到base_laser的坐标变换关系,base_link坐标系平移(x:0.1m,y:0.0m,z:0.2m)。这样就可以得到障碍物到机器人底盘的距离。如图4所示,假设base_link为父节点,因为所有传感器都是基于底盘安装的。因此,base_link和base_laser之间的变换矩阵为(x:0.1m,y:0.0m,z:0.2m)。设置完TF系统后,需要创建用于发布变换信息的节点,然后创建收听变换信息的节点。ROS的TF系统都可以很方便地进行管理。

  地图获取阶段实际上就是激光雷达数据对环境进行描述,这个阶段也是将连续的环境距离信息进行离散化的阶段。然后将这些离散的数据进行匹配,将局部环境地图融合为全局环境地图。

  在地图获取阶段,首先就要定义单元栅格的大小。单元栅格越小,离散化程度越低;相反,单元栅格越大,离散程度越高。离散化的基本思想为:从机器人当前所在坐标开始,以单元栅格的尺寸向四周扩散,使得平面内铺满虚拟栅格,然后将激光雷达测距前端落到相应的栅格内,由栅格的占有概率值来代表所有落到该栅格内的测距前端数据。该算法通过双线所示,图中点Pm是待插值的栅格地图某点。因为栅格地图其自身离散的性质限制了地图所能达到的精度,所以要求先通过插值计算才能得到其地图数据,即将亚栅格单元的点通过双线性插值转化到栅格地图。图6为占有栅格地图离散化的效果。

  完成激光雷达数据离散化后,得到了局部占有栅格地图。然后通过扫描匹配阶段对激光雷达数据进行扫描匹配,也就是通过局部地图对移动机器人位姿进行估计。该算法可以不使用里程计而进行建图,使算法可以应用于操作人员手持建图设备或者是使里程计发生较大误差的不平坦环境中。

  求移动机器人位姿,需使得下式最小,也就是说要得到能够使激光扫描最佳的校准:

  这里,Si(ζ)是激光雷达扫描端点Si=(Si,x,Si,y)T在全局坐标系中的坐标。它们是机器人全局坐标系位姿ζ的函数:

  方程M(Si(ζ))将返回坐标Si(ζ)处的地图值。给定某个ζ的起始估计,估计Δζ使得测量误差最小:

  算法接下来对上式进行处理。首先对M(Si(ζ+Δζ))进行一阶泰勒展开得到:

  步骤五:利用Zigbee协议构建机器人与上位机间的无线通讯,实现上位机对机器人状态获取与对激光雷达获取的二维图进行实时监控。

  在同一路由器下,配置操作员端的主机和移动机器人的从机域名解析,从而完成机器人和上位机通信的配置。此时,两台PC机进行数据数据,只需要订阅同一个话题即可。通过该无线传感器,构建从操作员端电脑到移动机器人端电脑的控制线路网络。操作员可以发送位姿指令,移动机器人接收到通过无线网络传来的数据,然后在ROS的导航栈框架下进行位姿跟踪。

  Hector为ROS机器人操作系统的开源导航和建图库,如图7所示。它主要用于城市搜索和救援任务的移动机器人系统中,给出了基于ROS的程序架构与相应组件。Hector各个模块可以进行方便的独立开发和整合,满足不同配置移动机器人和特定救援场合的使用。其中最主要的组件为导航和建图组件(hector_slam),构建环境地图不仅能够将机器人所处的环境信息给操作人员,而且能够给导航库上层的路径规划组件提供可行区域和定位信息,hector_slam只负责进行2D建图。hector_slam的组件包括用于执行构图算法的hector_mapping,为其他组件提供地图数据服务的hector_map_server,将地图信息转化为图片信息的hector_geotiff和探索算法生成轨迹的hector_trajectory_server。hector_slam仅依靠激光雷达数据进行建图与定位,在道路特别崎岖的时候,还可以使用惯性导航对SLAM算法进行补偿,提供更高的定位精度。另外,如图8所示,通过hector_elevation_mapping,系统可以融合微软的Kinect深度摄像头,构建2.5D地图信息。Kinect得到的点云数据为2D地图中相应的栅格提供了高度信息及其方差。最后,hector_costmap可以融合2.5D高度地图与2D的占有栅格地图构建代价地图。

  机器人路径规划算法使用Dijkstra算法。具体为对一个有权重的图G进行操作,起点为S,V代表G中所有的定点的集合,E表示G中所有的边的集合。(u,v)表示从顶点u到顶点v的路径,边的权重为w:E→[0,∞],则w(u,v)是从顶点u到顶点v的非负代价,即两顶点之前的距离。一条路径的代价值等于从路径起点到终点所经过的边的代价值的总和。Dijkstra算法可以找到图G中任意两个顶点如s、t的最低代价路径,即最短路径。Dijkstra算法的流程图如图9所示。图10给出了Dijkstra算法的示例。算法具体步骤如下。

  Step1:如图10所示,算法开始时,开启列表中只有起点S,O={S},且nbest=S,对S节点的相邻节点进行遍历,并且将S加入关闭列表,则,O={2,4,1,5},C={S}。相应的从起点到当前点的代价函数分别为,f(2)=1,f(4)=1,f(1)=2,f(5)=4。代价函数最小的点位2和4,任取其一,令nbest=2,而且此时反向指针均指向起点S。

  Step2:对节点2的相邻节点进行遍历,此时O={4,1,5},C={S,2},而节点2的相邻节点只有S,而且S已经在关闭列表中,算法继续向下进行。

  Step3:对当前O={4,1,5}中的代价函数最小的节点4进行相邻节点遍历,nbest=4;同样,将4从开启列表移到关闭列表,O={1,5},C={S,2,4},4的相邻节点有S、3、5,其中S已经在关闭列表,不对其进行处理,而在开启列表中加入3。由于开启列表中有5,而且f(4)+c(4,5)=1+2=3小于前面f(5)=4,需要更新开启列表中5的代价函数,则f(5)=3,且5的反向指针指向4。

  Step4:此时开启列表和关闭列表分别为O={5,3},C={S,2,4},nbest=5。对节点5进行处理,5的相邻节点有3个,其中4和S已经在关闭列表中,不做处理,只剩终点G,因此把终点G放入开启列表,O={G,3},C={S,2,4,5}。

  Step5:当前代价函数最小的节点即为nbest=G,f(G)=f(5)+c(5,G)=5。将相应节点的反向指针取出,也就找到了一条从起点S到终点G的最短路径S→4→5→G。

  基于HectorSLAM的环境地图构建的基础上,从2016启动“中国天然氧吧”创建活动起,。机器人进行自主行驶建图。移动机器人在探索未知区域的时候,需要进行环境的建图,同时也需要设置建图规则,使得在相对较短的时间内能够得到最大的环境地图。

  本系统所使用的探索算法结合了现在常用的两种策略。向离机器人最近的前端移动可以进行快速的地图获取,扩展未知区域。同时考虑现有地图中前端的大小。前端较长的地方,往往意味着通过这里能够扩展较大的未知区域。对两个策略去权重进行加权。怮栠夔陬婥噱趙陬眳模媼忒陬厙 苤陬峊梒脤戙 酴漆 婓盄!移动机器人取其中能够最快得到最大地图的原则进行地图构建,直到将所有的探索前端探索完毕。

挂牌玄机图| 冠亚洲现金网| 香港最快开奖现场直播| 香港九龙网站开奖结果| 十二生肖对应的数字| 香港马会内部资料挂牌| 一肖中特免费公开资料| 118香港正版挂牌之全篇| 香港王中王高手论坛料| 大聚会心水论坛|