CN107238841A - 一种基于双反光柱的高精度激光定位与导航方法 - Google Patents
一种基于双反光柱的高精度激光定位与导航方法 Download PDFInfo
- Publication number
- CN107238841A CN107238841A CN201710572161.1A CN201710572161A CN107238841A CN 107238841 A CN107238841 A CN 107238841A CN 201710572161 A CN201710572161 A CN 201710572161A CN 107238841 A CN107238841 A CN 107238841A
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- mtd
- mtr
- centerdot
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S17/00—Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
- G01S17/02—Systems using the reflection of electromagnetic waves other than radio waves
- G01S17/06—Systems determining position data of a target
- G01S17/42—Simultaneous measurement of distance and other co-ordinates
Landscapes
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
- Optical Radar Systems And Details Thereof (AREA)
- Length Measuring Devices By Optical Means (AREA)
Abstract
本发明公开了一种基于双反光柱的高精度激光定位与导航方法,与传统技术中的几何三角定位不同,本发明深入挖掘并充分利用了反射光的复数域信息,打破了传统意义上三个反光柱的技术瓶颈,其运行条件为同时检测到两个反光柱的数据即可,大大提高了激光导航技术的适用性;通过滤波算法过滤掉测量误差引起的计算误差,极大地提高定位与导航精度;最后,虽然本发明最低要求为检测到两个反光柱,但实际应用时可能会同时检测到多个反光柱,通过设计数据融合处理,能够最大化利用反光柱的信息,从而进一步提高精度。
Description
技术领域
本发明属于智能仓储物流领域,具体涉及一种基于双反光柱的高精度激光定位与导航方法。
背景技术
基于激光传感器的定位与导航技术是工业AGV、智能机器人等领域的关键性技术,相比传统有轨导航方式,该技术具有定位精度高、灵活多变等优点,适用于复杂、高动态的工业场景中。国内外现有基于反光柱的激光定位技术,均采用了几何三角定位原理,每时每刻必须要求同时检测到三个反光柱才可实现定位。这一数量要求实际上在复杂工业场景中很难满足,极大地制约了激光定位与导航技术的实用性。
发明内容
为了解决上述问题,本发明提供一种新型激光定位与导航方法,通过提取和利用激光测距信息中的复数域信息,将三个反光柱的最低要求降低为两个,有效解决了反光柱最低数量的技术瓶颈,大大提高了激光导航技术的适用性。
本发明的目的是通过以下技术方案来实现的:一种基于双反光柱的高精度激光定位与导航方法,该方法包括:
(1)在工业环境中布置反光柱,预设反光柱世界坐标,生成反光柱坐标列表;
(2)安装在移动平台上的激光传感器向周围呈辐射状发射激光,并接收反射激光;
(3)筛选来源于反光柱的有效光束:预设强度阈值σ,通过检测反射激光强度I,并与σf(range)相比较,判定激光照射物是反光柱还是普通环境物体,其中f(range)与距离range负相关;
(4)确定当前时刻照射到的反光柱数量及其相对激光传感器的相对坐标:根据反射光束角度的连续性,判断是否为同一个反光柱,或者,根据反射光束角度和距离的连续性,判断是否为同一个反光柱;根据属于同一反光柱的反射光数据,结合反光柱半径进行数据修正,得到该反光柱相对于激光传感器的相对坐标,并存入反光柱列表;
(5)初始化反光柱列表,得到至少两个反光柱的世界坐标:人工确定初始位置对应的反光柱列表中至少两个反光柱的世界坐标;或者,激光传感器在初始位置获取至少三个反光柱返回的角度和距离,计算两两反光柱之间的距离,与根据反光柱坐标列表生成的反光柱距离信息相匹配,得到至少两个反光柱的世界坐标;
(6)在动态过程中计算期望反光柱列表:根据上一时刻对当前时刻激光传感器位置和角度的预测,估计激光传感器与所有反光柱之间的相对距离和角度,并存入期望反光柱列表;
(7)在动态过程中反光柱列表的匹配:计算当前时刻反光柱列表与期望反光柱列表中同一个反光柱对应的距离之差和角度之差,当距离之差和角度之差均满足预设阈值时,匹配成功;
(8)基于双反光柱数据的激光传感器位姿计算:利用激光传感器测量数据的复频域信息,在匹配成功的反光柱中任选两个:第l个和第k个,并计算:
zk=Xk+i*Yk
zl=Xl+i*Tl
其中,下标l和k分别代表第l和第k个反光柱;α和ρ分别代表在激光传感器相对自身的极坐标系下,反光柱的角度和距离;X和Y分别为反光柱在X和Y轴的分量;z为反光柱在世界坐标系下的复数坐标;zk,l为根据第l和第k个反光柱计算得到的激光传感器世界坐标,θk是根据第k个反光柱的数据计算得到的激光传感器在世界坐标系下的角度;
(9)激光传感器位置滤波:首先根据移动平台运动学模型进行位姿预测,然后根据上一时刻预测的位姿,并结合当前时刻的激光传感器测量数据,对当前时刻的位置进行滤波,从而得到最终的移动平台及激光传感器在世界坐标系下的准确的位置与姿态。
进一步地,所述步骤(6)中,直接采用上一时刻激光传感器的位置和角度作为当前时刻的预测,或者采用滤波算法进行预测。
进一步地,所述步骤(9)之前,还包括多个优化的步骤:如果激光传感器检测到三个及以上的反光柱数据,可以根据多组数据中任意两组计算得到的位姿进行数据融合。
进一步地,所述步骤(9)中,根据移动平台运动学模型进行位姿预测,公式如下:
θt|t-1=θt-1|t-1+Δθc
其中,输入量为:上一时刻的位姿(xt-1|t-1,yt-1|t-1,θt-1|t-1),电机编码器的分辨率resolution,减速比为speed_reduction_ratio,左、右轮编码器此刻的读数count_left、count_right,左、右轮编码器上一刻的读数last_count_right、last_count_right,采样周期ΔT,左右轮半径r,左、右轮的角速度ωL、ωR,移动平台在上一时刻的线速度vt-1,移动平台在上一时刻的转向角速度ωt-1,移动平台在上一时刻世界坐标系下的转向角度θt-1,激光传感器距离两个轮子中心点的距离d;输出量为:相对上时刻的运动增量(Δx,Δy,Δθ),根据上一时刻数据预测的当前时刻位姿(xt|t-1,yt|t-1,θt|t-1);
根据上一时刻预测的位姿,结合当前时刻的位姿计算结果,对当前时刻的位姿进行滤波,具体如下:若当前时刻仅检测到2个反光柱,记为l和k,采用线性卡尔曼滤波的公式如下:
其中,输入量为:当前时刻预测的位置上一时刻的协方差矩阵Pt-1|t-1,过程噪声的协方差矩阵Q,测量噪声的协方差矩阵R;输出量为:激光传感器在世界坐标系下的坐标当前时刻更新的协方差矩阵Pt|t;
若当前时刻检测到3个及以上的反光柱,则采用多个数据融合的思想进行滤波;采用贯序卡尔曼滤波的公式如下:
对于检测到的M个反光柱中的任意两两组合,计算:
zk=Xk+i*Yk
zl=Xl+i*Yl
遍历所有组合后,得到:
本发明的有益效果如下:与传统技术中的几何三角定位不同,本发明深入挖掘并充分利用了反射光的复数域信息,打破了传统意义上三个反光柱的技术瓶颈,其运行条件为同时检测到两个反光柱的数据即可,大大提高了激光导航技术的适用性;通过滤波算法过滤掉测量误差引起的计算误差,极大地提高定位与导航精度;最后,虽然本发明最低要求为检测到两个反光柱,但实际应用时可能会同时检测到多个反光柱,通过设计数据融合处理,能够最大化利用反光柱的信息,从而进一步提高精度。本发明的具体性能为:定位误差<1cm,角度误差<0.5°,定位频率>35Hz。
附图说明
图1为本发明的硬件结构示意图;
图2为反光柱测距与数据修正示意图;
图3为移动平台运动学模型示意图;
图4为本发明方法整体流程图。
具体实施方式
下面结合附图,通过实施例对本发明作进一步地说明。
本发明提供的一种基于双反光柱的高精度激光定位与导航方法,该方法包括:
(1)在工业环境中布置反光柱,预设反光柱世界坐标,生成反光柱坐标列表;
(2)安装在移动平台上的激光传感器向周围呈辐射状发射激光,并接收反射激光(激光传感器安装在AGV、工业车辆等移动平台上);
(3)筛选来源于反光柱的有效光束:
预设强度阈值σ,通过检测反射激光强度I,并与σf(range)相比较,判定激光照射物是反光柱还是普通环境物体,其中f(range)与距离range负相关;优选地,可设置f(range)=1/range;一种可能的实现方式如下:对于所有接收到的反射光束,如果第step个激光束的激光强度intensity(step)大于预设强度阈值intensity_threshold/激光测量的距离range(step),则将(step,intensity(step),range(step))写入激光强点的数据列表data中;对应的伪代码如下:
for step=1:number_laser
if intensity(step)>intensity_threshold/range(step)
将(step,intensity(step),range(step))写入data表中
endif
endfor
(4)确定当前时刻照射到的反光柱数量及其相对激光传感器的相对坐标:根据反射光束角度的连续性,判断是否为同一个反光柱,或者,根据反射光束角度和距离的连续性,判断是否为同一个反光柱;根据属于同一反光柱的反射数据,结合反光柱半径R进行数据修正,如图2所示,得到该反光柱相对于激光传感器的相对坐标,并存入反光柱列表;
根据反射光束角度和距离的连续性,判断是否为同一个反光柱,一种可能的实现方式如下:
对于data表中所有的反光强点:
如果第i个反光强点的序号step(i)等于第i-1个反光强点的序号step(i-1)+1,并且第i和i-1的激光强点测得的距离之差range(step(i))-range(step(i-1))小于预设的距离阈值range_threshold,那么光束step(i)和step(i-1)照射到的是同一个反光柱,则将(step(i),range)赋值到当前第k个landmark子列表中,且该子列表中光束数据的组数number=number+1;
否则,照射到的是一个新的反光柱,则当前第k个landmark子列表结束;
如果number=1,则将(k,α,ρ)写入measure_landmark_list,其中α=(step-1)·resolution+min_angle,ρ=range+R;min_angle为激光传感器扫描角度的最小值;
如果number>=2,则提取当前landmark子列表中的反光最强点的两组数据(step1,range1)和(step2,range2),计算:
如果range1<range2
否则
同时,新建第k+1个landmark子列表,组数初始化为number=0;将(step(i),range)赋值到新的landmark子列表中,number=number+1;继续读取数据;
最终得到所照射到的反光柱列表measure_landmark_list;
对应的伪代码如下:
for i=1:number_data
if step(i)=step(i-1)+1&&range(step(i))-range(step(i-1))<range_threshold
then光束step(i)和step(i-1)照射到的是同一个反光柱
将(step(i),range)赋值到当前第k个landmark子列表中
number=number+1;
else
if number=1,
then将(k,α,ρ)写入measure_landmark_list,
其中α=(step-1)·resolution+min_angle,ρ=range+R;
else
提取当前landmark子列表中的反光最强点的两组数据(step1,range1)和(step2,range2),计算:
If range1<range2
else
endif
endif
新建第k+1个landmark子列表;
number=0;
将(step(i),range)赋值到新的landmark子列表中,
number=number+1
endif
endfor
其中number_data是反光强点的个数,resolution是相邻两道激光光束的夹角(分辨率),range_threshold是判定是否照射到同一个反光柱的距离阈值,α和ρ分别代表在激光传感器相对自身的极坐标系下,该反光柱的角度和距离,measure_landmark_list为照射到反光柱的列表。
或者:仅根据反射光束角度的连续性,判断是否为同一个反光柱,一种可能的实现方式如下:
对于data表中所有的反光强点:
如果第i个反光强点的序号step(i)等于第i-1个反光强点的序号step(i-1)+1,那么光束step(i)和step(i-1)照射到的是同一个反光柱,则将(step(i),range)赋值到当前第k个landmark子列表中,且该子列表中光束数据的组数number=number+1;
否则,照射到的是一个新的反光柱,则当前第k个landmark子列表结束;
如果number=1,则将(k,α,ρ)写入measure_landmark_list,其中α=(step-1)·resolution+min_angle,ρ=range+R;min_angle为激光传感器扫描角度的最小值;
如果number>=2,则提取当前landmark子列表中的反光最强点的两组数据(step1,range1)和(step2,range2),计算:
如果range1<range2
否则
同时,新建第k+1个landmark子列表,组数初始化为number=0;将(step(i),range)赋值到新的landmark子列表中,number=number+1;继续读取数据;
最终得到所照射到的反光柱列表measure_landmark_list;
(5)初始化反光柱列表,得到至少两个反光柱的世界坐标:人工确定初始位置对应的反光柱列表中至少两个反光柱的世界坐标;或者,激光传感器在初始位置获取至少三个反光柱返回的角度和距离,计算两两反光柱之间的距离,与根据反光柱坐标列表生成的反光柱距离信息相匹配,得到至少两个反光柱的世界坐标;一种可能的实现方式如下:
计算任意两个反光柱之间的距离
计算任意两个反光强点之间的距离
对于measure_landmark_list列表中所照射到的M个反光柱所有两两组合(l,k):找到i,j∈{1,…,N},使得|Dk,l-Ri,j|<Ri,j·threshold;则i添加到correspondence_list(k),j添加到correspondence_list(l);
找到correspondence_list(k)中出现频次最高的值,即为反光强点k对应的反光柱c(k),如果找不到这样的点,则从measure_landmark_list中去掉点i,并且令M=M-1;
如果measure_landmark_list中包含的反光强点个数M<=2,则警告处理。
(6)在动态过程中计算期望反光柱列表:根据上一时刻对当前时刻激光传感器位置和角度的预测,估计激光传感器与所有反光柱之间的相对距离和角度,并存入期望反光柱列表;(直接采用上一时刻激光传感器的位置和角度作为当前时刻的预测,或者采用滤波算法进行预测)一种可能的实现方式如下:
对于第i个反光柱,i取1到N,计算:
其中函数arctan2(x,y)返回原点至点(x,y)的方位角,取值为(-π,π]。
如果ρt|t-1小于最大距离阈值max_distance,并且αt|t-1大于激光传感器扫描角度的最小值min_angle减去角度阈值threshold_angle,αt|t-1小于激光传感器扫描角度的最大值max_angle加上角度阈值threshold_angle,则将添加到期望的反光列表estimated_landmark_list中;
对应的伪代码如下:
for i=1:N
如果ρt|t-1<max_distance&&min_angle-threshold_angle<αt|t-1<max_angle+threshold_angle
则将添加到期望的反光列表estimated_landmarks_list
End
(7)在动态过程中反光柱列表的匹配:计算当前时刻反光柱列表与期望反光柱列表中同一个反光柱对应的距离之差和角度之差,当距离之差和角度之差均满足预设阈值时,匹配成功;一种可能的实现方式如下:
对于measure_landmark_list的所有反光柱,找到{i,Xi,Yi,ρt|t-1,αt|t-1},使得:
计算测量点(ρk,αk)和世界坐标系的误差:
如果dist<threshold_distance,则c(k)=i
如果找不到这样的点,则从measure_landmark_list中去掉点i,并令M=M-1;如果measure_landmark_list中包含的反光强点个数M<=2,则警告处理。
(8)基于双反光柱数据的激光传感器位姿计算:利用激光传感器测量数据的复频域信息,在匹配成功的反光柱中任选两个:第l个和第k个,并计算:
zk=Xk+i*Yk
zl=Xl+i*Yl
其中,下标l和k分别代表第l和第k个反光柱;α和ρ分别代表在激光传感器相对自身的极坐标系下,反光柱的角度和距离;X和Y分别为反光柱在X和Y轴的分量;z为反光柱在世界坐标系下的复数坐标;zk,l为根据第l和第k个反光柱计算得到的激光传感器世界坐标,θk是根据第k个反光柱的数据计算得到的激光传感器在世界坐标系下的角度;
(9)多个优化:如果激光传感器检测到三个及以上的反光柱数据,可以根据多组数据中任意两组计算得到的位姿进行数据融合。可选的方案有:选取反射光强最强的两组数据的计算结果作为激光传感器当前位姿,或在多组数据中两两组合进行位姿计算,然后求取他们的平均值,或加权平均值(如权重与反射光强度相关)。
(10)激光传感器位置滤波:首先根据移动平台运动学模型进行位姿预测,公式如下:
θt|t-1=θt-1|t-1+Δθc
其中,输入量为:上一时刻的位姿(xt-1|t-1,yt-1|t-1,θt-1|t-1),电机编码器的分辨率resolution,减速比为speed_reduction_ratio,左、右轮编码器此刻的读数count_left、count_right,左、右轮编码器上一刻的读数last_count_right、last_count_right,采样周期ΔT,左右轮半径r,左、右轮的角速度ωL、ωR,移动平台在上一时刻的线速度vt-1,移动平台在上一时刻的转向角速度ωt-1,移动平台在上一时刻世界坐标系下的转向角度θt-1,激光传感器距离两个轮子中心点的距离d;输出量为:相对上时刻的运动增量(Δx,Δy,Δθ),根据上一时刻数据预测的当前时刻位姿(xt|t-1,yt|t-1,θt|t-1);
然后根据上一时刻预测的位姿,结合当前时刻的位姿计算结果,对当前时刻的位置进行滤波;若当前时刻仅检测到2个反光柱,记为l和k,一种可能的线性卡尔曼滤波的公式如下:
其中,输入量为:当前时刻预测的位置上一时刻的协方差矩阵Pt-1|t-1,过程噪声的协方差矩阵Q,测量噪声的协方差矩阵R;输出量为:激光传感器在世界坐标系下的坐标当前时刻更新的协方差矩阵Pt|t;
若当前时刻检测到3个及以上的反光柱,则采用多个数据融合的思想进行滤波;一种可能的方案是贯序卡尔曼滤波,伪代码如下:
对于检测到的M个反光柱中的任意两两组合,计算:
zk=Xk+i*Yk
zl=Xl+i*Yl
遍历所有组合后,得到:
实施例1
如图1所示,本发明的硬件构成主要包括激光传感器、工控机、车载控制电路与车载电源;所述的工控机、激光传感器与车载控制电路通过RS232/CAN/SPI等方式进行通信;车载电源对激光传感器和车载控制电路经DC/DC模个进行直流供电,经DC/AC模个对车载工控机进行交流供电。
进一步地,在工业环境(地图)中合适的位置放置一定数量的反光柱,以AGV为例,使得AGV在地图中的任何位置都能够成功检测到2个或以上的反光柱;激光传感器发射激光并检测反射信号。
进一步地,工控机计算反光柱间距,初始化时采用静态匹配,随后均采用动态匹配来识别反光柱,并从反光柱列表中获取反光柱世界坐标信息。
进一步地,工控机提取激光传感器测距数据中的复数域信息,利用两个反光柱的数据进行AGV坐标位置和姿态的计算;若同时检测到3个以上的反光柱信息,则将反光柱数据进行两两组合,在每周组合下分别计算,然后以计算结果的平均值作为AGV的位置和姿态。
进一步地,工控机建立AGV运动模型,并在此基础上利用卡尔曼滤波来精确估计AGV的真实位置与姿态。本发明的整体流程如图4所示。
Claims (4)
1.一种基于双反光柱的高精度激光定位与导航方法,其特征在于,该方法包括:
(1)在工业环境中布置反光柱,预设反光柱世界坐标,生成反光柱坐标列表;
(2)安装在移动平台上的激光传感器向周围呈辐射状发射激光,并接收反射激光;
(3)筛选来源于反光柱的有效光束:预设强度阈值σ,通过检测反射激光强度I,并与σf(range)相比较,判定激光照射物是反光柱还是普通环境物体,其中f(range)与距离range负相关;
(4)确定当前时刻照射到的反光柱数量及其相对激光传感器的相对坐标:根据反射光束角度的连续性,判断是否为同一个反光柱,或者,根据反射光束角度和距离的连续性,判断是否为同一个反光柱;根据属于同一反光柱的反射光数据,结合反光柱半径进行数据修正,得到该反光柱相对于激光传感器的相对坐标,并存入反光柱列表;
(5)初始化反光柱列表,得到至少两个反光柱的世界坐标:人工确定初始位置对应的反光柱列表中至少两个反光柱的世界坐标;或者,激光传感器在初始位置获取至少三个反光柱返回的角度和距离,计算两两反光柱之间的距离,与根据反光柱坐标列表生成的反光柱距离信息相匹配,得到至少两个反光柱的世界坐标;
(6)在动态过程中计算期望反光柱列表:根据上一时刻对当前时刻激光传感器位置和角度的预测,估计激光传感器与所有反光柱之间的相对距离和角度,并存入期望反光柱列表;
(7)在动态过程中反光柱列表的匹配:计算当前时刻反光柱列表与期望反光柱列表中同一个反光柱对应的距离之差和角度之差,当距离之差和角度之差均满足预设阈值时,匹配成功;
(8)基于双反光柱数据的激光传感器位姿计算:利用激光传感器测量数据的复频域信息,在匹配成功的反光柱中任选两个:第l个和第k个,并计算:
<mrow>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<msub>
<mi>&rho;</mi>
<mi>k</mi>
</msub>
</mfrac>
<msup>
<mi>e</mi>
<mrow>
<mo>-</mo>
<mi>i</mi>
<mo>*</mo>
<msub>
<mi>&alpha;</mi>
<mi>k</mi>
</msub>
</mrow>
</msup>
</mrow>
<mrow>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<msub>
<mi>&rho;</mi>
<mi>l</mi>
</msub>
</mfrac>
<msup>
<mi>e</mi>
<mrow>
<mi>i</mi>
<mo>*</mo>
<mrow>
<mo>(</mo>
<mi>&pi;</mi>
<mo>-</mo>
<msub>
<mi>&alpha;</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</msup>
</mrow>
zk=Xk+i*Yk
zl=Xl+i*Yl
<mrow>
<msub>
<mi>z</mi>
<mrow>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<msub>
<msup>
<mi>w</mi>
<mn>2</mn>
</msup>
<mi>k</mi>
</msub>
</mrow>
<mrow>
<msub>
<msup>
<mi>w</mi>
<mn>2</mn>
</msup>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<msup>
<mi>w</mi>
<mn>2</mn>
</msup>
<mi>l</mi>
</msub>
</mrow>
</mfrac>
<msub>
<mi>z</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<mfrac>
<mrow>
<msub>
<msup>
<mi>w</mi>
<mn>2</mn>
</msup>
<mi>l</mi>
</msub>
</mrow>
<mrow>
<msub>
<msup>
<mi>w</mi>
<mn>2</mn>
</msup>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<msup>
<mi>w</mi>
<mn>2</mn>
</msup>
<mi>l</mi>
</msub>
</mrow>
</mfrac>
<msub>
<mi>z</mi>
<mi>l</mi>
</msub>
</mrow>
<mrow>
<msub>
<mi>&theta;</mi>
<mi>k</mi>
</msub>
<mo>=</mo>
<mi>arg</mi>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<msub>
<mi>z</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>z</mi>
<mrow>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
</mrow>
<msub>
<mi>&rho;</mi>
<mi>k</mi>
</msub>
</mfrac>
<mo>&CenterDot;</mo>
<msup>
<mi>e</mi>
<mrow>
<mi>i</mi>
<mo>&CenterDot;</mo>
<msub>
<mi>&alpha;</mi>
<mi>k</mi>
</msub>
</mrow>
</msup>
<mo>)</mo>
</mrow>
</mrow>
其中,下标l和k分别代表第l和第k个反光柱;α和ρ分别代表在激光传感器相对自身的极坐标系下,反光柱的角度和距离;X和Y分别为反光柱在X和Y轴的分量;z为反光柱在世界坐标系下的复数坐标;zk,l为根据第l和第k个反光柱计算得到的激光传感器世界坐标,θk是根据第k个反光柱的数据计算得到的激光传感器在世界坐标系下的角度;
(9)激光传感器位置滤波:首先根据移动平台运动学模型进行位姿预测,然后根据上一时刻预测的位姿,并结合当前时刻的激光传感器测量数据,对当前时刻的位置进行滤波,从而得到最终的移动平台及激光传感器在世界坐标系下的准确的位置与姿态。
2.根据权利要求1所述的基于双反光柱的高精度激光定位与导航方法,其特征在于,所述步骤(6)中,直接采用上一时刻激光传感器的位置和角度作为当前时刻的预测,或者采用滤波算法进行预测。
3.根据权利要求1所述的基于双反光柱的高精度激光定位与导航方法,其特征在于,所述步骤(9)之前,还包括多个优化的步骤:如果激光传感器检测到三个及以上的反光柱数据,可以根据多组数据中任意两组计算得到的位姿进行数据融合。
4.根据权利要求1所述的基于双反光柱的高精度激光定位与导航方法,其特征在于,所述步骤(9)中,根据移动平台运动学模型进行位姿预测,公式如下:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&omega;</mi>
<mi>L</mi>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>=</mo>
<mn>2</mn>
<mi>&pi;</mi>
<mo>&CenterDot;</mo>
<mi>r</mi>
<mi>e</mi>
<mi>s</mi>
<mi>o</mi>
<mi>l</mi>
<mi>u</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
<mi>n</mi>
<mo>&CenterDot;</mo>
<mfrac>
<mn>1</mn>
<mrow>
<mi>s</mi>
<mi>p</mi>
<mi>e</mi>
<mi>e</mi>
<mi>d</mi>
<mo>_</mo>
<mi>r</mi>
<mi>e</mi>
<mi>d</mi>
<mi>u</mi>
<mi>c</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
<mi>n</mi>
<mo>_</mo>
<mi>r</mi>
<mi>a</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
</mrow>
</mfrac>
<mrow>
<mo>(</mo>
<mi>c</mi>
<mi>o</mi>
<mi>u</mi>
<mi>n</mi>
<mi>t</mi>
<mo>_</mo>
<mi>l</mi>
<mi>e</mi>
<mi>f</mi>
<mi>t</mi>
<mo>-</mo>
<mi>l</mi>
<mi>a</mi>
<mi>s</mi>
<mi>t</mi>
<mo>_</mo>
<mi>c</mi>
<mi>o</mi>
<mi>n</mi>
<mi>u</mi>
<mi>t</mi>
<mo>_</mo>
<mi>l</mi>
<mi>e</mi>
<mi>f</mi>
<mi>t</mi>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&omega;</mi>
<mi>R</mi>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>=</mo>
<mn>2</mn>
<mi>&pi;</mi>
<mo>&CenterDot;</mo>
<mi>r</mi>
<mi>e</mi>
<mi>s</mi>
<mi>o</mi>
<mi>l</mi>
<mi>u</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
<mi>n</mi>
<mo>&CenterDot;</mo>
<mfrac>
<mn>1</mn>
<mrow>
<mi>s</mi>
<mi>p</mi>
<mi>e</mi>
<mi>e</mi>
<mi>d</mi>
<mo>_</mo>
<mi>r</mi>
<mi>e</mi>
<mi>d</mi>
<mi>u</mi>
<mi>c</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
<mi>n</mi>
<mo>_</mo>
<mi>r</mi>
<mi>a</mi>
<mi>t</mi>
<mi>i</mi>
<mi>o</mi>
</mrow>
</mfrac>
<mrow>
<mo>(</mo>
<mi>c</mi>
<mi>o</mi>
<mi>u</mi>
<mi>n</mi>
<mi>t</mi>
<mo>_</mo>
<mi>r</mi>
<mi>i</mi>
<mi>g</mi>
<mi>h</mi>
<mi>t</mi>
<mo>-</mo>
<mi>l</mi>
<mi>a</mi>
<mi>s</mi>
<mi>t</mi>
<mo>_</mo>
<mi>c</mi>
<mi>o</mi>
<mi>n</mi>
<mi>u</mi>
<mi>t</mi>
<mo>_</mo>
<mi>r</mi>
<mi>i</mi>
<mi>g</mi>
<mi>h</mi>
<mi>t</mi>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>=</mo>
<mfrac>
<mi>r</mi>
<mn>2</mn>
</mfrac>
<mo>(</mo>
<msub>
<mi>&omega;</mi>
<mi>R</mi>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>+</mo>
<msub>
<mi>&omega;</mi>
<mi>L</mi>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>&omega;</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>=</mo>
<mfrac>
<mi>r</mi>
<mi>L</mi>
</mfrac>
<mo>(</mo>
<msub>
<mi>&omega;</mi>
<mi>R</mi>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>-</mo>
<msub>
<mi>&omega;</mi>
<mi>L</mi>
</msub>
<mo>&CenterDot;</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>)</mo>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;x</mi>
<mi>c</mi>
</msub>
<mo>=</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>&CenterDot;</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>cos&theta;</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;y</mi>
<mi>c</mi>
</msub>
<mo>=</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>&CenterDot;</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>sin&theta;</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&Delta;&theta;</mi>
<mi>c</mi>
</msub>
<mo>=</mo>
<mi>&Delta;</mi>
<mi>T</mi>
<mo>&CenterDot;</mo>
<msub>
<mi>&omega;</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
θt|t-1=θt-1|t-1+Δθc
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mn>2</mn>
<mi>&pi;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>(</mo>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>></mo>
<mi>&pi;</mi>
<mo>)</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>(</mo>
<mo>-</mo>
<mi>&pi;</mi>
<mo><</mo>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo><</mo>
<mi>&pi;</mi>
<mo>)</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<mn>2</mn>
<mi>&pi;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>(</mo>
<msub>
<mi>&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo><</mo>
<mo>-</mo>
<mi>&pi;</mi>
<mo>)</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>&Delta;</mi>
<mi>x</mi>
<mo>=</mo>
<msub>
<mi>&Delta;x</mi>
<mi>c</mi>
</msub>
<mo>+</mo>
<mi>d</mi>
<mo>*</mo>
<msub>
<mi>cos&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mi>d</mi>
<mo>*</mo>
<msub>
<mi>cos&theta;</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>&Delta;</mi>
<mi>y</mi>
<mo>=</mo>
<msub>
<mi>&Delta;y</mi>
<mi>c</mi>
</msub>
<mo>+</mo>
<mi>d</mi>
<mo>*</mo>
<msub>
<mi>sin&theta;</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mi>d</mi>
<mo>*</mo>
<msub>
<mi>sin&theta;</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>x</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>x</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>&Delta;</mi>
<mi>x</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>y</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>&Delta;</mi>
<mi>y</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
其中,输入量为:上一时刻的位姿(xt-1|t-1,yt-1|t-1,θt-1|t-1),电机编码器的分辨率resolution,减速比为speed_reduction_ratio,左、右轮编码器此刻的读数count_left、count_right,左、右轮编码器上一刻的读数last_count_right、last_count_right,采样周期ΔT,左右轮半径r,左、右轮的角速度ωL、ωR,移动平台在上一时刻的线速度vt-1,移动平台在上一时刻的转向角速度ωt-1,移动平台在上一时刻世界坐标系下的朝向角度θt-1,激光传感器距离两个轮子中心点的距离d;输出量为:相对上时刻的运动增量(Δx,Δy,Δθ),根据上一时刻数据预测的当前时刻位姿(xt|t-1,yt|t-1,θt|t-1);
根据上一时刻预测的位姿,并结合当前时刻的激光传感器测量数据,对当前时刻的位姿进行滤波,具体如下:若当前时刻仅检测到2个反光柱,记为l和k,采用线性卡尔曼滤波的公式如下:
<mrow>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>x</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>y</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
<mrow>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>Q</mi>
</mrow>
<mrow>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>Re</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>Im</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>Im</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>Re</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
<mrow>
<msub>
<mi>K</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msubsup>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
<mi>T</mi>
</msubsup>
<mo>&CenterDot;</mo>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msubsup>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
<mi>T</mi>
</msubsup>
<mo>+</mo>
<mi>R</mi>
<mo>)</mo>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
<mrow>
<msub>
<mi>Z</mi>
<mrow>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>Re</mi>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>Im</mi>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
<mrow>
<msub>
<mi>X</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>K</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>Z</mi>
<mrow>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>K</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
其中,输入量为:当前时刻预测的位置上一时刻的协方差矩阵Pt-1|t-1,过程噪声的协方差矩阵Q,测量噪声的协方差矩阵R;输出量为:激光传感器在世界坐标系下的坐标当前时刻更新的协方差矩阵Pt|t;
若当前时刻检测到3个及以上的反光柱,则采用多个数据融合的思想进行滤波;采用贯序卡尔曼滤波的公式如下:
<mrow>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>x</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>y</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
<mrow>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>Q</mi>
</mrow>
对于检测到的M个反光柱中的任意两两组合,计算:
<mrow>
<msub>
<mi>&omega;</mi>
<mi>k</mi>
</msub>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<msub>
<mi>&rho;</mi>
<mi>k</mi>
</msub>
</mfrac>
<msup>
<mi>e</mi>
<mrow>
<mo>-</mo>
<mi>i</mi>
<mo>*</mo>
<msub>
<mi>&alpha;</mi>
<mi>k</mi>
</msub>
</mrow>
</msup>
</mrow>
<mrow>
<msub>
<mi>&omega;</mi>
<mi>l</mi>
</msub>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<msub>
<mi>&rho;</mi>
<mi>l</mi>
</msub>
</mfrac>
<msup>
<mi>e</mi>
<mrow>
<mi>i</mi>
<mo>*</mo>
<mrow>
<mo>(</mo>
<mi>&pi;</mi>
<mo>-</mo>
<msub>
<mi>&alpha;</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</msup>
</mrow>
zk=Xk+i*Yk
zl=Xl+i*Yl
<mrow>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>Re</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>Im</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>Im</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>Re</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
<mrow>
<msub>
<mi>K</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msubsup>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
<mi>T</mi>
</msubsup>
<mo>&CenterDot;</mo>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msubsup>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
<mi>T</mi>
</msubsup>
<mo>+</mo>
<mi>R</mi>
<mo>)</mo>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
<mrow>
<msub>
<mi>Z</mi>
<mrow>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>Re</mi>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>Im</mi>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>k</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>k</mi>
</msub>
<mo>+</mo>
<msub>
<mi>w</mi>
<mi>l</mi>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>z</mi>
<mi>l</mi>
</msub>
<mo>)</mo>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
<mrow>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>K</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>Z</mi>
<mrow>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
</mrow>
3
<mrow>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>K</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mi>H</mi>
<mrow>
<mi>t</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>,</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</msub>
<mo>&CenterDot;</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
遍历所有组合后,得到:
<mrow>
<msub>
<mi>X</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>P</mi>
<mo>~</mo>
</mover>
<mrow>
<mi>t</mi>
<mo>|</mo>
<mi>t</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>.</mo>
</mrow>
4
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710572161.1A CN107238841B (zh) | 2017-07-13 | 2017-07-13 | 一种基于双反光柱的高精度激光定位与导航方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710572161.1A CN107238841B (zh) | 2017-07-13 | 2017-07-13 | 一种基于双反光柱的高精度激光定位与导航方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107238841A true CN107238841A (zh) | 2017-10-10 |
CN107238841B CN107238841B (zh) | 2019-08-13 |
Family
ID=59991138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710572161.1A Active CN107238841B (zh) | 2017-07-13 | 2017-07-13 | 一种基于双反光柱的高精度激光定位与导航方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107238841B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111366896A (zh) * | 2020-03-05 | 2020-07-03 | 三一机器人科技有限公司 | 一种反光柱的检测方法、装置、电子设备及可读存储介质 |
CN113064410A (zh) * | 2019-12-30 | 2021-07-02 | 北京极智嘉科技股份有限公司 | 机器人、定位方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001033207A (ja) * | 1999-07-19 | 2001-02-09 | Tsubakimoto Chain Co | 移動体の位置特定方法及び装置 |
CN103186140A (zh) * | 2011-12-29 | 2013-07-03 | 财团法人工业技术研究院 | 移动平台的导航方法与系统 |
CN104102222A (zh) * | 2014-07-31 | 2014-10-15 | 广州大学 | 一种agv精确定位的方法 |
JP2016081068A (ja) * | 2014-10-09 | 2016-05-16 | 株式会社豊田自動織機 | 無人搬送車システムの反射板位置検査方法及び無人搬送車システムの反射板位置検査システム |
CN106843222A (zh) * | 2017-03-13 | 2017-06-13 | 苏州艾吉威机器人有限公司 | 一种局部铺反射板的激光导航agv系统 |
-
2017
- 2017-07-13 CN CN201710572161.1A patent/CN107238841B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001033207A (ja) * | 1999-07-19 | 2001-02-09 | Tsubakimoto Chain Co | 移動体の位置特定方法及び装置 |
CN103186140A (zh) * | 2011-12-29 | 2013-07-03 | 财团法人工业技术研究院 | 移动平台的导航方法与系统 |
CN104102222A (zh) * | 2014-07-31 | 2014-10-15 | 广州大学 | 一种agv精确定位的方法 |
JP2016081068A (ja) * | 2014-10-09 | 2016-05-16 | 株式会社豊田自動織機 | 無人搬送車システムの反射板位置検査方法及び無人搬送車システムの反射板位置検査システム |
CN106843222A (zh) * | 2017-03-13 | 2017-06-13 | 苏州艾吉威机器人有限公司 | 一种局部铺反射板的激光导航agv系统 |
Non-Patent Citations (2)
Title |
---|
H.S.HU ETAL: "Landmark-based navigation of industrial mobile robots", 《INDUSTRIAL ROBOT》 * |
张浩: "基于激光需达的移动机器人定位方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113064410A (zh) * | 2019-12-30 | 2021-07-02 | 北京极智嘉科技股份有限公司 | 机器人、定位方法、电子设备及存储介质 |
CN111366896A (zh) * | 2020-03-05 | 2020-07-03 | 三一机器人科技有限公司 | 一种反光柱的检测方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107238841B (zh) | 2019-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107289946A (zh) | 一种基于双反光板的高精度激光定位与导航方法 | |
CN107356931B (zh) | 一种基于滤波的双反光板激光定位与导航方法 | |
CN107144853A (zh) | 一种基于数据筛选的双反光柱激光定位与导航方法 | |
CN107144854A (zh) | 一种基于双反光柱的激光定位与导航方法 | |
CN109934920B (zh) | 基于低成本设备的高精度三维点云地图构建方法 | |
CN107144855A (zh) | 一种基于双反光板的激光定位与导航方法 | |
CN107704821B (zh) | 一种弯道的车辆位姿计算方法 | |
CN106123908B (zh) | 车辆导航方法和系统 | |
CN107390227B (zh) | 一种基于数据筛选的双反光板激光定位与导航方法 | |
CN106226780B (zh) | 基于激光扫描雷达的多旋翼室内定位系统及实现方法 | |
CN104236566B (zh) | 基于智能手机的地图匹配方法 | |
CN108089180A (zh) | 基于uwb传感器作为轨道信标对gps和惯性导航系统矫正的悬挂式轨道车的定位方法 | |
CN107422730A (zh) | 基于视觉导引的agv运输系统及其驾驶控制方法 | |
CN109885049A (zh) | 一种基于航位推算的激光导引agv自动建图和路径匹配方法 | |
CN110307850A (zh) | 航迹推算定位方法及自动泊车系统 | |
CN106541945A (zh) | 一种基于icp算法的无人车自动泊车方法 | |
CN108919802A (zh) | 无人驾驶的车辆行驶和装置 | |
CN105404844A (zh) | 一种基于多线激光雷达的道路边界检测方法 | |
Pfaff et al. | Towards mapping of cities | |
CN107346025B (zh) | 一种基于滤波的双反光柱激光定位与导航方法 | |
CN108508471A (zh) | 一种无人驾驶车辆定位方法及装置 | |
CN114779791B (zh) | 一种波浪滑翔器位置保持方法及系统 | |
CN101672655A (zh) | 基于双轴光电测量系统的地面车位置、姿态及航向测量方法 | |
CN107238841A (zh) | 一种基于双反光柱的高精度激光定位与导航方法 | |
CN113238072A (zh) | 一种适用于车载光电平台的运动目标解算方法 |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A high-precision laser positioning and navigation method based on double reflective columns Effective date of registration: 20220912 Granted publication date: 20190813 Pledgee: Bank of China Limited Hangzhou Binjiang Branch Pledgor: ZHEJIANG COTEK ROBOT CO.,LTD. Registration number: Y2022330002171 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |