实时获取外部轨迹GPU实时生成导航仿真信号的方法转让专利

申请号 : CN201711404424.4

文献号 : CN108107456B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张勇虎潘定胡杰韩旭伍俊彭超张晓冬

申请人 : 湖南卫导信息科技有限公司

摘要 :

本发明公开了一种实时获取外部轨迹GPU实时生成导航仿真信号的方法,首先创建一片连续的内存作为与GPU的共享内存,用户轨迹实时的从共享内存M1传入到GPU中,在GPU中创建计算导航信号线程Thread1和控制计算导航信号线程Thread2,GPU中的控制计算导航信号线程Thread2检测到共享内存M1中控制GPU信号计算线程的参数已经发生变化后,从共享内存M1中B块读取用户轨迹参数到GPU显存,并传递计算导航信号标记给计算导航信号线程Thread1,计算导航信号线程Thread1等到计算导航信号标记后,计算导航信号线程Thread1进行卫星导航信号计算;信号仿真导航信号计算线程Thread1计算导航信号过程中将生成的信号仿真数据写回到共享内存M1中的C块。通过上述方式,本发明能够保证信号计算生成的实时性。

权利要求 :

1.实时获取外部轨迹GPU实时生成导航仿真信号的方法,其特征在于,包括以下步骤:

S1,选择Windows或者Linux作为桌面操作系统;如果选择Windows,则在Windows下安装IntervalZero RTX64实时系统;如果选择Linux,则在Linux下安装实时补丁包;

在选择的桌面操作系统中使用网络或者RFM5565反射内存卡传递用户轨迹数据;

S2,主机桌面程序申请一片连续的内存作为与GPU的共享内存,该共享内存称为M1;该共享内存M1划分为A、B、C三块,A块存储控制GPU计算线程的参数,B块存储用户轨迹,C块存储信号数据;

S3,启动GPU程序,映射共享内存M1到GPU程序,在GPU中创建计算导航信号线程Thread1和控制计算导航信号线程Thread2,并且这两个线程都无限循环,直至共享内存M1中的退出标记为退出状态时才退出;其中计算导航信号线程Thread1的循环中等待控制计算导航信号线程Thread2中给出的计算导航信号标记;控制计算导航信号线程Thread2的循环中等待共享内存M1中控制GPU计算线程的参数;

S4,创建Windows实时进程或Linux实时进程,收到RFM5565反射内存卡或者网络传递过来的用户轨迹数据后,将用户轨迹数据复制到共享内存M1中的B块,并修改共享内存M1中A块的控制GPU计算线程的参数;

S5,GPU中的控制计算导航信号线程Thread2检测到共享内存M1中控制GPU计算线程的参数已经发生变化后,从共享内存M1中B块读取用户轨迹参数到GPU显存,并传递计算导航信号标记给计算导航信号线程Thread1,计算导航信号线程Thread1等到计算导航信号标记后,计算导航信号线程Thread1进行卫星导航信号计算;信号仿真导航信号计算线程Thread1计算导航信号过程中将生成的信号仿真数据写回到共享内存M1中的C块。

说明书 :

实时获取外部轨迹GPU实时生成导航仿真信号的方法

技术领域

[0001] 本发明涉及卫星导航实时闭环领域,特别是涉及一种实时获取外部轨迹GPU实时生成导航仿真信号的方法。

背景技术

[0002] 随着卫星导航在各个领域的广泛应用,有些领域比如火箭发射的模拟导航、与惯性导航相互验证的模拟导航都对卫星导航实时闭环提出了需求,由于这些应用场景下,物体的运动轨迹属于高动态范畴,所以要求卫星导航仿真系统的轨迹采样率比较高。并且要求仿真用户轨迹实时传入实时产生卫星导航信号。
[0003] 目前从外部传入数据到GPU进行并行计算的时间,经过操作系统调用GPU的API,每一次执行的时间总是不一样,抖动大,抖动范围从200微秒至2秒不等,不能满足实时性的需求。原因是Windows或Linux等操作系统只是软实时操作系统,不能保证硬实时性。

发明内容

[0004] 本发明的目的是提供一种实时获取外部轨迹GPU实时生成导航仿真信号的方法,其基本思路是:外部用户轨迹实时的从操作系统内存传入到GPU中,并且GPU实时使用外部轨迹进行卫星导航信号的仿真计算。本发明能够解决在Windows或Linux等操作系统下,外部轨迹传入到操作系统内存、到GPU通过计算产生信号的时间有比较大的抖动,超过实时闭环的信号时间要求的问题。
[0005] 为实现本发明之目的,采用以下技术方案予以实现:
[0006] 实时获取外部轨迹GPU实时生成导航仿真信号的方法,包括以下步骤:
[0007] S1,选择Windows或者Linux作为桌面操作系统;如果选择Windows,则在Windows下安装IntervalZero RTX64实时系统;如果选择Linux,则在Linux下安装实时补丁包;
[0008] 在选择的桌面操作系统中使用网络或者RFM5565反射内存卡传递用户轨迹数据;
[0009] S2,主机桌面程序申请一片连续的内存作为与GPU的共享内存,该共享内存称为M1;该共享内存M1划分为A、B、C三块,A块存储控制GPU计算线程的参数,B块存储用户轨迹,C块存储信号数据。
[0010] S3,启动GPU程序,映射共享内存M1到GPU程序,在GPU中创建计算导航信号线程Thread1和控制计算导航信号线程Thread2,并且这两个线程都无限循环,直至共享内存M1中的退出标记为退出状态时才退出;其中计算导航信号线程Thread1的循环中等待控制计算导航信号线程Thread2中给出的计算导航信号标记;控制计算导航信号线程Thread2的循环中等待共享内存M1中控制GPU计算线程的参数。
[0011] S4,创建Windows或Linux实时进程,收到RFM5565反射内存卡或者网络传递过来的用户轨迹数据后,将用户轨迹数据复制到共享内存M1中的B块,并修改共享内存M1中A块的控制GPU计算线程的参数;
[0012] S5,GPU中的控制计算导航信号线程Thread2检测到共享内存M1中控制GPU计算线程的参数已经发生变化后,从共享内存M1中B块读取用户轨迹参数到GPU显存,传递计算导航信号标记给计算导航信号线程Thread1,计算导航信号线程Thread1进行卫星导航信号计算。信号仿真导航信号计算线程Thread1计算导航信号过程中将生成的信号仿真数据写回到M1中的C块
[0013] 相对于现有技术,本发明产生了以下有益技术效果:
[0014] 本发明其步骤S4能够保证用户轨迹传入到仿真系统的实时性,抖动范围在75us以内,步骤S3、S5能够保证GPU实时响应计算导航信号,抖动范围在75us以内,综合起来,本发明能够保证从获取轨迹到计算卫星导航信号的实时性,抖动范围在150us以内。

附图说明

[0015] 图1是实施例的流程图。

具体实施方式

[0016] 下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
[0017] 请参阅图1,本发明一种实时获取外部轨迹GPU实时生成导航仿真信号的方法,其能够解决桌面操作系统和GPU生成卫星导航仿真信号时间抖动的问题,其流程图如图1所示,包括以下步骤:
[0018] S1:选择Windows为桌面操作系统,在windows下安装IntervalZero RTX64实时系统,安装RFM5565反射内存卡。
[0019] S2:主机桌面程序申请一片连续内存空间作为与GPU的共享内存,该共享内存称为M1。共享内存M1划分为A、B、C三块,A块存储控制GPU计算线程的参数,B块存储用户轨迹,C块存储信号数据。
[0020] S3:启动GPU程序,映射共享内存M1到GPU程序,在GPU中创建计算导航信号线程Thread1和控制计算导航信号线程Thread2,并且这两个线程都无限循环,直至共享内存M1中的退出标记为退出状态时才退出。
[0021] 其中计算导航信号线程Thread1的循环中等待控制计算导航信号线程Thread2中给出的计算导航信号标记;控制计算导航信号线程Thread2的循环中等待共享内存M1中控制GPU计算线程的参数;
[0022] S4:创建Windows实时进程B,收到RFM5565反射内存卡传递过来的用户轨迹数据后,将用户轨迹数据复制到共享内存M1中的B块,并修改共享内存M1中A块的控制GPU计算线程的参数。
[0023] S5:GPU中的控制计算导航信号线程Thread2检测到共享内存M1中控制GPU计算线程的参数已经发生变化后,从共享内存M1中B块读取用户轨迹参数到GPU显存,并传递计算导航信号标记给计算导航信号线程Thread1,计算导航信号线程Thread1等到计算导航信号标记后,计算导航信号线程Thread1进行卫星导航信号计算;信号仿真导航信号计算线程Thread1计算导航信号过程中将生成的信号仿真数据写回到共享内存M1中的C块。
[0024] 以上包含了本发明优选实施例的说明,这是为了详细说明本发明的技术特征,并不是想要将发明内容限制在实施例所描述的具体形式中,依据本发明内容主旨进行的其他修改和变型也受本专利保护。本发明内容的主旨是由权利要求书所界定,而非由实施例的具体描述所界定。