CN107272680B - 一种基于ros机器人操作系统的机器人自动跟随方法 - Google Patents
一种基于ros机器人操作系统的机器人自动跟随方法 Download PDFInfo
- Publication number
- CN107272680B CN107272680B CN201710455840.0A CN201710455840A CN107272680B CN 107272680 B CN107272680 B CN 107272680B CN 201710455840 A CN201710455840 A CN 201710455840A CN 107272680 B CN107272680 B CN 107272680B
- Authority
- CN
- China
- Prior art keywords
- robot
- pedestrian
- leg
- array
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012952 Resampling Methods 0.000 claims abstract description 16
- 238000001514 detection method Methods 0.000 claims description 11
- 230000007613 environmental effect Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000007812 deficiency Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 235000000177 Indigofera tinctoria Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229940097275 indigo Drugs 0.000 description 1
- COHYTHOBJLSHDF-UHFFFAOYSA-N indigo powder Natural products N1C2=CC=CC=C2C(=O)C1=C1C(=O)C2=CC=CC=C2N1 COHYTHOBJLSHDF-UHFFFAOYSA-N 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0257—Control of position or course in two dimensions specially adapted to land vehicles using a radar
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Aviation & Aerospace Engineering (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明公开了一种基于ROS机器人操作系统的机器人自动跟随方法,该方法是使用激光雷达采集数据,对数据进行预处理,使用层次聚类算法对数据进行聚类,以行人双腿模型作为行人识别特征,以双腿中间位置代表行人位置,以重采样的方法解决激光雷达特征不明显,识别率低的缺点。本发明方法合理利用ROS机器人系统进行实现,方便各部分之间的消息传递和功能实现,利用了ROS的导航框架,使机器人自动跟随过程中,具备一定的导航避障能力。
Description
技术领域
本发明涉及机器人控制的技术领域,尤其是指一种基于ROS机器人操作系统的机器人自动跟随方法。
背景技术
近些年来,机器人技术发展迅速,取得了惊人的成果,越来越多的机器人代替人类在各个领域发挥了不可替代的作用。尤其是人工智能(AI)时代的到来,许多新型机器人应运而生。例如家居服务机器人,导购机器人,扫地机器人等。机器人技术已经成为推动人类进步发展的重要技术之一。机器人自动跟随功能是机器人技术的一个重要方面,在许多应用场合都需要具备自动跟随功能。例如家居服务机器人,导购机器人等。因此,对机器人自动跟随技术进行研究,具有非常重要的意义。
目前实现机器人自动跟随方法有很多,其中应用最多的是基于视觉的机器人自动跟随技术。通过摄像机识别行人目标,从而实现自动跟随。基于视觉的行人检测,受光照、摄像机视野范围的影响,在某些应用场合并不能发挥理想的效果。另一种是基于激光雷达的自动跟随技术,激光雷达能够较精确的获得周围环境的距离信息,且不受光照等环境因素的影响,但由于激光雷达只能采集行人的距离信息,特征并不明显,所以对算法的要求较高,往往对行人的检测精度并不是很高,所以需要对行人检测以及跟随算法进行优化。
综合以上论述,发明一种精度较高、适用环境范围广的机器人自动跟随方法具有较高的实际应用价值。
发明内容
本发明的目的在于克服传统的基于视觉和基于激光雷达的机器人自动跟随技术的不足,提出了一种基于ROS机器人操作系统的机器人自动跟随方法,采用一定时间内进行重采样的方法,解决激光雷达特征不足,行人识别准确率较低的缺点,并利用ROS机器人操作系统进行实现,合理利用了ROS的Navigation框架,使机器人在自动跟随过程中具备一定的路径规划和避障能力。
为实现上述目的,本发明所提供的技术方案为:一种基于ROS机器人操作系统的机器人自动跟随方法,包括以下步骤:
1)传感器数据处理:使用激光雷达采集数据,对数据进行预处理,剔除那些超出预设范围的数据,并将结果转化到全局坐标系;
2)数据聚类:使用层次聚类算法对数据进行聚类,去除噪声点并对环境进行分割;
3)行人识别:对聚类后的结果进行行人识别,以类圆弧算法识别行人腿部模型,以行人双腿特征作为行人检测特征,识别出可能的行人位置;
4)重采样:在设定时间内对行人重新进行检测,根据前后两次检测结果,排除干扰项,锁定行人目标,并综合利用机器人当前位置和行人位置,确定下一时刻目标位置,避免机器人与行人碰撞;
5)导航:根据行人目标确定导航目标,使用A*算法规划出全局路径,并使用dwa动态窗口算法规划局部路径,控制机器人朝导航目标运动,并实时避开障碍物。
在步骤1)中,使用激光雷达采集数据,对数据进行预处理,将数据限制在[min_size,max_size]范围内:
min_size≤data_useful≤max_size
其中,min_size、max_size分别代表最小和最大的激光雷达数据,data_useful代表有效数据;
利用ROS的tf框架,将采集的数据从激光雷达坐标系tf/laser转化到全局坐标系tf/base_link,scan代表在激光雷达坐标系tf/laser下的数据类型,detect_data代表在全局坐标系tf/base_link下的数据类型:
在步骤2)中,使用层次聚类算法进行聚类的步骤如下:
2.1)将detect_data的每一个元素当成一个类,计算相邻每个类的最小距离;
2.2)将距离小于lei_size的两个类合并为一个类,lei_size表示可以合并成一类的两个数据的最小距离;
2.3)重新计算新类与所有类之间的距离;
2.4)重复步骤2.2)、2.3),直到所有类不能再合并为止;
根据每个类的元素个数对所有类进行选择,保留元素个数在[num_min,num_max]之间的类,从而分割出聚类点数多的环境墙体,以及聚类点数少的噪声点,num_min、num_max分别代表最小和最大元素个数。
在步骤3)中,以类圆弧算法识别行人腿部模型,以行人双腿模型作为行人识别特征:
3.1)计算每个类的总长度Lk和首尾元素的直线距离Dk:
其中classk[n]代表聚类后的结果,k表示类的标号,n表示一个类中元素的数量,i代表一个类中元素的标号,classk[i].x、classk[i].y分别代表第k个类的第i个元素的横坐标和纵坐标;
3.2)计算每个类的弯曲度Curve[k],k表示类的标号:
3.3)判断Curve[k]>δc,且Lmin<Lk<Lmax,则把该类当成候选Leg簇,δc表示最小的曲率,Lmin、Lmax分别代表最小和最大的类长度;
3.4)计算所有候选Leg簇的中心坐标:
其中xc和yc分别代表第k个类的中心的横坐标和纵坐标,将所有类的中心坐标记为Leg_Array[n](xc,yc),n代表类的数量;
3.5)计算Leg_Array[n]中每两个Leg之间的距离Dist_Leg:
其中,Leg_Array[k].x、Leg_Array[k].y和Leg_Array[k+1].x、Leg_Array[k+1].y分别代表第k个Leg和第k+1个Leg位置的横坐标和纵坐标,若Dist_Leg[k]<Leg_dist,Leg_dist表示允许的最大行人双腿间距,则计算Leg_Array[k]和Leg_Array[k+1]的中间位置,作为可能的行人坐标:
xp=(Leg_Array[k].x+Leg_Array[k+1].x)/2
yp=(Leg_Array[k].y+Leg_Array[k+1].y)/2。
xp和yp分别代表可能的行人位置的横坐标和纵坐标,将所有可能的行人位置记为People_Array[n](xp,yp),n代表可能的行人数量;
在步骤4)中,是在dt时间内重新执行步骤1)~3)将得到的结果记为People_Array_New[n](xp,yp),n代表可能的行人数量,并进行以下步骤:
4.1)比较People_Array(xp,yp)和People_Array_New(xp,yp)相对应的每一个元素,计算相对应元素之间的距离Dist_People[k],k代表元素标号:
其中People_Array[k].xp、People_Array[k].yp和People_Array_New[k].xp、People_Array_New[k].yp分别代表重采样之前和重采样后的第k个可能的行人位置的横坐标和纵坐标;
4.2)将min_dist≤Dist_People[k]≤max_dist,对应的People_Array_New[k]确定为最终的行人位置People_pos(x,y),min_dist、max_dist分别代表最小和最大的行人移动距离;
4.3)利用机器人电机编码器的数据,计算出机器人在全局坐标系下的当前位置Robot_pos(x,y);
4.4)计算Robot_pos(x,y)到People_pos(x,y)的参数:
其中,Robot_pos.x、Robot_pos.y和People_pos.x、People_pos.y分别代表机器人位置和行人位置的横坐标和纵坐标,L表示机器人当前位置Robot_pos(x,y)与行人位置People_pos(x,y)的直线距离,θ表示机器人当前位置与行人位置的连线与横坐标的夹角;
4.5)以save_dist作为机器人跟随行人运动时的安全间距,计算最终的导航目标Navigation_goal(x,y):
Navigation_goal.x=Robot_pos.x+(L-save_dist)·cosθ
Navigation_goal.y=Robot_pos.y+(L-save_dist)·sinθ
Navigation_goal.x和Navigation_goal.y分别代表导航目标的横坐标和纵坐标;
4.6)以Navigation_goal(x,y)为消息类型,发布move_base/goal话题,发布导航目标。
在步骤5)中,利用ROS机器人操作系统提供的move_base导航框架,实现机器人的导航功能。move_base是ROS机器人操作系统提供的一个功能包,只要给定机器人的导航目标,输入激光雷达采集的数据、环境地图,通过设置导航参数,调用导航框架提供的全局路径规划和局部路径规划模块,即可实现机器人的自主导航。这里通过订阅move_base/goal话题,获得步骤4)发布的导航目标,通过订阅Laser_Scan话题获得激光雷达数据消息Scan,设置导航参数选用A*最短路径算法规划出全局路径,使用dwa动态窗口算法规划局部路径,避开障碍物,实现了机器人的导航。
本发明与现有技术相比,具有如下优点与有益效果:
1、使用单个激光雷达采集数据,相对于多激光雷达系统成本较低,且相对于视觉的自动跟随系统使用范围广。
2、使用重采样的方法,比较两次采样行人识别之后的结果,有效的解决了单个激光雷达特征较少,行人识别精度低的缺点。
3、具备导航模块,在机器人自动跟随过程中,能够根据环境信息,制定最短路径,并实时避开障碍物。
4、使用ROS机器人操作系统进行实现,合理利用了ROS机器人操作系统的节点、消息、话题机制,方便各部分之间的消息传递和功能实现。
附图说明
图1为本发明的系统框图。
图2为本发明的行人识别示意图。
图3为本发明的重采样锁定行人目标的示意图。
图4为本发明根据行人目标确定导航目标的示意图。
具体实施方式
下面结合具体实施例对本发明做进一步的说明。
本实施例所提供的基于ROS机器人操作系统的机器人自动跟随方法,包括以下步骤:
1)传感器数据处理:使用激光雷达采集数据,对数据进行预处理,剔除那些超出预设范围的数据,将数据限制在[min_size,max_size]范围内:
min_size≤data_useful≤max_size
其中,min_size、max_size分别代表最小和最大的激光雷达数据,data_useful代表有效数据;
利用ROS的tf框架,将采集的数据从坐标系tf/laser转化到全局坐标系tf/base_link,scan代表在激光雷达坐标系tf/laser下的数据类型,detect_data代表在全局坐标系tf/base_link下的数据类型:
2)数据聚类:使用层次聚类算法对数据进行聚类,去除噪声点并对环境进行分割。其中,使用层次聚类算法进行聚类的步骤如下:
2.1)将detect_data的每一个元素当成一个类,计算相邻每个类的最小距离;
2.2)将距离小于lei_size的两个类合并为一个类,lei_size表示可以合并成一类的两个数据的最小距离,取lei_size=0.06m;
2.3)重新计算新类与所有类之间的距离;
2.4)重复步骤2.2)、2.3),直到所有类不能再合并为止;
根据每个类的元素个数对所有类进行选择,保留元素个数在[num_min,num_max]之间的类,从而分割出聚类点数多的环境墙体,以及聚类点数少的噪声点,num_min、num_max分别代表最小和最大元素个数。
3)行人识别:对聚类后的结果进行行人识别,以类圆弧算法识别行人腿部模型,以行人双腿特征作为行人检测特征,识别出可能的行人位置。其中,以类圆弧算法识别行人腿部模型,以行人双腿模型作为行人识别特征,包括以下步骤:
3.1)计算每个类的总长度Lk和首尾元素的直线距离Dk:
其中classk[n]代表聚类后的结果,k表示类的标号,n表示一个类中元素的数量,i代表一个类中元素的标号,classk[i].x、classk[i].y分别代表第k个类的第i个元素的横坐标和纵坐标;
3.2)计算每个类的弯曲度Curve[k],k表示类的标号:
3.3)判断Curve[k]>δc,且Lmin<Lk<Lmax,则把该类当成候选Leg簇,δc表示最小的曲率,Lmin、Lmax分别代表最小和最大的类长度;
3.4)计算所有候选Leg簇的中心坐标:
其中xc和yc分别代表第k个类的中心的横坐标和纵坐标,将所有类的中心坐标记为Leg_Array[n](xc,yc),n代表类的数量;
3.5)计算Leg_Array[n]中每两个Leg之间的距离Dist_Leg:
其中,Leg_Array[k].x、Leg_Array[k].y和Leg_Array[k+1].x、Leg_Array[k+1].y分别代表第k个Leg和第k+1个Leg位置的横坐标和纵坐标,若Dist_Leg[k]<Leg_dist,Leg_dist表示允许的最大行人双腿间距,则计算Leg_Array[k]和Leg_Array[k+1]的中间位置,作为可能的行人坐标:
xp=(Leg_Array[k].x+Leg_Array[k+1].x)/2
yp=(Leg_Array[k].y+Leg_Array[k+1].y)/2
xp和yp分别代表可能的行人位置的横坐标和纵坐标,将所有可能的行人位置记为People_Array[n](xp,yp),n代表可能的行人数量;
4)重采样:在设定时间内对行人重新进行检测,根据前后两次检测结果,排除干扰项,锁定行人目标,并综合利用机器人当前位置和行人位置,确定下一时刻目标位置,避免机器人与行人碰撞。其中在dt时间内重新执行步骤1)~3)将得到的结果记为People_Array_New[n](xp,yp),并进行以下步骤:
4.1)比较People_Array(xp,yp)和People_Array_New(xp,yp)相对应的每一个元素,计算相对应元素之间的距离Dist_People[k],k代表元素标号:
其中People_Array[k].xp、People_Array[k].yp和People_Array_New[k].xp、People_Array_New[k].yp分别代表重采样之前和重采样后的第k个可能的行人位置的横坐标和纵坐标;
4.2)将min_dist≤Dist_People[k]≤max_dist,对应的People_Array_New[k]确定为最终的行人位置People_pos(x,y),min_dist、max_dist分别代表最小和最大的行人移动距离;
4.3)利用机器人电机编码器的数据,计算出机器人在全局坐标系下的当前位置Robot_pos(x,y);
4.4)计算Robot_pos(x,y)到People_pos(x,y)的参数:
其中,Robot_pos.x、Robot_pos.y和People_pos.x、People_pos.y分别代表机器人位置和行人位置的横坐标和纵坐标,L表示机器人当前位置Robot_pos(x,y)与行人位置People_pos(x,y)的直线距离,θ表示机器人当前位置与行人位置的连线与横坐标的夹角;
4.5)以save_dist作为机器人跟随行人运动时的安全间距,计算最终的导航目标Navigation_goal(x,y)
Navigation_goal.x=Robot_pos.x+(L-save_dist)cosθ
Navigation_goal.y=Robot_pos.y+(L-save_dist)sinθ
Navigation_goal.x和Navigation_goal.y分别代表导航目标的横坐标和纵坐标;
4.6)以Navigation_goal(x,y)为消息类型,发布move_base/goal Topic,发布导航目标。
5)导航:根据行人目标确定导航目标,使用A*算法规划出全局路径,并使用dwa动态窗口算法规划局部路径,控制机器人朝导航目标运动,并实时避开障碍物。具体是:利用ROS提供的move_base导航框架,订阅move_base/goal话题,获得导航目标,通过订阅Laser_Scan话题获得Scan消息,使用A*算法规划全局路径,使用dwa动态窗口算法规划局部路径,避开障碍物,实现了机器人的导航。
如图1所示,为本实施例上述方法用到的系统框架,包括Robot、激光雷达、数据预处理、行人识别以及Navigation五部分。下面分别介绍每部分的具体实现方式:
(1)Robot部分:本示例选用的是EAI科技的Dashgo移动机器人平台,控制器选用的是一台装有Ubuntu14.04的笔记本,在Linux中装有ROS indigo机器人操作系统。
(2)激光雷达部分:激光雷达作为本系统的数据输入,分别输入给行人检测模块,以及Navigation模块。选用的是EAI科技的Flash Lidar。能够360度全方位扫描,扫描频率为10Hz,角度分辨率β=1°,激光雷达安装机器人正上方0.3m处,测量有效距离6m。激光雷达的数据通过laser_Scan Topic发布,消息类型为Scan。
(3)数据预处理部分:通过订阅laser_Scan Topic,从激光雷达获得扫描数据,对数据进行预处理,对数据进行阈值控制,只对[min_size,max_size]范围内的数据进行行人检测,min_size、max_size分别代表最小和最大的激光雷达数据,data_useful代表有效数据:
min_size≤data_useful≤max_size
取max_size=5.0m,min_size=0.5m。由于激光雷达安装在机器人中心正上方30cm处,scan消息的数据是在激光雷达的安装位置定义的坐标系tf/laser下,所以将激光雷达的数据转化到全局坐标系tf/base_link,新消息类型定义为detect_data:
(4)行人识别部分:行人识别部分包括以下三部分:
a、聚类:使用层次聚类算法对数据进行聚类,步骤如下:
1)将detect_data的每一个元素当成一个类,计算相邻每个类的最小距离;
2)将距离小于lei_size的两个类合并为一个类,lei_size表示可以合并成一类的两个数据的最小距离,取lei_size=0.06m;
3)重新计算新类与所有类之间的距离;
4)重复2)、3),直到所有类不能再合并为止。
根据每个类的元素个数对所有类进行选择,保留元素个数在[num_min,num_max]之间的类,从而分割出聚类点数多的环境墙体,以及聚类点数少的噪声点,num_min、num_max分别代表最小和最大元素个数,取num_min=5,num_max=100。
b、行人识别:以类圆弧算法识别行人腿部模型,以行人双腿模型作为行人识别特征,如图2所示:
1)计算每个类的总长度Lk和首尾元素的直线距离Dk:
其中classk[n]代表聚类后的结果,k表示类的标号,n表示一个类中元素的数量,i代表一个类中元素的标号,classk[i].x、classk[i].y分别代表第k个类的第i个元素的横坐标和纵坐标;
2)计算每个类的弯曲度Curve[k],k表示类的标号:
3)判断Curve[k]>δc,且Lmin<Lk<Lmax,则把该类当成候选Leg簇,δc表示最小的曲率,取δc=1.1,Lmin、Lmax分别代表最小和最大的类长度,取Lmin=0.1m,Lmax=0.3m;
4)计算所有候选Leg簇的中心坐标Legk(xk,yk),将结果记为Leg_Array[n]中,n代表Leg的数量。
其中xc和yc分别代表第k个类的中心的横坐标和纵坐标,将所有类的中心坐标记为Leg_Array[n](xc,yc),n代表类的数量;
5)计算Leg_Array[n]中每两个Leg之间的距离Dist_Leg。
其中,Leg_Array[k].x、Leg_Array[k].y和Leg_Array[k+1].x、Leg_Array[k+1].y分别代表第k个Leg和第k+1个Leg位置的横坐标和纵坐标,若Dist_Leg[k]<1m,则计算Leg_Array[k]和Leg_Array[k+1]的中间位置,作为可能的行人坐标:
xp=(Leg_Array[k].x+Leg_Array[k+1].x)/2
yp=(Leg_Array[k].y+Leg_Array[k+1].y)/2
xp和yp分别代表可能的行人位置的横坐标和纵坐标,将所有可能的行人位置记为People_Array[n](xp,yp),n代表可能的行人数量;
c、重采样:在dt时间内重新执行步骤采集数据,对数据进行预处理、聚类、行人识别,将得到的结果记为People_Array_New[n](xp,yp),并进行以下步骤:
1)比较People_Array(xp,yp)和People_Array_New(xp,yp)相对应的每一个元素,计算相对应元素之间的距离Dist_People[k],k代表元素标号:
其中People_Array[k].xp、People_Array[k].yp和People_Array_New[k].xp、People_Array_New[k].yp分别代表重采样之前和重采样后的第k个可能的行人位置的横坐标和纵坐标;
2)将0.1m≤Dist_People[k]≤1m对应的People_Array_New[k]确定为最终的行人位置,并赋值给People_pos(x,y)。如图3所示,计算可得Dist_People[0]=0,Dist_People[1]=0.3m,Dist_People[2]=0,故People_pos(x,y)=People_Array_New[1]。
3)利用机器人电机编码器的数据,计算出机器人在全局坐标系下的当前位置Robot_pos(x,y)通,过监听/odom坐标系到/base_link坐标系的tf变换实现;
4)计算Robot_pos(x,y)到People_pos(x,y)的参数,如图4所示:
其中,Robot_pos.x、Robot_pos.y和People_pos.x、People_pos.y分别代表机器人位置和行人位置的横坐标和纵坐标,L表示机器人当前位置Robot_pos(x,y)与行人位置People_pos(x,y)的直线距离,θ表示机器人当前位置与行人位置的连线与横坐标的夹角;
5)以save_dist=0.5m作为安全距离,计算最终的导航目标Navigation_goal(x,y):
Navigation_goal.x=Robot_pos.x+(L-save_dist)cosθ
Navigation_goal.y=Robot_pos.y+(L-save_dist)sinθ
Navigation_goal.x和Navigation_goal.y分别代表导航目标的横坐标和纵坐标;
6)以Navigation_goal(x,y)为消息类型,发布move_base/goal Topic,发布导航目标。
(4)Navigation部分:这里使用的是ROS机器人操作系统的move_base导航框架,主要包括全局路径规划和局部路径规划。订阅move_base/goal话题,获得下一时刻的目标,使用A*算法规划出全局路径,订阅laser_Scan话题,使用dwa算法规划局部路径,合理控制机器人速度和加速度,朝目标运动,离目标较远时增大速度,离目标较近时降低速度,并实时避开障碍物。
以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (5)
1.一种基于ROS机器人操作系统的机器人自动跟随方法,其特征在于,包括以下步骤:
1)传感器数据处理:使用激光雷达采集数据,对数据进行预处理,剔除那些超出预设范围的数据,并将结果转化到全局坐标系;
2)数据聚类:使用层次聚类算法对数据进行聚类,去除噪声点并对环境进行分割;
3)行人识别:对聚类后的结果进行行人识别,以类圆弧算法识别行人腿部模型,以行人双腿特征作为行人检测特征,识别出可能的行人位置;
其中,以类圆弧算法识别行人腿部模型,以行人双腿模型作为行人识别特征,步骤如下:
3.1)计算每个类的总长度Lk和首尾元素的直线距离Dk:
其中classk[n]代表聚类后的结果,k表示类的标号,n表示一个类中元素的数量,i代表一个类中元素的标号,classk[i]·x、classk[i]·y分别代表第k个类的第i个元素的横坐标和纵坐标;
3.2)计算每个类的弯曲度Curve[k],k表示类的标号:
3.3)判断Curve[k]>δc,且Lmin<Lk<Lmax,则把该类当成候选Leg簇,δc表示最小的曲率,Lmin、Lmax分别代表最小和最大的类长度;
3.4)计算所有候选Leg簇的中心坐标:
其中xc和yc分别代表第k个类的中心的横坐标和纵坐标,将所有类的中心坐标记为Leg_Array[n](xc,yc),n代表类的数量;
3.5)计算Leg_Array[n]中每两个Leg之间的距离Dist_Leg:
其中,Leg_Array[k].x、Leg_Array[k].y和Leg_Array[k+1].x、Leg_Array[k+1].y分别代表第k个Leg和第k+1个Leg位置的横坐标和纵坐标,若Dist_Leg[k]<Leg_dist,Leg_dist表示允许的最大行人双腿间距,则计算Leg_Array[k]和Leg_Array[k+1]的中间位置,作为可能的行人坐标:
xp=(Leg_Array[k].x+Leg_Array[k+1].x)/2
yp=(Leg_Array[k].y+Leg_Array[k+1].y)/2
xp和yp分别代表可能的行人位置的横坐标和纵坐标,将所有可能的行人位置记为People_Array[n](xp,yp),n代表可能的行人数量;
4)重采样:在设定时间内对行人重新进行检测,根据前后两次检测结果,排除干扰项,锁定行人目标,并综合利用机器人当前位置和行人位置,确定下一时刻目标位置,避免机器人与行人碰撞;
5)导航:根据行人目标确定导航目标,使用A*算法规划出全局路径,并使用dwa动态窗口算法规划局部路径,控制机器人朝导航目标运动,并实时避开障碍物。
2.根据权利要求1所述的一种基于ROS机器人操作系统的机器人自动跟随方法,其特征在于,在步骤1)中,使用激光雷达采集数据,对数据进行预处理,将数据限制在[min_size,max_size]范围内:
min_size≤data_useful≤max_size
其中,min_size、max_size分别代表最小和最大的激光雷达数据,data_useful代表有效数据;
利用ROS的tf框架,将采集的数据从激光雷达坐标系tf/laser转化到全局坐标系tf/base_link,scan代表在激光雷达坐标系tf/laser下的数据类型,detect_data代表在全局坐标系tf/base_link下的数据类型:
3.根据权利要求1所述的一种基于ROS机器人操作系统的机器人自动跟随方法,其特征在于,在步骤2)中,使用层次聚类算法进行聚类的步骤如下:
2.1)将detect_data的每一个元素当成一个类,计算相邻每个类的最小距离;
2.2)将距离小于lei_size的两个类合并为一个类,lei_size表示可以合并成一类的两个数据的最小距离;
2.3)重新计算新类与所有类之间的距离;
2.4)重复步骤2.2)、2.3),直到所有类不能再合并为止;
根据每个类的元素个数对所有类进行选择,保留元素个数在[num_min,num_max]之间的类,从而分割出聚类点数多的环境墙体,以及聚类点数少的噪声点,num_min、num_max分别代表最小和最大元素个数。
4.根据权利要求1所述的一种基于ROS机器人操作系统的机器人自动跟随方法,其特征在于:在步骤4)中,利用的是行人走动时,行人的位置是不断更新变化的,而环境当中的物体是固定不动的特点,采用在dt时间内重新执行步骤1)~步骤3),将得到的结果记为People_Array_New[n](xp,yp),n代表可能的行人数量,并进行以下步骤:
4.1)比较People_Array(xp,yp)和People_Array_New(xp,yp)相对应的每一个元素,计算相对应元素之间的距离Dist_People[k],k代表元素标号:
其中People_Array[k].xp、People_Array[k].yp和People_Array_New[k].xp、People_Array_New[k].yp分别代表重采样之前和重采样后的第k个可能的行人位置的横坐标和纵坐标;
4.2)将min_dist≤Dist_People[k]≤max_dist,对应的People_Array_New[k]确定为最终的行人位置People_pos(x,y),min_dist、max_dist分别代表最小和最大的行人移动距离;
4.3)利用机器人电机编码器的数据,计算出机器人在全局坐标系下的当前位置Robot_pos(x,y);
4.4)计算Robot_pos(x,y)到People_pos(x,y)的参数:
其中,Robot_pos.x、Robot_pos.y和People_pos.x、People_pos.y分别代表机器人位置和行人位置的横坐标和纵坐标,L表示机器人当前位置Robot_pos(x,y)与行人位置People_pos(x,y)的直线距离,θ表示机器人当前位置与行人位置的连线与横坐标的夹角;
4.5)以save_dist作为机器人跟随行人运动时的安全间距,计算最终的导航目标Navigation_goal(x,y):
Navigation_goal.x=Robot_pos.x+(L-save_dist)·cosθ
Navigation_goal.y=Robot_pos.y+(L-save_dist)·sinθ
Navigation_goal.x和Navigation_goal.y分别代表导航目标的横坐标和纵坐标;
4.6)以Navigation_goal(x,y)为消息类型,发布move_base/goal话题,发布导航目标。
5.根据权利要求1所述的一种基于ROS机器人操作系统的机器人自动跟随方法,其特征在于:在步骤5)中,利用ROS机器人操作系统提供的move_base导航框架,实现机器人的导航功能,其中,move_base是ROS机器人操作系统提供的一个功能包,只要给定机器人的导航目标,输入激光雷达采集的数据、环境地图,通过设置导航参数,调用导航框架提供的全局路径规划和局部路径规划模块,即可实现机器人的自主导航;其次,通过订阅move_base/goal话题,获得步骤4)发布的导航目标,通过订阅Laser_Scan话题获得激光雷达数据消息Scan,设置导航参数选用A*最短路径算法规划出全局路径,使用dwa动态窗口算法规划局部路径,避开障碍物,实现机器人的导航。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710455840.0A CN107272680B (zh) | 2017-06-16 | 2017-06-16 | 一种基于ros机器人操作系统的机器人自动跟随方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710455840.0A CN107272680B (zh) | 2017-06-16 | 2017-06-16 | 一种基于ros机器人操作系统的机器人自动跟随方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107272680A CN107272680A (zh) | 2017-10-20 |
CN107272680B true CN107272680B (zh) | 2019-10-18 |
Family
ID=60066378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710455840.0A Active CN107272680B (zh) | 2017-06-16 | 2017-06-16 | 一种基于ros机器人操作系统的机器人自动跟随方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107272680B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107703948B (zh) * | 2017-11-14 | 2020-09-29 | 上海理工大学 | 基于自适应动态窗口的移动机器人局部动态路径规划方法 |
CN108170166A (zh) * | 2017-11-20 | 2018-06-15 | 北京理工华汇智能科技有限公司 | 机器人的跟随控制方法及其智能装置 |
CN108107884A (zh) * | 2017-11-20 | 2018-06-01 | 北京理工华汇智能科技有限公司 | 机器人跟随导航的数据处理方法及其智能装置 |
CN108303089A (zh) * | 2017-12-08 | 2018-07-20 | 浙江国自机器人技术有限公司 | 基于三维激光的绕障方法 |
CN108345004A (zh) * | 2018-02-09 | 2018-07-31 | 弗徕威智能机器人科技(上海)有限公司 | 一种移动机器人的人体跟随方法 |
CN110320531B (zh) * | 2018-03-30 | 2021-09-03 | 郑州宇通客车股份有限公司 | 基于激光雷达的障碍物识别方法、地图创建方法及装置 |
CN108614563A (zh) * | 2018-06-12 | 2018-10-02 | 北京康力优蓝机器人科技有限公司 | 一种通过定位导航实现移动机器人目标跟随的方法 |
TWI695180B (zh) * | 2018-07-24 | 2020-06-01 | 國立交通大學 | 機器人導引方法 |
CN108873911A (zh) * | 2018-07-26 | 2018-11-23 | 河海大学常州校区 | 一种基于ros的自动跟随行李箱及其控制方法 |
CN109241999A (zh) * | 2018-08-07 | 2019-01-18 | 北京云迹科技有限公司 | 机器人、用于机器人的物体识别装置及物体识别方法 |
US10901425B2 (en) | 2018-11-30 | 2021-01-26 | Honda Motor Co., Ltd. | Systems and methods for navigational planning |
CN109822563A (zh) * | 2018-12-08 | 2019-05-31 | 浙江国自机器人技术有限公司 | 用于idc机器人的任务跟随方法 |
CN109755995B (zh) * | 2018-12-14 | 2020-07-28 | 华南理工大学 | 基于ros机器人操作系统的机器人自动充电对接方法 |
US11986964B2 (en) | 2018-12-27 | 2024-05-21 | Honda Motor Co., Ltd. | Path determination device, robot, and path determination method |
CN111736581B (zh) * | 2019-03-19 | 2024-04-02 | 北京奇虎科技有限公司 | 一种智能移动设备的全局路径规划方法和装置 |
CN110281243B (zh) * | 2019-07-02 | 2022-05-17 | 佛山科学技术学院 | 一种采摘机器人作业序列规划方法 |
CN110509271A (zh) * | 2019-07-23 | 2019-11-29 | 国营芜湖机械厂 | 一种基于激光雷达的跟随机器人控制方法 |
CN110757477A (zh) * | 2019-10-31 | 2020-02-07 | 昆山市工研院智能制造技术有限公司 | 一种陪护机器人的高度方位自适应调整方法及陪护机器人 |
CN110687923B (zh) * | 2019-11-08 | 2022-06-17 | 深圳市道通智能航空技术股份有限公司 | 无人机长距离循迹飞行方法、装置、设备及存储介质 |
CN110908374B (zh) * | 2019-11-14 | 2021-04-23 | 华南农业大学 | 一种基于ros平台的山地果园避障系统及方法 |
CN110609561A (zh) * | 2019-11-18 | 2019-12-24 | 深圳市优必选科技股份有限公司 | 一种行人跟踪方法、装置、计算机可读存储介质及机器人 |
CN110906946A (zh) * | 2019-12-02 | 2020-03-24 | 大连理工大学 | 一种区分人员影响的服务机器人导航规划方法 |
CN112346460B (zh) * | 2020-11-05 | 2022-08-09 | 泉州装备制造研究所 | 一种适用于多人场景的移动机器人自动跟随方法 |
CN112904855B (zh) * | 2021-01-19 | 2022-08-16 | 四川阿泰因机器人智能装备有限公司 | 基于改进动态窗口的跟随机器人局部路径规划方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014153429A1 (en) * | 2013-03-20 | 2014-09-25 | Trimble Navigation Limited | Indoor navigation system and method |
CN104914870A (zh) * | 2015-07-08 | 2015-09-16 | 中南大学 | 基于岭回归超限学习机的户外机器人局部路径规划方法 |
CN105487535A (zh) * | 2014-10-09 | 2016-04-13 | 东北大学 | 一种基于ros的移动机器人室内环境探索系统与控制方法 |
CN105676848A (zh) * | 2016-03-11 | 2016-06-15 | 湖南人工智能科技有限公司 | 一种基于ros操作系统的机器人自主导航方法 |
CN106127148A (zh) * | 2016-06-21 | 2016-11-16 | 华南理工大学 | 一种基于机器视觉的手扶电梯乘客异常行为检测算法 |
CN106155065A (zh) * | 2016-09-28 | 2016-11-23 | 上海仙知机器人科技有限公司 | 一种机器人跟随方法及用于机器人跟随的设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110024086A (ko) * | 2009-09-01 | 2011-03-09 | 한국전자통신연구원 | 다중 운영자 다중 로봇환경에서 이동 로봇의 운용권 이양/획득 방법 및 그 시스템 |
-
2017
- 2017-06-16 CN CN201710455840.0A patent/CN107272680B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014153429A1 (en) * | 2013-03-20 | 2014-09-25 | Trimble Navigation Limited | Indoor navigation system and method |
CN105487535A (zh) * | 2014-10-09 | 2016-04-13 | 东北大学 | 一种基于ros的移动机器人室内环境探索系统与控制方法 |
CN104914870A (zh) * | 2015-07-08 | 2015-09-16 | 中南大学 | 基于岭回归超限学习机的户外机器人局部路径规划方法 |
CN105676848A (zh) * | 2016-03-11 | 2016-06-15 | 湖南人工智能科技有限公司 | 一种基于ros操作系统的机器人自主导航方法 |
CN106127148A (zh) * | 2016-06-21 | 2016-11-16 | 华南理工大学 | 一种基于机器视觉的手扶电梯乘客异常行为检测算法 |
CN106155065A (zh) * | 2016-09-28 | 2016-11-23 | 上海仙知机器人科技有限公司 | 一种机器人跟随方法及用于机器人跟随的设备 |
Non-Patent Citations (2)
Title |
---|
Detection and tracking of human legs for a mobile service robot;Hoyeon Kim,etc;《2010 IEEE/ASME International Conference on Advanced Intelligent Mechatronics》;20100709;第812-817页 * |
https://wenku.baidu.com/view/b70e5289b7360b4c2f3f6497.html?from=search;Robotdreamsky;《ROS机器人导航 》;20150916;第1-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107272680A (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107272680B (zh) | 一种基于ros机器人操作系统的机器人自动跟随方法 | |
KR102596388B1 (ko) | 이동체의 이동 속성 획득 방법 및 이를 수행하는 장치 | |
Gao et al. | Object classification using CNN-based fusion of vision and LIDAR in autonomous vehicle environment | |
CN109755995B (zh) | 基于ros机器人操作系统的机器人自动充电对接方法 | |
CN110285813B (zh) | 一种室内移动机器人人机共融导航装置及方法 | |
Truong et al. | Deep learning-based super-resolution reconstruction and marker detection for drone landing | |
CN109657863B (zh) | 一种基于萤火虫算法的无人船全局路径动态优化方法 | |
CA3086261A1 (en) | Vehicle tracking | |
WO2022035776A1 (en) | Waypoint prediction and motion forecasting for vehicle motion planning | |
CN110717918B (zh) | 行人检测方法和装置 | |
CN109839118A (zh) | 路径规划方法、系统、机器人和计算机可读存储介质 | |
Kumar et al. | Indoor localization of vehicles using deep learning | |
CN115147790B (zh) | 一种基于图神经网络的车辆未来轨迹预测方法 | |
JP2020067896A (ja) | 進行可能方向検出装置及び進行可能方向検出方法 | |
Löffler et al. | Evaluation criteria for inside-out indoor positioning systems based on machine learning | |
Liu et al. | Dloam: Real-time and robust lidar slam system based on cnn in dynamic urban environments | |
Kawasaki et al. | Multimodal trajectory predictions for autonomous driving without a detailed prior map | |
CN115187944A (zh) | 一种车道线检测方法及装置 | |
Becker et al. | Generating synthetic training data for deep learning-based UAV trajectory prediction | |
CN113515131A (zh) | 基于条件变分自动编码器的移动机器人避障方法及系统 | |
US11467592B2 (en) | Route determination method | |
CN112907625A (zh) | 应用于四足仿生机器人的目标跟随方法及系统 | |
Long et al. | Egocentric two-frame pedestrian trajectory prediction algorithm based on a panoramic camera | |
Zernetsch et al. | Cyclist Trajectory Forecasts by Incorporation of Multi-View Video Information | |
Kress et al. | Pose based trajectory forecast of vulnerable road users |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |