Detailed Description
In the following detailed description, numerous specific details are set forth by way of examples in order to provide a thorough understanding of the relevant disclosure. However, it will be apparent to one of ordinary skill in the art that the present disclosure may be practiced without these specific details. It should be appreciated that the use of "system," "apparatus," "unit," and/or "module" terms in this disclosure is one method for distinguishing between different parts, elements, portions, or components at different levels in a sequential arrangement. However, these terms may be replaced with other expressions if the other expressions can achieve the same purpose.
It will be understood that when a device, unit, or module is referred to as being "on," "connected to," or "coupled to" another device, unit, or module, it can be directly on, connected to, or coupled to, or in communication with the other device, unit, or module, or intervening devices, units, or modules may be present unless the context clearly indicates an exceptional condition. For example, the term "and/or" as used in this disclosure includes any and all combinations of one or more of the associated listed items.
The terminology used in the present disclosure is for the purpose of describing particular embodiments only and is not intended to limit the scope of the present disclosure. As used in the specification and the claims, the terms "a," "an," "the," and/or "the" are not specific to a singular, but may include a plurality, unless the context clearly dictates otherwise. In general, the terms "comprises" and "comprising" are intended to cover only those features, integers, steps, operations, elements, and/or components that are explicitly identified, but do not constitute an exclusive list, as other features, integers, steps, operations, elements, and/or components may be included.
These and other features and characteristics of the present disclosure, as well as the methods of operation, functions of the related elements of structure, combinations of parts and economies of manufacture, may be better understood with reference to the following description and the accompanying drawings, all of which form a part of this specification. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the disclosure. It will be understood that the figures are not drawn to scale.
Various block diagrams are used in the present disclosure to illustrate various modifications of the embodiments according to the present disclosure. It should be understood that the foregoing or following structures are not intended to limit the present disclosure. The protection scope of the present disclosure is subject to the claims.
The visual positioning map is stored as a file in a manner of serialization of some object, which has the advantage that the storage, loading and use of the map data can be transparent to the algorithm module, which accesses the map data as other internal data.
For example, fig. 1 is a schematic view of one map access in the related art, fig. 2 is a schematic view of another map access in the related art, fig. 1 illustrates an access procedure when map data of a visual positioning map is stored in a conventional serialized file, and fig. 2 illustrates an access procedure when map data of a visual positioning map is stored in a flattened file. As shown in fig. 1 and fig. 2, the vehicle-end device may include an application layer, a memory system and a disk system in the figure, where the visual positioning algorithm module operates in the application layer, and the memory system includes two modules of application layer management and operating system management. Referring to fig. 1, when map data of a visual positioning map is stored in a disk system as a serialized file, a user needs to create a storage space (typically an application layer heap space) in the memory, to which byte stream data indicating map data of an operating system is read from the disk system, and map objects need to be re-serialized from the byte stream data, the visual positioning algorithm module can directly access map objects that are completely re-built in the application layer heap space. However, there are drawbacks in that the map data must be deserialized and memory (heap memory) allocated as a complete object, the memory overhead in this way increases with the increase of the map capacity, and the deserialization takes a long time, which results in the limitation of the size of the visual positioning map.
Referring to fig. 2, the visual positioning map is divided into a plurality of fragment files, that is, flattening files in the map, the algorithm module loads map fragments as required, the map data still needs to be deserialized to obtain complete map objects, and then the complete map objects are used by the algorithm module, and in order to meet the requirement that the algorithm can search the map data globally and randomly, the loaded fragment objects must be kept in the memory. There is also a memory constraint problem in fig. 2.
Because of the large number of cross-reference relations among the data of the visual positioning map and the requirements of global search and random access, the total capacity of the visual positioning map increases rapidly from indoor to outdoor and from limited places to open roads along with the continuous expansion of the scale of the applicable scene of the automatic driving technology, and the demand of an algorithm module for memory increases remarkably, so that vehicle-end equipment does not have enough memory (physical memory+virtual memory) to safely run. In order to solve the above-described problems, embodiments of the present disclosure provide a map data processing method, which is described below in connection with specific embodiments.
Fig. 3 is a flowchart of a map data processing method according to an embodiment of the present disclosure, where the method may be performed by a map data processing device, and the device may be implemented by software and/or hardware, and may be generally integrated in an electronic device. As shown in fig. 3, the method is applied to an operating system, and includes:
step 101, receiving a data reading request, wherein the data reading request is used for reading visual positioning map data, and the visual positioning map data comprises map metadata, spatial index data and a plurality of flattening map fragment data.
The map processing method of the embodiment of the disclosure can be applied to an operating system of a vehicle-end device, and the data reading request can be a reading request of the visual positioning map data sent by an application layer in the vehicle-end device.
The visual positioning map can be understood as map data obtained by adopting a visual synchronous positioning and mapping (Simultaneous Localization AND MAPPING, SLAM) technology, and can comprise a group of key frames and a large number of visual map points in a scene, wherein the key frames can record camera 6DoF gesture information of key nodes on a mapping track and association relation between the key frames and surrounding map elements, the visual map points are also called visual feature point clouds, and can record 3D coordinate points with certain visual features in the mapping environment, and the two groups of information and the common view relation between the two groups of information form the visual positioning map.
The visual positioning map data in the embodiment of the disclosure may be data after map division and flattening processing of the visual positioning map, specifically may include map metadata, spatial index data and a plurality of flattened map fragment data, the map metadata may include most basic attribute information of the visual positioning map, may include Origin world coordinates (Origin), camera parameters (CAMERA PARAMS), a Key Frame pose information directory (BoW to KF index), a Key Frame lookup table (KF lookup table), a Key Frame profile information directory (KF brief info catalog), a fragment file list (Chunk FILES LIST), and the like, the KF represents a Key Frame (Key Frame), the fragment file list may include related information of map fragments, for example, fragment sizes, and the like, the spatial index data may use a 3D spatial index data structure, for example, KD-Tree, the flattened map fragment data may be obtained by inputting the flattened map fragment data into the original map fragment data, and the flattened map fragment data may be the original map fragment data may be processed to obtain the complete map fragment file according to the preset rule of dividing the map fragment data.
Specifically, the operating system may acquire a data reading request sent by the application layer, where the data reading request may include a current frame or positioning information, where the current frame may be an image frame currently shot by the application layer, and the positioning information may be position information with a coarser granularity acquired by the application layer.
Step 102, acquiring map metadata and spatial index data, and determining target flattening map fragment data corresponding to a target data item to be accessed and position information to be accessed of the target data item in the target flattening map fragment data according to positioning information, the map metadata and the spatial index data or according to a current frame and the map metadata.
The data item may be understood as a minimum unit of the visual positioning Map data, and in the embodiment of the present disclosure, the data item may include a Key Frame (Key Frame) and Map points (Map points), that is, each flattened Map tile data may include a Key Frame set of a plurality of Key Frame combinations and a Map Point set of a plurality of Map Point combinations, where the Map points are coordinate points. The target data item may be understood as a data item in the visual positioning map data to be accessed corresponding to the data access request, the target flattened map tile data may be flattened map tile data where the target data item is located, and the position information to be accessed may be a specific position, that is, a specific number of data items, of the target data item in the target flattened map tile data.
In one embodiment of the disclosure, determining target flattening map fragment data corresponding to a target data item to be accessed and to-be-accessed position information of the target data item in the target flattening map fragment data according to positioning information, map metadata and spatial index data may include determining an identifier of an initial key frame according to the positioning information, determining a plurality of key frames in a preset range near the initial key frame as target key frames according to the identifier of the initial key frame, and searching in a key frame lookup table and a key frame profile information directory in the map metadata one by one according to the identifier of the target key frame to determine target flattening map fragment data corresponding to each target key frame and to-be-accessed position information thereof in the target flattening map fragment data.
When positioning information is included in the data read request, a local map may be constructed and more granular positioning may be performed based on the positioning information in embodiments of the present disclosure. The operation system can search in the space index data according to the positioning information, determine the initial key frame corresponding to the positioning information and the identifier of the initial key frame, and can determine a plurality of key frames near the initial key frame as target key frames according to the tag of the initial key frame, for example, can determine 10 key frames near the initial key frame as target key frames, wherein the data corresponding to the target key frames is the target data item, and then can search in the key frame lookup table and the key frame profile information catalog in the map metadata one by one according to the identifier of each target key frame, so as to determine the target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
Optionally, searching in a key frame lookup table and a key frame profile information catalog in map metadata one by one according to identifiers of target key frames to determine target flattening map fragment data corresponding to each target key frame and position information to be accessed in the target flattening map fragment data, wherein the method comprises searching in the key frame lookup table according to the identifiers of each target key frame to determine catalog numbers corresponding to each target key frame, searching in the key frame profile information catalog according to catalog numbers corresponding to each target key frame to determine target flattening map fragment data corresponding to each target key frame and position information to be accessed in the target flattening map fragment data.
The key frame lookup table may store, among other things, identifiers and corresponding directory numbers of key frames, as well as basic information of the key frames, such as spatial locations, etc. The key frame profile information directory may store a directory number and a corresponding target entry, and the directory entry may include fragment information of the key frame. Specifically, after determining the target key frames, the operating system may search in the key frame lookup table according to the identifier of each target key frame, determine the directory number corresponding to each target key frame, and search in the key frame profile information directory according to each directory number, so as to obtain the target flattened map fragment data corresponding to each target key frame, and the to-be-accessed position information of each target key frame in the target flattened map fragment data where the target flattened map fragment data is located.
In another embodiment of the disclosure, determining target flattening map fragment data corresponding to a target data item to be accessed and position information to be accessed of the target data item in the target flattening map fragment data according to a current frame and map metadata may include extracting a feature description word in the current frame, determining a plurality of candidate key frames by using an inverted index based on the feature description word, determining a reference key frame based on the plurality of candidate key frames by adopting a repositioning algorithm, searching in a key frame lookup table and a key frame profile information directory in the map metadata one by one according to identifiers of the reference key frames, and determining target flattening map fragment data corresponding to each reference key frame and position information to be accessed in the target flattening map fragment data.
Wherein the feature description word can be understood as a visual word in which visual feature points in the current frame are determined by an algorithm. The inverted index (Inverted index), also called inverted index, is an indexing method, and is used to store the mapping of the storage location of a word in a document or a group of documents under full text search, through which a list of documents containing the word can be quickly obtained according to a word.
When the data reading request includes the current frame, the operating system may first extract the feature description words corresponding to the visual feature points in the current frame, then determine the multiple key frames with the same or similar feature description words as candidate key frames through the inverted index according to the feature description words, then re-determine a reference key frame which is relatively similar to the current frame in the multiple candidate key frames by adopting a repositioning algorithm, wherein the data of the reference key frame is the target data item, and after determining the reference key frame, search in the key frame lookup table and the key frame profile information catalog one by one according to the identifier of the reference key frame, and determine the target flattened map fragment data corresponding to each reference key frame and the position information to be accessed in the target flattened map fragment data.
Optionally, the map data processing method of the embodiment of the disclosure may further include determining a plurality of common view key frames having a common view relationship with the reference key frame, and reading corresponding data for the plurality of common view key frames.
The co-view relationship may be understood as a relationship determined based on commonly observed map points, and if different key frames can observe the same map point, it is determined that a co-view relationship exists between different key frames. Because the common view relation between other key frames is recorded in the data of the key frames, after the reference key frame is determined and the data of the reference key frame is acquired, a plurality of common view key frames with common view relation with the reference key frame can be obtained, and the corresponding data are read in a mode of steps 101-105 for the plurality of common view key frames so as to construct a local map based on the data of the reference key frame and the common view key frames.
Step 103, determining a target virtual address space mapped by the fragmented data of the target flattening map.
The virtual address space is understood as the virtual address space of the running process of the visual positioning algorithm in the memory.
In the embodiment of the disclosure, determining the target virtual address space mapped by the target flattened map fragment data may include allocating a corresponding target virtual address space for the target flattened map fragment data in real time, or determining the target virtual address space mapped by the target flattened map fragment data according to a pre-established memory mapping relationship, where the memory mapping relationship is a mapping relationship between each flattened map fragment data and the virtual address space.
The memory mapping relationship may be understood as a mapping relationship between each piece of flattened map data and a virtual address header of a virtual address space, or a mapping relationship between each data item in each piece of flattened map data and a virtual address in the virtual address space, which is not particularly limited. Specifically, after determining the target flattening map fragment data, the operating system may map the target flattening map fragment data to the target virtual address space in real time, that is, allocate a corresponding target virtual address space for the target flattening map fragment data, or determine the target virtual address space corresponding to the target flattening map fragment data by searching according to a pre-established memory mapping relationship.
The embodiment of the disclosure can take the flattening map fragment data as a file mark read-only attribute of the memory map, and map the flattening map fragment data to a virtual address space through the memory map for later use.
And 104, acquiring an offset dictionary, and determining the virtual address of the target data item according to the offset dictionary, the target virtual address space and the position information to be accessed.
The offset dictionary may be a dictionary obtained by the flattening tool when flattening the original map tile data, and in the embodiment of the present disclosure, the offset dictionary records an offset address of each data item in each flattened map tile data relative to a virtual address header, where the virtual address header may be a virtual address corresponding to a first data item of each flattened map tile data.
In the embodiment of the disclosure, the operating system may acquire the offset dictionary, and then may determine the virtual address of the target data item according to the target virtual address space of the target flattened map tile data, the offset dictionary, and the to-be-accessed location information of the target data item.
Optionally, determining the virtual address of the target data item according to the offset dictionary, the target virtual address space and the location information to be accessed may include determining a target offset address of the target data item according to the location information to be accessed and the offset dictionary, and determining the virtual address of the target data item according to the virtual address header of the target virtual address space and the target offset address.
Specifically, the operating system may search in the offset dictionary according to the location information to be accessed to determine a target offset address corresponding to the target data item, and then may offset the target offset address according to the virtual address header of the target virtual address space to obtain the virtual address of the target data item.
Step 105, reading the corresponding data in the page buffer based on the virtual address of the target data item.
The page buffer may be a buffer used for buffering visual positioning map data in a memory, and in the embodiment of the present disclosure, disc data may be divided into pages and loaded into the memory by using a page buffer technology, so as to provide an application layer read-write access.
In the embodiment of the disclosure, reading the corresponding data in the page buffer based on the virtual address of the target data item may include determining a target physical address of the target data item in the page buffer based on the virtual address of the target data item, a mapping relationship between the virtual address and a physical address in the page buffer, and reading the data in the target physical address.
The mapping relationship between the virtual address and the physical address in the page buffer may be pre-constructed. Further, after determining the virtual address of the target data item, the operating system may determine the target physical address of the target data item in the page buffer according to the pre-constructed mapping relationship between the virtual address and the physical address in the page buffer, and read the data in the target physical address, thereby obtaining the target data item.
In some embodiments of the present disclosure, the map data processing method may further include, when the target physical address in the page buffer is invalid, acquiring a target data page of the target data item in the target flattened map tile data from the disk, reading the target data page into the page buffer, and storing the target data item in the target physical address.
A page of data is understood to mean a unit of flattened map sliced data stored in stages in disk, the concept of single stage storage (SINGLE LEVEL Store) emphasizes that the data is organized in pages, pages may reside in memory or on disk, where page access is not important to the process, it is important that its data format be consistent, single stage storage meaning that persistent objects are stored in pages and can be mapped to process space for direct use. One flattened map tile data may include a plurality of data pages, and the target data page may be a data page in which the target data item is located.
Specifically, when the operating system determines that there is no data in the target physical address in the page buffer or the validity period is over, the data in the disk is acquired in units of pages, that is, the target data page of the target data item in the target flattened map fragment data can be read from the disk, and stored in the page buffer, and the target data item is stored in the target physical address of the page buffer, so that the subsequent application layer can directly access the target data item based on the virtual address of the target data item.
In the related art, map data is brought into a page buffer by reading an application layer operation file, and the application layer is stressed. In the embodiment of the disclosure, for an application layer of the vehicle-end device, map data can be randomly accessed through memory mapping of visual positioning map data, a memory used for maintaining a map is not required, the pressure is low, an operating system can automatically cache and swap out map data in the memory by taking a page as a minimum unit, and the maintenance memory occupation does not exceed the limit of a system on a process.
According to the map data processing scheme provided by the embodiment of the disclosure, an operating system can receive a data reading request, wherein the data reading request is used for reading visual positioning map data, the visual positioning map data comprise map metadata, space index data and a plurality of pieces of flattening map fragment data, the flattening map fragment data are processed by an original map fragment data input flattening tool, the data reading request comprises current frames or positioning information, the map metadata and the space index data are acquired, the position information to be accessed of the target flattening map fragment data corresponding to a target data item to be accessed and the target virtual address space mapped by the target flattening map fragment data is determined according to the positioning information, the map metadata and the space index data or the current frames and the map metadata, the virtual address space mapped by the target flattening map fragment data is acquired, the virtual address of the target data item is determined according to the offset dictionary, the target virtual address space and the position information to be accessed, and the corresponding data in a page cache is read based on the virtual address of the target data item. By adopting the technical scheme, the map data is flattened and mapped to the virtual address space of the process, after the operating system receives the data reading request, the virtual address of the data item can be determined according to the map metadata, the space index data and the offset dictionary, and the data in the page cache is accessed through the virtual address, so that the data copying times can be reduced by utilizing a page cache mechanism, the page cache of the operating system becomes the first-level cache of the map data, single-level memory management is realized, the data can be accessed more effectively, the memory occupied by the map in operation is safe and controllable, the limitation of the physical memory size of the operating equipment is avoided, the application scene of the visual positioning technology is enlarged, the time consumption of reverse serialization is reduced, and the map data access efficiency is improved.
In some embodiments, the map data processing method may further include performing an editing operation on the data in the page buffer, wherein the editing operation includes a modification operation and/or a deletion operation.
The modification operation may be understood as a replacement of the data and the deletion operation may be understood as a discard of the data. The operating system may perform load operations, resident operations, modify operations, and/or delete operations on the data in the page cache. For the deleting operation, when the memory occupied by the page cache reaches the threshold value of the process configuration, the operating system deletes part of data based on a preset strategy, wherein the preset strategy can be set according to actual conditions, for example, the data can be deleted according to the heat or access quantity of the data.
In the scheme, the operating system can maintain the loading, residence, replacement or discarding of the data in the page buffer memory, can maintain the memory occupation of the page buffer memory not to exceed the limit of the system on the process, and avoid the increase of the memory expense along with the increase of the map capacity, so that the memory occupation of the visual positioning map data in the running process is safe and controllable.
Fig. 4 is a schematic diagram of map access provided by an embodiment of the present disclosure, and as shown in fig. 4, the diagram illustrates an access process of map data implemented based on flattened map tile data and memory mapping in the embodiment of the present disclosure, where a vehicle end device has the same structure as that in fig. 1 and fig. 2, and the vehicle end device may include an application layer, a memory system, and a disk system in the drawing, where a visual positioning algorithm module operates in the application layer, and the memory system includes two modules of application layer management and operating system management, where the operating system management is an operating system, and the map data processing method in the embodiment of the present disclosure may be executed by the operating system.
As shown in fig. 4, the single-level stored map may be a memory mapped file of map data flattening, i.e., flattening map tile data as described above. And taking the flattening map fragment data as a memory mapping file marking read-only attribute, and loading the memory mapping file marking read-only attribute into a process virtual address space operated by the algorithm module. For flattening map tile data, the tile data may be substituted into the page cache by a memory mapping operation. After loading initialization, each data item of the visual positioning map has a virtual address, and when the application layer needs to read the data item, the data item is directly accessed through the virtual address, and the operating system is responsible for reading the data from the disk into the page cache in the memory. When the memory occupied by the page buffer reaches the threshold value of the process configuration, the operating system is responsible for automatically recovering part of the page buffer, and the operating system can directly discard the replaced page buffer due to the read-only property of the buffer data.
The specific process may include (1) the operating system setting an upper memory usage limit for the visual positioning algorithm process level of the application layer. (2) The original map tile data is converted into flattened map tile data. That is, a method of data continuous storage and relative addressing between data references (i.e., flattening process) is defined to convert a conventionally serialized stored map into flattened map tile data. (3) When loading map data, the operating system maps the flattening map fragment data to a memory space through memory mapping, and allocates a virtual address space of an exclusive process. (4) When the method is operated, the relative offset of the accessed data is found out through flattening the agreed access mode, and the map data is directly accessed.
In the related technology, the visual positioning map needs to be copied by multiple levels of data and the application layer applies, maintains and releases the memory by itself. The scheme provides an optimization scheme of memory occupation during the operation of the visual positioning map, which can also be called as a single-stage storage scheme, and reduces the data copying times by utilizing a page buffer mechanism of an operating system, so that the page buffer is directly used as a first-stage buffer of map data, single-stage memory management is realized, the data is more effectively accessed, and the visual positioning map far exceeding the capacity of a main memory can be safely loaded and used.
Fig. 5 is a flowchart of another map data processing method according to an embodiment of the present disclosure, which may be performed by a map data processing device, where the device may be implemented in software and/or hardware, and may be generally integrated in an electronic device. As shown in fig. 5, the method includes:
step 501, obtaining visual positioning map data.
The visual positioning map data can be a traditional serialization file of the visual positioning map, and specifically, the map memory data structure can be obtained by persisting the map memory data structure into a byte stream file by using an object serialization technology under the category of an object-oriented programming language.
In the embodiment of the disclosure, the visual positioning map data may be acquired, and then the visual positioning map data may be divided based on a preset division rule, so as to obtain map metadata, spatial index data and a plurality of original map fragment files.
The preset division rule may focus on locality and relevance of map data, so that map data possibly related to each other are adjacent to each other in storage as much as possible, for example, the preset division rule may be divided according to a map building track or divided according to spatial locality, and divided according to spatial locality may be divided according to adjacent key frames. The map metadata may include most basic attribute information of the visual localization map, and may include world coordinates (Origin), camera parameters (CAMERA PARAMS), a Key Frame pose information directory (BoW to KF index), a Key Frame lookup table (KF lookup table), a Key Frame profile information directory (KF brief info catalog), and a tile file list (Chunk FILES LIST), etc., where KF represents a Key Frame (Key Frame), and related information of map tile data, such as a tile size, etc., may be included in the tile file list. The spatial index data may use a 3D spatial index data structure, such as KD-Tree, to index camera 3D world coordinates of the key frames. The plurality of original map fragment files may be a plurality of map subfiles resulting from decomposing the complete map file.
Step 502, inputting an original map fragment file of the visual positioning map data into a flattening tool to obtain flattening map fragment data and an offset dictionary.
The flattening tool can be used for flattening processing of map data, can be a serialization tool supporting zero copy and free of coding and decoding, can be set according to practical situations, for example, the flattening tool can be FlatBuffers, the flattening map fragment data to be output can be segmented map data in FlatBuffers format, and FlatBuffers can be a serialization tool. The offset dictionary may record offset addresses of each data item in the respective flattened map tile data relative to the virtual address header.
In the embodiment of the disclosure, inputting the original map tile file of the visual positioning map data into a flattening tool to obtain flattening map tile data may include inputting the original map tile file of the visual positioning map data into the flattening tool, arranging the original map tile file into a continuous byte stream according to a preset layout, and determining the obtained byte stream file as flattening map tile data.
Specifically, a plurality of complete original map tile files of the visual positioning map data are input into a flattening tool, key frames and map points in the original map tile files are used as object examples, the object examples, an object example set and constituent members of the object examples are all arranged into continuous byte streams according to a preset layout, the obtained byte stream files are determined to be flattening map tile data, an offset dictionary can be further included in output data of the flattening tool, and the offset dictionary can store positions of each data item in the flattening map tile data, namely offset addresses relative to virtual address heads, so that an operating system can access map data in the byte stream files through the offset dictionary.
Fig. 6 is a schematic diagram of map flattening provided by the embodiment of the present disclosure, as shown in fig. 6, in which a process of data division and flattening processing of visual positioning map data is shown, flattening conversion is a flattening tool, a conventional visual positioning map file is the visual positioning map data, the visual positioning map data and a positioning map division algorithm are input into the flattening tool, the visual positioning map data is divided based on the positioning map division algorithm to obtain map metadata, spatial index data and a plurality of original map tile files, and then flattening processing can be performed on the plurality of original map tile files by the flattening tool, see fig. 7 for a specific process, and finally map metadata, spatial index data and a plurality of flattened map tile data are output, such as tile 0, tile 1 to tile N in fig. 6.
Fig. 7 is a schematic diagram of another map flattening provided by an embodiment of the present disclosure, where fig. 7 illustrates a process of flattening a plurality of original map tile files by a flattening tool to obtain a plurality of flattened map tile data, and specifically includes a visual positioning map object instance in the map, typically an object instance running in an object-oriented programming language, determining a key frame and a map point in the original map tile file as the object instance, dividing the object instance into a plurality of levels according to a combination relationship, pointing the object instances to a mark reference by a pointer variable, and also can cross reference, for example, a bar in the map represents a key frame in the original map tile file, a bar represents a map point in the original map tile file, a cross reference, such as a co-view relationship, exists between the key frame and the map point, and a cross reference, such as a feature point on the key frame corresponds to the map point. The visual positioning map flattening data are the flattening map fragment data, the flattening map fragment data can be stored in a file in a byte stream form, the object examples, the object example set and the constituent members of the object examples can be arranged in a continuous byte stream according to a defined layout, the output data obtained after flattening comprise offset dictionaries, and the constituent members and the reference examples can be accessed only by looking up the offset dictionaries to access relative addresses.
According to the scheme, all data and corresponding data positions in the original map slicing file in the visual positioning map data can be stored in a linear array through the flattening tool, the flattened map slicing data can be obtained through byte stream form storage, when the visual positioning map slicing data are used, only the byte stream file is required to be sent out, when the visual positioning map slicing data are analyzed, only the corresponding data are required to be intercepted according to the stored positions, and the access efficiency is high during operation.
The flattening processing of the plurality of original map fragment files can solve the problems that the conventional visual positioning map has large whole capacity, poor fault tolerance of links such as transmission, copying and deployment caused by flattening into one file, and the map data reading and buffering depend on the file page buffering of an operating system, so that the visual positioning data correlation and locality principle can be considered during flattening data storage, and the access efficiency during operation is improved.
Step 503, storing the flattening map fragment data in a disk.
Specifically, after the original map tile file in the visual positioning map data is subjected to flattening processing to obtain flattened map tile data, the flattened map tile data can be stored in a disk, so that an operating system can receive a data reading request sent by an application layer, acquire map metadata and space index data, determine target flattened map tile data corresponding to a target data item to be accessed and position information to be accessed of the target data item in the target flattened map tile data according to positioning information, map metadata and space index data or according to a current frame and map metadata, determine a target virtual address space mapped by the target flattened map tile data, acquire an offset dictionary, determine a virtual address of the target data item according to the offset dictionary, the target virtual address space and the position information to be accessed, and read data corresponding to a page cache based on the virtual address of the target data item.
Compared with the prior art, the method reduces the time consumption of reverse serialization, removes the copy of data from page cache to memory heap space and the maintenance work of an application layer to the memory heap space, realizes single-stage memory management, namely memory management of an operating system level, ensures that the memory occupied by the map data is safe and controllable during running, and further improves the robustness of the system.
According to the map data processing scheme provided by the embodiment of the disclosure, the visual positioning map data are obtained, the original map slicing file of the visual positioning map data is input into a flattening tool, flattening map slicing data and an offset dictionary are obtained, and the flattening map slicing data are stored in a magnetic disk. By adopting the technical scheme, the map data is flattened and stored in the disk, so that the operating system can map the map data to the virtual address space of the process, after the operating system receives a data reading request, the virtual address of a data item can be determined according to the map metadata, the space index data and the offset dictionary, and the data in the page cache is accessed through the virtual address, the number of data copying times can be reduced by utilizing a page cache mechanism, the page cache of the operating system becomes the first-level cache of the map data, single-level memory management is realized, the data can be accessed more effectively, the memory occupied by the map during operation is safe and controllable, the limitation of the physical memory size of operation equipment is avoided, the application scene of the visual positioning technology is enlarged, the time consumption of reverse serialization is reduced, and the map data access efficiency is improved.
Fig. 8 is a schematic structural diagram of a map data processing device according to an embodiment of the present disclosure, where the device may be implemented by software and/or hardware, and may be generally integrated in an electronic device. As shown in fig. 8, the apparatus is provided in an operating system, and includes:
A request module 801, configured to receive a data reading request, where the data reading request is used to read visual positioning map data, the visual positioning map data includes map metadata, spatial index data, and a plurality of flattening map tile data, the flattening map tile data is processed by inputting original map tile data into a flattening tool, and the data reading request includes a current frame or positioning information;
A data module 802, configured to obtain the map metadata and the spatial index data, and determine, according to the positioning information, the map metadata, and the spatial index data, or according to the current frame and the map metadata, target flattening map tile data corresponding to a target data item to be accessed, and to-be-accessed location information of the target data item in the target flattening map tile data;
a first virtual module 803, configured to determine a target virtual address space mapped by the target flattening map tile data;
a second virtual module 804, configured to obtain an offset dictionary, and determine a virtual address of the target data item according to the offset dictionary, the target virtual address space, and the location information to be accessed;
And a reading module 805, configured to read corresponding data in the page cache based on the virtual address of the target data item.
Optionally, the data module 802 includes a first unit configured to:
Searching in the space index data according to the positioning information, and determining an identifier of an initial key frame;
determining a plurality of key frames in a preset range near the initial key frame as target key frames according to the identifier of the initial key frame;
And searching in a key frame lookup table and a key frame profile information catalog in the map metadata one by one according to the identifiers of the target key frames, and determining target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
Optionally, the first unit is specifically configured to:
searching in the key frame lookup table according to the identifier of each target key frame, and determining a directory number corresponding to each target key frame;
Searching in the key frame profile information directory according to the directory number corresponding to each target key frame, and determining target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
Optionally, the data module 802 includes a second unit configured to:
Extracting a feature description word in the current frame, and determining a plurality of candidate key frames by using an inverted index based on the feature description word;
Determining a reference key frame based on the plurality of candidate key frames using a repositioning algorithm;
And searching in a key frame lookup table and a key frame profile information catalog in the map metadata one by one according to the identifiers of the reference key frames, and determining target flattening map fragment data corresponding to each reference key frame and the position information to be accessed in the target flattening map fragment data.
Optionally, the device further includes a common view module, configured to:
determining a plurality of co-view key frames having a co-view relationship with the reference key frame;
and reading corresponding data aiming at the plurality of common view key frames.
Optionally, the first virtual module 803 is configured to:
and distributing corresponding target virtual address space for the target flattening map fragment data in real time, or determining the target virtual address space mapped by the target flattening map fragment data according to a pre-established memory mapping relation, wherein the memory mapping relation is a mapping relation between each flattening map fragment data and the virtual address space.
Optionally, the offset dictionary records an offset address of each data item in the flattening map fragment data relative to the virtual address header, wherein the data item comprises a key frame and a map point.
Optionally, the second virtual module 804 is configured to:
And determining a target offset address of the target data item according to the position information to be accessed and the offset dictionary, and determining a virtual address of the target data item according to a virtual address head of the target virtual address space and the target offset address.
Optionally, the reading module 805 is configured to:
and determining a target physical address of the target data item in the page cache based on the virtual address of the target data item, the mapping relation between the virtual address and the physical address in the page cache, and reading data in the target physical address.
Optionally, the apparatus further includes a buffer module, configured to:
When the target physical address in the page cache is invalid, acquiring a target data page of the target data item in the target flattening map fragment data from a magnetic disk;
and reading the target data page to a target physical address in the page cache.
Optionally, the apparatus further includes an editing module configured to:
And performing editing operation on the data in the page cache, wherein the editing operation comprises a modifying operation and/or a deleting operation.
The map data processing device provided by the embodiment of the disclosure can execute the map data processing method provided by any embodiment of the disclosure, and has the corresponding functional modules and beneficial effects of the execution method.
Fig. 9 is a schematic structural diagram of another map data processing apparatus according to an embodiment of the present disclosure, which may be implemented by software and/or hardware, and may be generally integrated in an electronic device. As shown in fig. 9, the apparatus includes:
an acquisition module 901, configured to acquire visual positioning map data;
the flattening module 902 is configured to input an original map tile file of the visual positioning map data into a flattening tool, so as to obtain flattened map tile data and an offset dictionary;
A storage module 903, configured to store the flattened map tile data in a disk.
Optionally, the flattening module 902 is configured to:
And inputting the original map fragment file of the visual positioning map data into the flattening tool, arranging the original map fragment file into continuous byte streams according to a preset layout, and determining the obtained byte stream file as flattening map fragment data.
Optionally, the apparatus further includes a dividing module, configured to:
And dividing the visual positioning map data based on a preset dividing rule to obtain map metadata, spatial index data and a plurality of original map fragment files.
The map data processing device provided by the embodiment of the disclosure can execute the map data processing method provided by any embodiment of the disclosure, and has the corresponding functional modules and beneficial effects of the execution method.
Fig. 10 is a schematic structural diagram of an electronic device according to an embodiment of the disclosure. As shown in fig. 10, the electronic apparatus 1000 includes a Central Processing Unit (CPU) 1001, which can execute various processes in the foregoing embodiments in accordance with a program stored in a Read Only Memory (ROM) 1002 or a program loaded from a storage section 1008 into a Random Access Memory (RAM) 1003. In the RAM1003, various programs and data necessary for the operation of the electronic apparatus 1000 are also stored. The CPU1001, ROM1002, and RAM1003 are connected to each other by a bus 1004. An input/output (I/O) interface 1005 is also connected to bus 1004.
Connected to the I/O interface 1005 are an input section 1006 including a keyboard, a mouse, and the like, an output section 1007 including a Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), and the like, a speaker, and the like, a storage section 1008 including a hard disk, and the like, and a communication section 1009 including a network interface card such as a LAN card, a modem, and the like. The communication section 1009 performs communication processing via a network such as the internet. The drive 1010 is also connected to the I/O interface 1005 as needed. A removable medium 1011, such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like, is installed as needed in the drive 1010, so that a computer program read out therefrom is installed as needed in the storage section 1008.
In particular, according to embodiments of the present disclosure, the methods described above may be implemented as computer software programs. For example, embodiments of the present disclosure include a computer program product comprising a computer program tangibly embodied on a medium readable thereby, the computer program comprising program code for performing the aforementioned obstacle avoidance method. In such an embodiment, the computer program can be downloaded and installed from a network via the communication portion 1009, and/or installed from the removable medium 1011.
The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of apparatus, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The units or modules described in the embodiments of the present disclosure may be implemented by software, or may be implemented by hardware. The units or modules described may also be provided in a processor, the names of which in some cases do not constitute a limitation of the unit or module itself.
In addition, the disclosure also provides a computer readable storage medium, which may be a computer readable storage medium contained in the apparatus in the above embodiment, or may be a computer readable storage medium that exists separately and is not assembled into a device. The computer-readable storage medium stores one or more programs for use by one or more processors in performing the map data processing methods described in the present disclosure.
In addition to the methods and apparatus described above, embodiments of the present disclosure may also be computer program products comprising computer program instructions which, when executed by a processor, cause the processor to perform the map data processing methods provided by the embodiments of the present disclosure.
The computer program product may write program code for performing the operations of embodiments of the present disclosure in any combination of one or more programming languages, including an object oriented programming language such as Java, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computing device, partly on the user's device, as a stand-alone software package, partly on the user's computing device, partly on a remote computing device, or entirely on the remote computing device or server.
Further, embodiments of the present disclosure may also be a computer-readable storage medium having stored thereon computer program instructions which, when executed by a processor, cause the processor to perform the map data processing method provided by the embodiments of the present disclosure.
The computer readable storage medium may employ any combination of one or more readable media. The readable medium may be a readable signal medium or a readable storage medium. The readable storage medium may include, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or a combination of any of the foregoing. More specific examples (a non-exhaustive list) of a readable storage medium include an electrical connection having one or more wires, a portable disk, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
According to one or more embodiments of the present disclosure, there is provided a map data processing method applied to an operating system, including:
Receiving a data reading request, wherein the data reading request is used for reading visual positioning map data, the visual positioning map data comprises map metadata, spatial index data and a plurality of flattening map slicing data, the flattening map slicing data is obtained by processing original map slicing data input into a flattening tool, and the data reading request comprises a current frame or positioning information;
Acquiring the map metadata and the spatial index data, and determining target flattening map fragment data corresponding to a target data item to be accessed and to-be-accessed position information of the target data item in the target flattening map fragment data according to the positioning information, the map metadata and the spatial index data or according to the current frame and the map metadata;
determining a target virtual address space mapped by the target flattening map fragment data;
Acquiring an offset dictionary, and determining the virtual address of the target data item according to the offset dictionary, a target virtual address space and the position information to be accessed;
And reading corresponding data in the page cache based on the virtual address of the target data item.
According to one or more embodiments of the present disclosure, in a map data processing method provided by the present disclosure, determining target flattened map tile data corresponding to a target data item to be accessed and to-be-accessed position information of the target data item in the target flattened map tile data according to the positioning information, the map metadata and the spatial index data, includes:
Searching in the space index data according to the positioning information, and determining an identifier of an initial key frame;
determining a plurality of key frames in a preset range near the initial key frame as target key frames according to the identifier of the initial key frame;
And searching in a key frame lookup table and a key frame profile information catalog in the map metadata one by one according to the identifiers of the target key frames, and determining target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
According to one or more embodiments of the present disclosure, in a map data processing method provided by the present disclosure, searching in a key frame lookup table and a key frame profile information directory in the map metadata one by one according to identifiers of the target key frames, respectively, to determine target flattened map fragment data corresponding to each target key frame and to-be-accessed location information in the target flattened map fragment data, including:
searching in the key frame lookup table according to the identifier of each target key frame, and determining a directory number corresponding to each target key frame;
Searching in the key frame profile information directory according to the directory number corresponding to each target key frame, and determining target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
According to one or more embodiments of the present disclosure, in a map data processing method provided by the present disclosure, determining, according to the current frame and the map metadata, target flattened map fragment data corresponding to a target data item to be accessed and to-be-accessed position information of the target data item in the target flattened map fragment data, includes:
Extracting a feature description word in the current frame, and determining a plurality of candidate key frames by using an inverted index based on the feature description word;
Determining a reference key frame based on the plurality of candidate key frames using a repositioning algorithm;
And searching in a key frame lookup table and a key frame profile information catalog in the map metadata one by one according to the identifiers of the reference key frames, and determining target flattening map fragment data corresponding to each reference key frame and the position information to be accessed in the target flattening map fragment data.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, the method further includes:
determining a plurality of co-view key frames having a co-view relationship with the reference key frame;
and reading corresponding data aiming at the plurality of common view key frames.
According to one or more embodiments of the present disclosure, in a map data processing method provided by the present disclosure, determining a target virtual address space mapped by the target flattened map tile data includes:
and distributing corresponding target virtual address space for the target flattening map fragment data in real time, or determining the target virtual address space mapped by the target flattening map fragment data according to a pre-established memory mapping relation, wherein the memory mapping relation is a mapping relation between each flattening map fragment data and the virtual address space.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, the offset dictionary records an offset address of each data item in each of the flattened map tile data relative to a virtual address header, where the data item includes a key frame and a map point.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, determining, according to the offset dictionary, the target virtual address space, and the location information to be accessed, a virtual address of the target data item includes:
And determining a target offset address of the target data item according to the position information to be accessed and the offset dictionary, and determining a virtual address of the target data item according to a virtual address head of the target virtual address space and the target offset address.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, the reading the corresponding data in the page buffer based on the virtual address of the target data item includes:
and determining a target physical address of the target data item in the page cache based on the virtual address of the target data item, the mapping relation between the virtual address and the physical address in the page cache, and reading data in the target physical address.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, the method further includes:
When the target physical address in the page cache is invalid, acquiring a target data page of the target data item in the target flattening map fragment data from a magnetic disk;
And reading the target data page into the page cache, and storing the target data item into the target physical address.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, the method further includes:
And performing editing operation on the data in the page cache, wherein the editing operation comprises a modifying operation and/or a deleting operation.
According to one or more embodiments of the present disclosure, the present disclosure provides a map data processing method including:
Acquiring visual positioning map data;
Inputting the original map fragment file of the visual positioning map data into a flattening tool to obtain flattening map fragment data and an offset dictionary;
the flattening map tile data is stored in a disk.
According to one or more embodiments of the present disclosure, in a map data processing method provided by the present disclosure, an original map tile file of the visual positioning map data is input into a flattening tool to obtain flattened map tile data, including:
And inputting the original map fragment file of the visual positioning map data into the flattening tool, arranging the original map fragment file into continuous byte streams according to a preset layout, and determining the obtained byte stream file as flattening map fragment data.
According to one or more embodiments of the present disclosure, in the map data processing method provided by the present disclosure, the method further includes:
And dividing the visual positioning map data based on a preset dividing rule to obtain map metadata, spatial index data and a plurality of original map fragment files.
According to one or more embodiments of the present disclosure, there is provided a map data processing apparatus provided to an operating system, including:
the system comprises a request module, a data reading module and a data processing module, wherein the data reading module is used for receiving a data reading request, the data reading request is used for reading visual positioning map data, the visual positioning map data comprises map metadata, space index data and a plurality of flattening map slicing data, the flattening map slicing data is obtained by processing original map slicing data input into a flattening tool, and the data reading request comprises a current frame or positioning information;
the data module is used for acquiring the map metadata and the spatial index data and determining target flattening map fragment data corresponding to a target data item to be accessed and to-be-accessed position information of the target data item in the target flattening map fragment data according to the positioning information, the map metadata and the spatial index data or according to the current frame and the map metadata;
The first virtual module is used for determining a target virtual address space mapped by the target flattening map fragment data;
The second virtual module is used for acquiring an offset dictionary and determining the virtual address of the target data item according to the offset dictionary, the target virtual address space and the position information to be accessed;
and the reading module is used for reading the corresponding data in the page cache based on the virtual address of the target data item.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the data module includes a first unit configured to:
Searching in the space index data according to the positioning information, and determining an identifier of an initial key frame;
determining a plurality of key frames in a preset range near the initial key frame as target key frames according to the identifier of the initial key frame;
And searching in a key frame lookup table and a key frame profile information catalog in the map metadata one by one according to the identifiers of the target key frames, and determining target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
According to one or more embodiments of the present disclosure, in the map data processing device provided by the present disclosure, the first unit is specifically configured to:
searching in the key frame lookup table according to the identifier of each target key frame, and determining a directory number corresponding to each target key frame;
Searching in the key frame profile information directory according to the directory number corresponding to each target key frame, and determining target flattening map fragment data corresponding to each target key frame and the position information to be accessed in the target flattening map fragment data.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the data module includes a second unit configured to:
Extracting a feature description word in the current frame, and determining a plurality of candidate key frames by using an inverted index based on the feature description word;
Determining a reference key frame based on the plurality of candidate key frames using a repositioning algorithm;
And searching in a key frame lookup table and a key frame profile information catalog in the map metadata one by one according to the identifiers of the reference key frames, and determining target flattening map fragment data corresponding to each reference key frame and the position information to be accessed in the target flattening map fragment data.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the apparatus further includes a common view module for:
determining a plurality of co-view key frames having a co-view relationship with the reference key frame;
and reading corresponding data aiming at the plurality of common view key frames.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the first virtual module is configured to:
and distributing corresponding target virtual address space for the target flattening map fragment data in real time, or determining the target virtual address space mapped by the target flattening map fragment data according to a pre-established memory mapping relation, wherein the memory mapping relation is a mapping relation between each flattening map fragment data and the virtual address space.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the offset dictionary records an offset address of each data item in each of the flattened map tile data, the data item including a key frame and a map point, with respect to a virtual address header.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the second virtual module is configured to:
And determining a target offset address of the target data item according to the position information to be accessed and the offset dictionary, and determining a virtual address of the target data item according to a virtual address head of the target virtual address space and the target offset address.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the reading module is configured to:
and determining a target physical address of the target data item in the page cache based on the virtual address of the target data item, the mapping relation between the virtual address and the physical address in the page cache, and reading data in the target physical address.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the apparatus further includes a buffer module configured to:
When the target physical address in the page cache is invalid, acquiring a target data page of the target data item in the target flattening map fragment data from a magnetic disk;
and reading the target data page to a target physical address in the page cache.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the apparatus further includes an editing module configured to:
And performing editing operation on the data in the page cache, wherein the editing operation comprises a modifying operation and/or a deleting operation.
According to one or more embodiments of the present disclosure, there is provided a map data processing apparatus including:
The acquisition module is used for acquiring the visual positioning map data;
the flattening module is used for inputting the original map fragment file of the visual positioning map data into a flattening tool to obtain flattening map fragment data and an offset dictionary;
and the storage module is used for storing the flattening map fragment data in a magnetic disk.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the flattening module is configured to:
And inputting the original map fragment file of the visual positioning map data into the flattening tool, arranging the original map fragment file into continuous byte streams according to a preset layout, and determining the obtained byte stream file as flattening map fragment data.
According to one or more embodiments of the present disclosure, in the map data processing apparatus provided by the present disclosure, the apparatus further includes a dividing module configured to:
And dividing the visual positioning map data based on a preset dividing rule to obtain map metadata, spatial index data and a plurality of original map fragment files.
According to one or more embodiments of the present disclosure, the present disclosure provides an electronic device comprising:
A processor;
a memory for storing the processor-executable instructions;
The processor is configured to read the executable instructions from the memory and execute the instructions to implement any of the map data processing methods provided in the present disclosure.
According to one or more embodiments of the present disclosure, there is provided a computer-readable storage medium storing a computer program for executing any one of the map data processing methods provided by the present disclosure.
It should be noted that in this document, relational terms such as "first" and "second" and the like are used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. Moreover, the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises an element.
The foregoing is merely a specific embodiment of the disclosure to enable one skilled in the art to understand or practice the disclosure. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the disclosure. Thus, the present disclosure is not intended to be limited to the embodiments shown and described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.