具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面通过具体实施例来说明本申请的技术方案。
参照图1,示出了本申请一个实施例的一种建模方法的步骤流程示意图,具体可以包括如下步骤:
S101、获取第一导航设备与建模对象的各个参考位置之间的第一距离,以及第二导航设备与所述建模对象的各个参考位置之间的第二距离,所述第一导航设备和所述第二导航设备分别配置于所述建模对象的不同位置;
需要说明的是,本方法可以适用于终端设备。即,本方法的执行主体为终端设备,通过采集所需的数据,由终端设备完成对建模对象的建模。本实施例中的终端设备可以是手机、平板电脑等设备,也可以是能够直接与建模对象通信并实时获取建模对象在运动或静止状态下的各种数据的其他设备,本实施例对此不作限定。
根据适用场景的不同,本实施例中的建模对象也可能不同。例如,在需要对共享汽车等交通工具建模,以实现交通工具自动泊车的场景下,建模对象可以是上述共享汽车等交通工具;或者,建模对象也可以是轮渡、大型船舶等等,本实施例对建模对象的具体类型亦不作限定。
在本实施例中,为了实现对建模对象实时、动态、精确地建模,可以预先在建模对象上的不同位置配置两个导航设备,上述导航设备可以是两个高精度的卫星导航接收机,用于接收北斗、GPS等卫星信号。
当然,上述导航设备可以是仅仅支持某一种卫星导航***所传输的卫星信号的接收机,例如仅仅接收北斗***的卫星信号或仅仅接收GPS***的卫星信号;或者,导航设备也可以是能够支持同时接收多种卫星导航***所传输的卫星信号的接收机,例如同时接收北斗***、GPS***以及其他***的卫星信号,并能够对多种不同的卫星信号进行处理的接收机,本实施例对此不作限定。
在本实施例中,在将两个导航设备配置在建模对象的不同位置后,可以分别测量两个导航设备分别与建模对象不同位置之间的距离。
通常,为了建模得到建模对象的形状,可以通过确定建模对象轮廓线上的各个点的位置来实现。但是,如果针对建模对象轮廓线上的每个点都测量与两个导航设备之间的距离,则后续的数据处理量将会比较大。因此,考虑到建模过程的准确性和数据处理的快速性,可以仅仅测量建模对象各个参考位置与两个导航设备之间的距离,其中,参考位置可以为建模对象轮廓线上的交点、端点、中点、等分点、切点等位置。例如,如果建模对象的投影形状大致为四边形等多边形,可以测量建模对象上的各个角与两个导航设备之间的距离。如果建模对象的投影形状大致为椭圆形,可以测量建模对象上的长轴上的两个端点和/或短轴上的两个端点与两个导航设备之间的距离。
例如,以汽车为例,可以测量该汽车前后左右共4个角分别与第一导航设备之间的第一距离,以及与第二导航设备之间的第二距离,前后左右这4个角即是用于对汽车建模需要使用到的参考位置。
上述第一距离和第二距离可以是在配置两个导航设备时测量的。由于在建模过程中两个导航设备在建模对象上的相对位置是固定不变的,通过预先测量第一距离和第二距离并存储,可以在后续建模时直接获取该数据进行使用,减少建模过程中的数据处理量。
S102、确定所述第一导航设备所在第一位置和所述第二导航设备所在第二位置的经纬度信息;
当建模对象静止时,两个导航设备所在位置的经纬度信息是固定不变的,基于固定的经纬度信息可以实现对建模对象的静态建模。而当建模对象处于运动状态时,两个导航设备所在位置的经纬度信息是不断发生变化的,例如汽车处于行驶过程中时,在汽车上配置的两个导航设备的经纬度信息是实时变化的,基于动态变化的经纬度信息可以实现对建模对象的动态建模。
本实施例可以通过采用导航设备能够接收卫星信号的功能,自行输出两个导航设备所在位置的经纬度信息至终端设备,由终端设备作进一步处理。
S103、基于所述第一导航设备所在第一位置和所述第二导航设备所在第二位置的经纬度信息,构建目标坐标系;
在分别接收到两个导航设备传输的各自所在位置的经纬度信息后,终端设备可以基于两个位置点的经纬度信息构建出一个目标坐标系。上述两个导航设备所在位置以及建模对象各个参考位置均可以看作是目标坐标系上的一个坐标点。
S104、根据所述目标坐标系,以及所述第一距离和所述第二距离计算所述建模对象的各个参考位置的坐标值;
在构建出目标坐标系后,由于两个导航设备所在位置在目标坐标系中的坐标值是确定的,上述两个位置与建模对象各个参考位置之间的距离也是确定的,可以根据几何关系,计算出各个参考位置在目标坐标系中的坐标值。
S105、采用所述各个参考位置的坐标值对所述建模对象进行建模。
需要说明的是,对于静止状态的建模对象,各个参考位置的坐标值是固定的,采用坐标值建模得到的模型形状可以用于确定建模对象当前静止时所处的位置。而对于非静止状态的建模对象,建模对象各个参考位置的坐标值也是动态的,根据动态变化的坐标值,可以建立一个动态的模型,用于跟踪建模对象位置的实时变化情况。
在本申请实施例中,通过在建模对象的不同位置配置第一导航设备和第二导航设备,可以在获取第一导航设备与建模对象的各个参考位置之间的第一距离,以及第二导航设备与建模对象的各个参考位置之间的第二距离,并确定第一导航设备所在第一位置和第二导航设备所在第二位置的经纬度信息后,基于上述经纬度信息,构建出一个目标坐标系,从而根据该目标坐标系,以及第一距离和第二距离能够计算得到建模对象的各个参考位置的坐标值,然后采用各个参考位置的坐标值完成对建模对象的建模。本实施例通过利用导航技术,能够更精确及时地确定动态过程中建模对象的形状状态及位置变化情况,整个数据的处理过程在构建出的平面坐标系中完成,计算过程便捷、简单;相对于使用单个设备进行的粗略建模,提高了模型的精确度,对于不同形状的建模对象,也无需在每个参考位置都配置高精度设备,减少了设备的使用数量,降低了建模成本。
参照图2,示出了本申请一个实施例的另一种建模方法的步骤流程示意图,具体可以包括如下步骤:
S201、获取第一导航设备与建模对象的各个参考位置之间的第一距离,以及第二导航设备与所述建模对象的各个参考位置之间的第二距离;
本方法的执行主体可以是终端设备,通过终端设备完成对建模对象的建模。为了便于理解,本实施例以建模对象为汽车作为示例进行后续介绍。
在本实施例中,第一导航设备和第二导航设备可以是基于实时动态(Real-timekinematic,RTK)载波相位差分技术的高精度测量设备。RTK载波相位差分技术,是实时处理两个测量站载波相位观测量的差分方法,将基准站采集的载波相位发给用户接收机,进行求差解算坐标。这是一种新的常用的卫星定位测量方法,能够实时获得厘米级的定位精度。
上述第一导航设备和第二导航设备可以分别配置于建模对象的不同位置。
以汽车为例。参照图3,是本实施例的一种导航设备在汽车上的配置示意图。汽车正投影到大地水平面上,汽车的四个参考位置分别为点A、B、C、D,然后可以在汽车中轴线上方通过GNSS天线架设两个高精度RTK导航设备,分别为RTKa、RTKb。
然后,可以分别测量两个RTK导航设备与汽车四个参考位置之间的第一距离和第二距离。即,测量图4中所示的配置RTKa的第一位置点RTKa分别到点A、B、C、D的第一距离LAa、LBa、LCa、LDa,测量配置RTKb的第二位置点RTKb分别到点A、B、C、D的第二距离LAb、LBb、LCb、LDb,以及测量两个导航设备之间的距离Lab。
当然,两个导航设备也可以不限于配置于汽车中轴线上,也可以配置于其他位置。任何平面上,两个点都可以确定一个面。因此,配置导航设备的两个位置点可以在车顶中轴线上相对平行的地方即可。
S202、实时接收所述第一导航设备输出的第一定位数据以及所述第二导航设备输出的第二定位数据;分别提取所述第一定位数据和所述第二定位数据中的经纬度信息;
本实施例可以通过采用导航设备能够接收卫星信号的功能,自行输出两个导航设备所在位置的经纬度信息至终端设备,由终端设备作进一步处理。
当然,对于一些GPS接收机,其数据格式为NMEA-0183,经纬度数据表示为DDDMM.MMMM的形式,需要将上述转换为具体经度和纬度,公式为:经纬度(度)=DDD+MM.MMMM/60。
例如,若接收机输出的包含经纬度信息的语句为纬度:2308.474898,经度:11329.968159,经纬度数据的格式为DDDMM.MMMM,其中纬度DDD等于23,MM.MMMM等于08.474898;经度DDD等于113,MM.MMMM等于29.968159,按照上述公式换算后可得:
经度(度):113+29.968159/60=113.4994693
纬度(度):23+8.474898/60=23.1412483
S203、以所述第一导航设备所在第一位置为原点,所述原点沿纬线方向的直线为X轴,所述原点沿经线方向的直线为Y轴,确定目标坐标系方向;
由于地球的形状是一个两级部位略扁,赤道略鼓的不规则椭圆球体,学界上用的高斯-克吕投影法,虽然可大范围展开为平面,但因为经度纬度线都不是一个直线,计算公式极为复杂。
考虑到本实施例建模对象的面积相对地球来讲极小,进行建模时可用一个近似的办法建立一个简化的目标坐标系。
如图5所示,是本实施例的目标坐标系的示意图。该坐标系可以用直线代替曲线,设定X轴是一条沿纬线方向的线,Y轴是沿经线方向的线,并将RTK a点作为原点。这样,便可以初步确定出目标坐标系的X轴和Y轴的方向。
S204、分别确定所述第二导航设备所在第二位置在所述X轴上的第一投影点,和在所述Y轴上的第二投影点;
在上述目标坐标系中,第二导航设备所在第二位置RTK b点在X轴上的第一投影点和在Y轴上的第二投影点,这两个投影点与RTK b点之间的距离就是RTKb点的坐标值。
即,RTK b点沿经线方向,与原点的距离Yb就是RTKb点的Y轴坐标;沿纬线方向,与原点的距离Xb就是RTKb点的X轴坐标。
S205、采用所述第一位置的经纬度信息和所述第二位置的经纬度信息,计算所述第二投影点与所述原点之间的距离,作为所述第二位置的Y轴坐标值;
为求RTKb点Y轴坐标,也就是RTKa到Yb的距离,可以沿目标坐标系的原点和第二投影点所在经线截取椭圆,构建包含该椭圆的转换坐标系,并确定第一位置在转换坐标系中的第一对应点,和第二投影点在转换坐标系中的第二对应点。然后,以第一位置的纬度值作为在转换坐标系中的第一对应点与转换坐标系的X轴之间的夹角值,根据预设的纬度值公式,计算得到第一对应点在转换坐标系中的坐标值;以第二位置的纬度值作为在转换坐标系中的第二对应点与转换坐标系的X轴之间的夹角值,根据预设的纬度值公式,计算得到第二对应点在转换坐标系中的坐标值;进而根据第一对应点在转换坐标系中的坐标值和第二对应点在转换坐标系中的坐标值,可以计算出在目标坐标系中的第二投影点与原点之间的距离。
如图6所示,是通过截取椭圆构建的转换坐标系的示意图。该椭圆就是沿RTKa,Yb所在经线截取椭球得到的。在图6中,RTKa到Yb的距离实际就是图6经线截面上椭圆的一段弧长,由于这段弧长相对整个椭圆来说极短,而运算椭圆弧长的公式非常复杂,所以在本实施例中简化成两点求直线距离的方式进行计算。
在图6所示的转换坐标系中,设RTKa点坐标为(xa,ya)。Yb点坐标为(X1,Y1)。根据纬度的定义:沿椭球表面的法线(垂直曲面上一点切线的直线)方向与赤道全平面的夹角,可知在图6中,RTKa点法线与转换坐标系X轴的夹角Ba就是RTKa点的纬度。
利用椭圆方程:
过椭圆RTKa点的切线方程:
设RTKa点的维度为Ba,那么根据纬度的定义和上述公式(2)可以得到:
联立方程(1)、(2)和(3),可以计算出图6转换坐标系中RTKa点的坐标值:
其中,式(4)、(5)中表达式a表示地球椭球长半轴,为6378137米,表达式b表示地球椭球短半轴,为6356752米,Ba为RTKa点的大地维度值(度)。
由图5可知,Yb的纬度等于RTK b点的纬度,同理可得Yb点坐标(X1,Y1)。利用两点坐标计算得到原点与Yb点之间的距离为:
S206、计算所述第一投影点与所述原点之间的距离,作为所述第二位置的X轴坐标值,获得目标坐标系;
由图5可知,RTKa点到Xb的距离其实就是沿纬度圈上的一段弧长,而纬度圈是一个圆。因此,可以沿目标坐标系的原点和第一投影点所在纬线截取目标圆,确定第一位置在目标圆中的第三对应点,和第一投影点在目标圆中的第四对应点;通过计算第三对应点与第四对应点之间的圆弧长,作为目标坐标系中的第一投影点与原点之间的距离。即,计算第一位置与第二位置之间的经度差,以该经度差与目标圆的半径的乘积,作为第三对应点与第四对应点之间的圆弧长,上述目标圆的半径为第一投影点在转换坐标系中的X轴坐标值。
具体地,根据弧长公式L=R*θ,其中,R为目标圆半径,θ为弧所对的圆心角的角度。而RTKa点上纬度圈半径就是图6中RTKa点X轴坐标Xa。θ就是RTKa、RTKb点的经度差,所以计算可得原点与Xb点之间的距离为:aXb=Xa*θ。
因此,图5所示的目标坐标系中RTKb点的坐标为(aXb,aYb),RTKa点坐标为(0,0)。
S207、根据所述目标坐标系,以及所述第一距离和所述第二距离计算所述建模对象的各个参考位置的坐标值;
在本实施例中,在构建出目标坐标系并计算出目标坐标系中第一位置RTKa的坐标值,第二位置RTKb的坐标值,结合预先测量的上述两个位置点到各个角的第一距离和第二距离后,可以针对建模对象的任一目标位置,根据第一位置的坐标值、第二位置的坐标值、目标位置与第一位置之间的第一距离,以及目标角与第二位置之间的第二距离,计算得到该目标位置在目标坐标系中的坐标值。上述目标位置为多个参考位置中的任意一个。
以图3中汽车角A点为例,已知A到RTK a距离LAa,A到RTKb的距离Lab,设A点坐标为(X2,Y2)联立如下方程(7)、(8):
可以得到在目标坐标系中A点的坐标值。
同理,也可以计算出汽车角B、C、D点的坐标值。
S208、采用所述各个参考位置的坐标值对所述建模对象进行建模。
需要说明的是,虽然本实施例只以有四个参考位置的汽车为例,但同样适用于其他的建模对象。例如,图7所示的轮船,可采用同样的方法,先确定图7中A、B、C、D、E、F六个点到两个RTK导航设备之间的距离,再通过建立目标坐标系,计算两两之间距离的公式得到六个点的坐标,从而建立一个动态的模型。
本实施例通过构建简易的平面坐标系,将建模的整个数据处理过程转换至构建出的平面坐标系中完成,计算过程便捷、简单,不仅提高了模型的精确度,也减少了设备的使用数量,降低了建模成本,适用于各种不同形状的建模对象。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
参照图8,示出了本申请一个实施例的一种建模装置的示意图,具体可以包括如下模块:
获取模块801,用于获取第一导航设备与建模对象的各个参考位置之间的第一距离,以及第二导航设备与所述建模对象的各个参考位置之间的第二距离,所述第一导航设备和所述第二导航设备分别配置于所述建模对象的不同位置;
确定模块802,用于确定所述第一导航设备所在第一位置和所述第二导航设备所在第二位置的经纬度信息;
构建模块803,用于基于所述第一导航设备所在第一位置和所述第二导航设备所在第二位置的经纬度信息,构建目标坐标系;
计算模块804,用于根据所述目标坐标系,以及所述第一距离和所述第二距离计算所述建模对象的各个参考位置的坐标值;
建模模块805,用于采用所述各个参考位置的坐标值对所述建模对象进行建模。
在本申请实施例中,所述确定模块802具体可以包括如下子模块:
定位数据接收子模块,用于实时接收所述第一导航设备输出的第一定位数据以及所述第二导航设备输出的第二定位数据;
经纬度信息提取子模块,用于分别提取所述第一定位数据和所述第二定位数据中的经纬度信息。
在本申请实施例中,所述构建模块803具体可以包括如下子模块:
坐标系方向确定子模块,用于以所述第一导航设备所在第一位置为原点,所述原点沿纬线方向的直线为X轴,所述原点沿经线方向的直线为Y轴,确定目标坐标系方向;
投影点确定子模块,用于分别确定所述第二导航设备所在第二位置在所述X轴上的第一投影点,和在所述Y轴上的第二投影点;
坐标值计算子模块,用于采用所述第一位置的经纬度信息和所述第二位置的经纬度信息,计算所述第二投影点与所述原点之间的距离,作为所述第二位置的Y轴坐标值;以及,计算所述第一投影点与所述原点之间的距离,作为所述第二位置的X轴坐标值,获得目标坐标系。
在本申请实施例中,所述坐标值计算子模块具体可以包括如下单元:
转换坐标系构建单元,用于沿所述目标坐标系的原点和所述第二投影点所在经线截取椭圆,构建包含所述椭圆的转换坐标系,确定所述第一位置在所述转换坐标系中的第一对应点,和所述第二投影点在所述转换坐标系中的第二对应点;
坐标值计算单元,用于以所述第一位置的纬度值作为在所述转换坐标系中的第一对应点与所述转换坐标系的X轴之间的夹角值,根据预设的纬度值公式,计算得到所述第一对应点在所述转换坐标系中的坐标值;以所述第二位置的纬度值作为在所述转换坐标系中的第二对应点与所述转换坐标系的X轴之间的夹角值,根据预设的纬度值公式,计算得到所述第二对应点在所述转换坐标系中的坐标值;根据所述第一对应点在所述转换坐标系中的坐标值和所述第二对应点在所述转换坐标系中的坐标值,计算在所述目标坐标系中的第二投影点与原点之间的距离。
在本申请实施例中,所述坐标值计算单元,还可以用于沿所述目标坐标系的原点和所述第一投影点所在纬线截取目标圆,确定所述第一位置在所述目标圆中的第三对应点,和所述第一投影点在所述目标圆中的第四对应点;计算所述第三对应点与所述第四对应点之间的圆弧长,作为所述目标坐标系中的第一投影点与原点之间的距离。
在本申请实施例中,所述坐标值计算单元,还可以用于计算所述第一位置与所述第二位置之间的经度差,以所述经度差与所述目标圆的半径的乘积,作为所述第三对应点与所述第四对应点之间的圆弧长,所述目标圆的半径为所述第一投影点在所述转换坐标系中的X轴坐标值。
在本申请实施例中,所述计算模块804具体可以包括如下子模块:
参考位置坐标值计算子模块,用于针对所述建模对象的任一目标位置,根据所述第一位置的坐标值、所述第二位置的坐标值、所述目标位置与所述第一位置之间的第一距离,以及所述目标位置与所述第二位置之间的第二距离,计算得到所述目标位置在所述目标坐标系中的坐标值,其中,所述目标位置为所述参考位置中的任意一个。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
参照图9,示出了本申请一个实施例的一种终端设备的示意图。如图9所示,本实施例的终端设备900包括:处理器910、存储器920以及存储在所述存储器920中并可在所述处理器910上运行的计算机程序921。所述处理器910执行所述计算机程序921时实现上述建模方法各个实施例中的步骤,例如图1所示的步骤S101至S105。或者,所述处理器910执行所述计算机程序921时实现上述各装置实施例中各模块/单元的功能,例如图8所示模块801至805的功能。
示例性的,所述计算机程序921可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器920中,并由所述处理器910执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段可以用于描述所述计算机程序921在所述终端设备900中的执行过程。例如,所述计算机程序921可以被分割成获取模块、确定模块、构建模块、计算模块和建模模块,各模块具体功能如下:
获取模块,用于获取第一导航设备与建模对象的各个参考位置之间的第一距离,以及第二导航设备与所述建模对象的各个参考位置之间的第二距离,所述第一导航设备和所述第二导航设备分别配置于所述建模对象的不同位置;
确定模块,用于确定所述第一导航设备所在第一位置和所述第二导航设备所在第二位置的经纬度信息;
构建模块,用于基于所述第一导航设备所在第一位置和所述第二导航设备所在第二位置的经纬度信息,构建目标坐标系;
计算模块,用于根据所述目标坐标系,以及所述第一距离和所述第二距离计算所述建模对象的各个参考位置的坐标值;
建模模块,用于采用所述各个参考位置的坐标值对所述建模对象进行建模。
所述终端设备900可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备900可包括,但不仅限于,处理器910、存储器920。本领域技术人员可以理解,图9仅仅是终端设备900的一种示例,并不构成对终端设备900的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备900还可以包括输入输出设备、网络接入设备、总线等。
所述处理器910可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器920可以是所述终端设备900的内部存储单元,例如终端设备900的硬盘或内存。所述存储器920也可以是所述终端设备900的外部存储设备,例如所述终端设备900上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等等。进一步地,所述存储器920还可以既包括所述终端设备900的内部存储单元也包括外部存储设备。所述存储器920用于存储所述计算机程序921以及所述终端设备900所需的其他程序和数据。所述存储器920还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。