GNSS-SDR学习笔记2--1.6 Signal Processing plane

GNSS-SDR_manual.pdf (v0.0.9) 下载地址: https://download.csdn.net/download/wmyan/10632255

目录

1.6.1 Signal Source

1.6.2 Signal Conditioner

1.6.3 Channel

1.6.4 Observables

1.6.5 Computation of Position, Velocity and Time

GNU Radio's class gr::basic_block is the abstract base class for all signal processing blocks, a bare abstraction of an entity that has a name and a set of inputs and outputs. It is never instantiated directly; rather, this is the abstract parent class of both gr::hier_block2 , which is a recursive container that adds or removes processing or hierarchical blocks to the internal graph, and gr::block , which is the abstract base class for all the processing blocks.

åå±æ¬¡ç»æ

ç±»å±æ¬¡ç»ææ¦è¿°

扫描二维码关注公众号,回复: 5422570 查看本文章
  1. gr :: basic_block: 是所有信号处理块的抽象基类,是具有名称和一组输入和输出的实体的抽象, 永远不会直接被实例化;
  2. gr :: hier_block2: gr :: basic_block是它的的抽象父类,它是一个递归容器,用于向内部图形添加或删除处理或分层块;
  3. gr :: block: 它是所有处理块的抽象基类。

A signal processing flow is constructed by creating a tree of hierarchical blocks, which at any level may also contain terminal nodes that actually implement signal processing functions. 

Class gr::top_block is the top-level hierarchical block representing a flowgraph. It defines GNU Radio runtime functions used during the execution of the program: run(), start(), stop(), wait(), etc. A a subclass called GNSSBlockInterface is the common interface for all the GNSS-SDR modules. It defines pure virtual methods, that are required to be implemented by a derived class.
Subclassing GNSSBlockInterface, we defined interfaces for the GNSS receiver blocks depicted in the figure above. This hierarchy provides the definition of different algorithms and different implementations, which will be instantiated according to the configuration. This strategy allows multiple implementations sharing a common interface, achieving the objective of decoupling interfaces from implementations: it defines a family of algorithms, encapsulates each one, and makes them interchangeable. Hence, we let the algorithm vary independently from the program that uses it.

  1. 通过创建分层块树来构造信号处理流程,该分层块树在任何级别也可以包含实际实现信号处理功能的终端节点;
  2. gr :: top_block类是表示流程图的顶级层次结构块。它定义了在程序执行期间使用的GNU Radio运行时函数:run(),start(),stop(),wait()等;
  3. GNSSBlockInterface子类是所有GNSS-SDR模块的通用接口。它定义了纯虚方法,这些方法需要由派生类实现;
  4. 对GNSSBlockInterface进行子类化,我们为上图中描述的GNSS接收器块定义了接口。此层次结构提供了不同算法和不同实现的定义,这些算法将根据配置进行实例化。该策略允许多个实现共享一个公共接口,实现了将接口与实现分离的目标:它定义了一系列算法,封装了每个算法,并使它们可以互换。因此,我们让算法独立于使用它的程序。                                    

é»æ­¢çé¢

1.6.1 Signal Source

The input of a software receiver are the raw bits that come out from the front-end's analog-to-digital converter (ADC). Those bits can be read from a file stored in the hard disk or directly in real-time from a hardware device through USB or Ethernet buses.
The Signal Source module is in charge of implementing the hardware driver, that is, the portion of the code that communicates with the RF front-end and receives the samples coming from the ADC. This communication is usually performed through USB or Ethernet buses. Since real-time processing requires a highly optimized implementation of the whole receiver, this module also allows to read samples from a file stored in a hard disk, and thus processing without time constraints. Relevant parameters of those samples are the intermediate frequency (or baseband I&Q components), the sampling rate and number of bits per sample, that must be specified by the user in the configuration file.
This module also performs bit-depth adaptation, since most of the existing RF front-ends provide samples quantized with 2 or 3 bits, while operations inside the processor are performed on 32- or 64-bit words, depending on its architecture. Although there are implementations of the most intensive computational processes (mainly correlation) that take advantage of specific data types and architectures for the sake of efficiency, the approach is processor-specific and hardly portable. We suggest to keep signal samples in standard data types and letting the compiler select the best library version (implemented using SIMD or any other processor-specific technology) of the required routines for a given processor.

信号源模块:

  1. 可以处理来自RF的数据,也可以读取文本数据;
  2. 这些采样值的相关参数是中频(或基带I&Q分量),采样率和每个采样点的位数,必须由用户在配置文件中指定;
  3. 该模块还执行位深度自适应,因为大多数现有RF前端提供量化为2或3位的采样,而处理器内部的操作则根据其体系结构在32位或64位字上执行。尽管为了提高效率,存在利用特定数据类型和体系结构的最密集计算过程(主要是相关操作)的实现,但该方法是特定于处理器的并且几乎不可移植;
  4. 我们建议将采样信号保留标准数据类型,并让编译器为给定处理器选择所需例程的最佳库版本(使用SIMD或任何其他特定于处理器的技术实现)。

1.6.2 Signal Conditioner

The signal conditioner is in charge of resampling the signal and delivering a reference sample rate to the down-stream processing blocks, acting as a facade between the signal source and the synchronization channels, providing a simplified interface to the input signal. In case of multiband front-ends, this module would be in charge of providing a separated data stream for each band.

信号调理器模块:

  1. 负责信号的重采样并将重采样数据传送到后续的处理块,充当信号源和同步信道之间的接口,为输入信号提供简化的接口。
  2. 在多频带前端的情况下,该模块将负责为每个频带提供分离的数据流。

1.6.3 Channel

A channel encapsulates all signal processing devoted to a single satellite. Thus, it is a large composite object which encapsulates the Acquisition, Tracking and Decoding of the navigation message modules. As a composite object, it can be treated as a single entity, meaning that it can be easily replicated. Since the number of channels is selectable by the user in the configuration file, this approach helps improving the scalability and maintainability of the receiver.

This module is also in charge of managing the interplay between acquisition and tracking. Acquisition can be initialized in several ways, depending on the prior information available (called cold start when the receiver has no information about its position nor the satellites almanac; warm start when a rough location and the approximate time of day are available, and the receiver has a recently recorded almanac broadcast; or hot start when the receiver was tracking a satellite and the signal line of sight broke for a short period of time, but the ephemeris and almanac data is still valid, or this information is provided by other means), and an acquisition process can finish deciding that the satellite is not present, that longer integration is needed in order to confirm the presence of the satellite, or declaring the satellite present. In the latter case, acquisition process should stop and trigger the tracking module with coarse estimations of the synchronization parameters. The mathematical abstraction used to design this logic is known as finite state machine (FSM), that is a behavior model composed of a finite number of states, transitions between those states, and actions. For the implementation, we used the Boost.Statechart library, which provides desirable features such as support for asynchronous state machines, multi-threading, type-safety, error handling and compile-time validation. 

The abstract class ChannelInterface represents an interface to a channel GNSS block. Check Channel for an actual implementation.

通道模块:

  1. 通道模块是一个大型复合对象,封装了每颗卫星的所有信号处理模块, 包括捕获,跟踪和电文解码模块;
  2. 通道模块作为一个复合对象,它可以被视为一个单独的实体,这意味着它可以很容易地复制;
  3. 由于用户可以在配置文件中选择通道数,因此该方法有助于提高接收器的可扩展性和可维护性;
  4. 该模块还负责捕获和跟踪之间的通信。
  5. 可以通过多种方式初始化捕获,具体取决于可用的先验信息(冷启动/温启动/热启动)并且捕获过程决定卫星是否不存在,或需要更长的积分时间来确认卫星的存在或者声明卫星存在。
  6. 当确认卫星信号存在,捕获过程应该停止并通过对同步参数的粗略估计来触发跟踪模块。
  7. 用于设计该逻辑的数学抽象被称为有限状态机(FSM),它是由有限数量的状态组成,这些状态之间的转换和动作组成的行为模型。
  8. 为了实现FSM,我们使用了Boost.Statechart库,它提供了所需的功能,例如支持异步状态机,多线程,类型安全,错误处理和编译时验证。
  9. 抽象类ChannelInterface表示通道GNSS块的接口, Channel给出了具体的实现.

(1) 捕获:

The first task of a GNSS receiver is to detect the presence or absence of in-view satellites. This is done by the acquisition system process, which also provides a coarse estimation of two signal parameters: the frequency shift with respect to the nominal IF frequency, and a delay term which allows the receiver to create a local code aligned with the incoming code. AcquisitionInterface is the common interface for all the acquisition algorithms and their corresponding implementations. Algorithms' interface, that may vary depending on the use of information external to the receiver, such as in Assisted GNSS, is defined in classes referred to as adapters. These adapters wrap the GNU Radio blocks interface into a compatible interface expected by AcquisitionInterface. This allows the use of existing GNU Radio blocks derived from gr::block , and ensures that newly developed implementations will also be reusable in other GNU Radio-based applications. Moreover, it adds still another layer of abstraction, since each given acquisition algorithm can have different implementations (for instance using different numerical libraries). In such a way, implementations can be continuously improved without having any impact neither on the algorithm interface nor the general acquisition interface.

  1. GNSS接收机首先检测可视图内卫星的存在与否, 通过捕获过程完成,该过程还提供两个信号参数的粗略估计:多普勒频移和码相位延迟;
  2.  AcquisitionInterface是所有捕获算法及其相应实现的通用接口。
  3. 捕获算法的接口可以根据接收机外部信息的使用而变化,例如在辅助GNSS中,在被称为调节器的类中定义。这些调节器将GNU Radio的块接口封装到AcquisitionInterface所期望的兼容接口中。这允许使用从gr :: block派生的现有GNU Radio块,并确保新开发的实现也可以在其他基于GNU Radio的应用程序中重用。
  4. 此外,在AcquisitionInterface和算法接口之间增加了另一层抽象,因为每个给定的捕获算法可以有不同的实现(例如使用不同的数值库)。
  5. 以这种方式,可以不断地改进具体的实现,而不会对算法接口和通用获取接口产生任何影响。

捕获算法的所有源代码在以下目录中:

  • |-gnss-sdr
  • |---src
  • |-----algorithms
  • |-------acquisition
  • |---------adapters             <- Adapters of the processing blocks to an AcquisitionInterface
  • |---------gnuradio_blocks <- Signal processing blocks implementation
     

(2) 跟踪:

When a satellite is declared present, the parameters estimated by the acquisition module are then fed to the receiver tracking module, which represents the second stage of the signal processing unit, aiming to perform a local search for accurate estimates of code delay and carrier phase, and following their eventual variations. Again, a class hierarchy consisting of a TrackingInterface class and subclasses implementing algorithms provides a way of testing different approaches, with full access to their parameters.

  1. 当一颗卫星被捕获到时,转入跟踪阶段,执行精确的载波相位和码相位跟踪;
  2. 同样,由TrackingInterface类和实现算法的子类组成的类层次结构提供了一种测试不同方法的方法,可以完全访问它们的参数。

跟踪算法的所有源代码在以下目录中:

  • |-gnss-sdr
  • |---src
  • |-----algorithms
  • |-------tracking
  • |---------adapters             <- Adapters of the processing blocks to a TrackingInterface
  • |---------gnuradio_blocks <- Signal processing blocks implementation
  • |---------libs                      <- libraries of tracking objects (e.g. correlators, discriminators, and so on)


(3) 电文解码

Most of GNSS signal links are modulated by a navigation message containing the time the message was transmitted, orbital parameters of satellites (also known as ephemeris) and an almanac (information about the general system health, rough orbits of all satellites in the network as well as data related to error correction). Navigation data bits are structured in words, pages, subframes, frames and superframes. Sometimes, bits corresponding to a single parameter are spread over different words, and values extracted from different frames are required for proper decoding. Some words are for synchronization purposes, others for error control and others contain actual information. There are also error control mechanisms, from parity checks to forward error correction (FEC) encoding and interleaving, depending on the system. All this decoding complexity is managed by a finite state machine implemented with the Boost.Statechart library. The common interface is TelemetryDecoderInterface.

  1. 大多数GNSS信号链路由导航电文调制,包含: 电文传输的时间,卫星的轨道参数(星历)和历书(关于一般系统健康的信息,以及网络中所有卫星的粗略轨道和误差修正参数)。
  2. 导航数据bit 以字,页,子帧,帧和超帧结构来组织。
  3. 有的参数的bit分布在不同的字上,并且从不同的帧提取。
  4. 字用于同步/错误控制/实际信息。
  5. 还有纠错控制机制,根据不同系统包含奇偶校验/前向纠错(FEC)编码和交织等。
  6. 所有这些解码的复杂性由使用Boost.Statechart库实现的有限状态机管理。
  7. 通用接口是TelemetryDecoderInterface

1.6.4 Observables

GNSS systems provide different kinds of observations. The most commonly used are the code observations, also called pseudoranges. The pseudo comes from the fact that on the receiver side the clock error is unknown and thus the measurement is not a pure range observation. High accuracy applications also use the carrier phase observations, which are based on measuring the difference between the carrier phase transmitted by the GNSS satellites and the phase of the carrier generated in the receiver. Both observables are computed from the outputs of the tracking module and the decoding of the navigation message. This module collects all the data provided by every tracked channel, aligns all received data into a coherent set, and computes the observables. The common interface is ObservablesInterface.

  1. GNSS系统提供不同类型的观测值: 最常用的有伪距和载波相位等等;
  2.  观测模块收集每个跟踪通道提供的所有观测数据,将所有接收的数据对齐到一个连贯的集合(翻译得不好,就是各个通道数据都扔到观测模块中,并进行时间对齐处理,同一观测时刻嘛)中,并计算观测值。
  3. 通用接口是ObservablesInterface

1.6.5 Computation of Position, Velocity and Time

Although data processing for obtaining high-accuracy PVT solutions is out of the scope of GNSS-SDR, we provide a module that can compute a simple least square solution and leaves room for more sophisticated positioning methods. The integration with libraries and software tools that are able to deal with multi-constellation data such as GPSTk or gLAB appears as a viable solution for high performance, completely customizable GNSS receivers. The common interface is PvtInterface.

  1. 虽然用于获取高精度PVT解决方案的数据处理超出了GNSS-SDR的范围;
  2. GNSS-SDR提供的模块可以计算简单的最小二乘解决方案,并为更复杂的定位方法留出空间;
  3. 可与能处理多星座数据(如GPSTk或gLAB)的库和软件工具的进行集成,提供一个高性能,完全可定制的GNSS接收机方案; 
  4. 通用接口是PvtInterface

猜你喜欢

转载自blog.csdn.net/wmyan/article/details/82348761