Method and apparatus for navigation using point quality filter

By moving and adjusting the probability grid of point mass filters in a programmable circuit system, the problem of the existing technology reducing navigation accuracy under low information volume and large speed error is solved, and efficient navigation and filter performance maintenance is achieved.

CN120141466APending Publication Date: 2025-06-13THE BOEING CO
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411808322.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-12-11
Filing Date
2024-12-10
Publication Date
2025-06-13

AI Technical Summary

Technical Problem

The performance of existing point-quality filters deteriorates in areas with low information and in the presence of velocity errors, resulting in reduced navigation accuracy and weakened filter performance.

Method used

By implementing instructions in a programmable circuit system, the probability grid of the point mass filter is moved based on the movement of the vehicle, and the grid is adjusted in a linear manner based on bounded errors to maintain navigation accuracy.

Benefits of technology

It realizes that navigation accuracy and filter performance are maintained in the case of low information volume and velocity error, avoiding the increase in position error and calculation burden.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120141466A_ABST
    Figure CN120141466A_ABST
Patent Text Reader

Abstract

The invention relates to a method and apparatus for navigating using a point quality filter. The invention discloses a method and apparatus for navigating using a point quality filter. A disclosed apparatus for adjusting a probability grid of a point quality filter for navigation of a vehicle includes interface circuitry communicatively coupled to a sensor of the vehicle, machine readable instructions, and programmable circuitry, and programmable circuitry to instantiate or implement at least one of the machine readable instructions to move the probability grid based on movement of the vehicle, and to perform linear adjustment of at least a portion of the probability grid with respect to time based on bounded errors corresponding to the movement of the vehicle.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure generally relates to vehicle navigation, and more particularly to methods and devices for terrain-aided navigation using a point mass filter. Background Art

[0002] A point mass filter (PMF) has been used for terrain-aided navigation (TAN). The PMF typically operates under the assumption that the speed estimate of the vehicle has a zero mean error. When an aircraft flies over areas with low information content (e.g., flat ground, water bodies, etc.), this limitation can lead to a degradation in the performance of the PMF. In particular, errors can occur in unmanned aerial systems (UAS), including unmanned aerial vehicles (UAV) that utilize low-quality microelectromechanical systems (MEMS) (e.g., inertial measurement units (IMU)). To mitigate these errors, the estimation error of the speed estimate can be artificially increased. However, the degree of increase in the speed estimate typically depends on the flatness of the area over which the UAV travels, and additionally, it is difficult to determine independently of the flight path. Increasing the error estimate by these methods can also reduce the overall filter performance. Summary of the Invention

[0003] An apparatus for adjusting a probability grid of a point mass filter for navigation of a vehicle includes interface circuitry communicatively coupled to sensors of the vehicle, machine-readable instructions, and programmable circuitry for instantiating or implementing at least one of the machine-readable instructions to move the probability grid based on movement of the vehicle, and to perform a linear adjustment of at least a portion of the probability grid over time based on a bounded error corresponding to the movement of the vehicle.

[0004] An example non-transitory machine-readable storage medium includes instructions for causing programmable circuitry to move a probability grid corresponding to a point mass filter for navigation of a vehicle at least based on movement of the vehicle, and to perform a linear adjustment of at least a portion of the probability grid over time based on a bounded error corresponding to the movement of the vehicle.

[0005] An example method includes moving a probability grid of a point mass filter for navigation of a vehicle based on movement of the vehicle by implementing instructions with programmable circuitry, and performing a linear adjustment of at least a portion of the probability grid over time based on a bounded error corresponding to the movement of the vehicle by implementing instructions with programmable circuitry.

[0006] Clause 1. An apparatus (108) for adjusting a probability grid of a point mass filter for navigation of a vehicle (100), the apparatus comprising:

[0007] An interface circuit system (820) communicatively coupled to a sensor (110) of the vehicle;

[0008] Machine-readable instructions (832); and

[0009] A programmable circuit system (600) for instantiating or implementing at least one of the machine-readable instructions to:

[0010] Move the probability grid based on the movement of the vehicle; and

[0011] Perform a linear adjustment of at least a portion of the probability grid over time based on a bounded error corresponding to the movement of the vehicle.

[0012] Clause 2. The apparatus according to clause 1, wherein the programmable circuit system is configured to determine an estimate of the orientation of the vehicle based on the probability grid.

[0013] Clause 3. The apparatus according to clause 1, wherein the programmable circuit system is configured to linearly adjust the size of a two-dimensional region of the probability grid.

[0014] Clause 4. The apparatus according to clause 3, wherein the programmable circuit system is configured to linearly adjust the two-dimensional region of the region based on the bounded error with respect to a first-order time.

[0015] Clause 5. The apparatus according to clause 1, wherein the programmable circuit system is configured to identify a point in the probability grid having the highest probability value to estimate the orientation of the vehicle.

[0016] Clause 6. The apparatus according to clause 5, wherein the programmable circuit system is configured to center the probability grid based on the identified point.

[0017] Clause 7. The apparatus according to clause 1, wherein the programmable circuit system is configured to smooth the probability grid.

[0018] Clause 8. The apparatus according to clause 1, wherein the programmable circuit system is configured to determine the degree of the bounded error with respect to a speed error of the vehicle, and wherein the linear adjustment of the at least a portion of the probability grid is based on the speed error.

[0019] Clause 9. A non-transitory machine-readable storage medium comprising instructions for causing a programmable circuit system to at least:

[0020] Move a probability grid of a point mass filter corresponding to the navigation of a vehicle based on the movement of the vehicle; and

[0021] Perform a linear adjustment of at least a portion of the probability grid over time based on a bounded error corresponding to the movement of the vehicle.

[0022] Clause 10. The non-transitory machine-readable storage medium according to Clause 9, wherein the instructions cause the programmable circuitry to determine an estimate of the orientation of the vehicle based on the probability grid.

[0023] Clause 11. The non-transitory machine-readable storage medium according to Clause 9, wherein the instructions cause the programmable circuitry to linearly adjust the size of a two-dimensional region of the probability grid.

[0024] Clause 12. The non-transitory machine-readable storage medium according to Clause 11, wherein the instructions cause the programmable circuitry to linearly adjust a two-dimensional extent of the region based on the bounded error with respect to first-order time.

[0025] Clause 13. The non-transitory machine-readable storage medium according to Clause 9, wherein the instructions cause the programmable circuitry to identify a point in the probability grid having the highest probability value to estimate the orientation of the vehicle.

[0026] Clause 14. The non-transitory machine-readable storage medium according to Clause 13, wherein the instructions cause the programmable circuitry to center the probability grid based on an identified one of the points.

[0027] Clause 15. The non-transitory machine-readable storage medium according to Clause 9, wherein the instructions cause the programmable circuitry to smooth the probability grid.

[0028] Clause 16. The non-transitory machine-readable storage medium according to Clause 9, wherein the instructions cause the programmable circuitry to determine the bounded error with respect to a speed error of the vehicle, and wherein the linear adjustment of the at least a portion of the probability grid is based on the speed error.

[0029] Clause 17. A method, comprising:

[0030] Moving a probability grid of a point mass filter for navigation of a vehicle based on movement of the vehicle by implementing instructions with a programmable circuitry; and

[0031] Performing a linear adjustment of at least a portion of the probability grid over time based on a bounded error corresponding to the movement of the vehicle by implementing instructions with the programmable circuitry.

[0032] Clause 18. The method according to Clause 17 performs the linear adjustment of the probability grid by adjusting the size of the two-dimensional region of the probability grid.

[0033] Clause 19. The method according to Clause 17 further includes smoothing the probability grid by implementing instructions with the programmable circuitry.

[0034] Clause 20. The method according to Clause 17 further includes determining the bounded error relative to the speed error of the vehicle by implementing instructions with the programmable circuitry, and wherein the linear adjustment of at least a portion of the probability grid is based on the speed error. Description of the Drawings

[0035] Figure 1 An exemplary vehicle in which the examples disclosed herein may be implemented.

[0036] Figure 2 A block diagram depicting an example process flow in accordance with the teachings of the present disclosure.

[0037] Figure 3 A graph depicting a point mass filter (PMF) that may be implemented in the examples disclosed herein.

[0038] Figures 4A - 4G Depicting an example aspect of the computations of the examples disclosed herein.

[0039] Figures 5A - 5H Depicting an aspect of an exemplary result corresponding to the examples disclosed herein.

[0040] Figure 6 A block diagram of an example azimuth probability analysis system that may be implemented in the examples disclosed herein.

[0041] Figure 7 Representing example machine-readable instructions and / or example operations that may be implemented, instantiated, and / or executed by an example programmable circuitry to implement Figure 6 the azimuth probability analysis system.

[0042] Figure 8 An example processing platform of a programmable circuitry that includes circuitry configured to implement, instantiate, and / or execute example machine-readable instructions and / or perform Figure 7 example operations to implement Figure 6 the azimuth probability analysis system.

[0043] Figure 9 For Figure 8 an example implementation of the programmable circuitry.

[0044] Figure 10For Figure 8 A block diagram of another example implementation of a programmable circuit system.

[0045]

[0045] Generally, throughout the drawings and the accompanying written description, the same reference numerals will be used to refer to the same or similar components. The drawings are not necessarily to scale. Instead, the thickness of layers or regions may be exaggerated in the drawings. Although the drawings show layers and regions with clear lines and boundaries, some or all of these lines and / or boundaries may be idealized. In reality, the boundaries and / or lines may be unobservable, blended, and / or irregular. Detailed implementation

[0046] Figure 1 An exemplary vehicle 100 in which the examples disclosed herein may be implemented. The illustrated example vehicle 100 is implemented as an unmanned aerial vehicle (UAV) and / or an unmanned aerial system (UAS). In this example, the vehicle 100 is autonomously guided such that the vehicle 100 is at least partially self-guided. The exemplary vehicle 100 includes a body 102, rotors 104, supports 106 that support respective ones of the rotors 104, a navigation / guidance system 108, at least one sensor 110, and a data storage device 112. In this example, the sensor 110 includes an altimeter (e.g., a barometer) and a ground elevation sensor (e.g., a radar altimeter, a laser altimeter, etc.). Additionally, the (one or more) sensors 110 may include an inertial measurement unit (IMU). However, any other similar type of sensor may alternatively be implemented.

[0047]

[0047] To guide the vehicle 100, the illustrated example navigation / guidance system 108 controls the rotors 104 based on information corresponding to terrain-aided navigation (TAN). In this example, terrain elevation data from the (one or more) sensors 110 is used to perform TAN to guide the movement of the vehicle 100. In this particular example, the elevation data captured by the (one or more) sensors 110 corresponds to the elevation of the terrain and / or the water surface below the aircraft. In turn, the data is compared with a database of terrain elevation data stored in the data storage device 112 for position determination / estimation, which in turn can be used for the navigation and / or guidance of the vehicle 100. Such implementations are particularly advantageous in situations where global navigation satellite system (GNSS) signals such as global positioning system (GPS) signals are no longer available or are interfered with.

[0048]

[0048] Known embodiments utilize Bergman's Bayesian methods, as described in "A Bayesian approach to terrain-aided navigation", IFAC Proceedings Volumes, Vol. 30, No. 11, 1997, pp. 1457-1462 and "Recursive Bayesian Estimation - Navigation and Tracking Applications", (Linkoping Studies in Science and Technology). Dissertation, Vol. 579, 1999, both of which are incorporated herein by reference in their entirety. Peng, D., Zhou, T., Xu, C., Zhang, W., and Shen, J., "Marginalized point mass filter with estimating tidal depth bias for underwater terrain-aided navigation", Journal of Sensors, Vol. 2019, 2019. https: / / doi.org / 10.1155 / 2019 / 7340130, which is incorporated herein by reference in its entirety, extends Bergman's method by considering bias errors in vehicle altitude (barometer) measurements through a method called the marginalized point mass filter (mPMF). Two methods regarding the point mass filter (PMF) proposed by Berman and Peng et al., the error in speed measurement is assumed to be a random error with zero mean, and the standard deviation of the prior estimate, which can lead to inaccuracy and / or instability when flying over flat or near-flat terrain. However, these assumptions can be valid when direct speed measurements such as Doppler radar data are available. The speed sensor can have zero bias or near-zero bias, such that known algorithms can utilize its operations well. However, in many UAS embodiments, direct measurement of vehicle speed is not available. Therefore, the speed can be estimated by leveraging onboard IMU estimates and / or wind speed estimates that can be enhanced by airspeed sensing, etc.

[0049] In fact, in the absence of external absolute orientation measurements, non-zero mean errors (or biases) in velocity estimation are common in known implementations. However, the velocity estimation can be bounded (e.g., as a bounded error). Thus, when there is a bias in the velocity error, when the vehicle is flying over flat terrain, the PMF of known implementations cannot expand the probability density function (PDF) grid fast enough. As a result, the vehicle position / orientation can move out of the grid (e.g., an orientation grid, a search grid, a probabilistic position grid, etc.) and cause the PMF to fail to successfully locate the vehicle 100. Thus, using known implementations of the PMF can be unreliable and unavailable for many UAS applications. Reducing the velocity error can be performed by increasing the prior estimate of the standard deviation of the velocity error to expand the grid in a fast manner. However, using such methods, the grid typically does not expand fast enough to prevent the UAS position / orientation from moving out of the grid. At the same time, since the grid is over-smoothed, artificially increasing this estimate can lead to a reduction in PMF performance, thereby substantially removing excessive information from the PDF enumerated on and represented as in the grid. The disclosed examples can advantageously expand and / or contract the grid as needed while maintaining accuracy.

[0050] The examples disclosed herein advantageously implement a PMF based on the overall bounded velocity error of the vehicle 100. By advantageously restricting the velocity error, once the vehicle 100 is flying over an area with low information content of any size (e.g., low texture detail, terrain with few variations, etc.), the examples disclosed herein utilize the PMF to recover the orientation of the vehicle 100. Thus, the disclosed examples can perform orientation determination / estimation without degrading the filter performance or computational burden. Compared with known implementations, the examples disclosed herein do not utilize the assumption of zero mean error in velocity measurement, but instead utilize a bounded velocity error. According to the examples disclosed herein, as long as the velocity error is less than a bounded value, the grid can expand in a fast manner to keep the position of the vehicle 100 restricted within the grid without significantly losing accuracy or increasing the computational workload. The examples disclosed herein can also advantageously remove the bias in the known PMF algorithms that favors a possible solution near other possible solutions. However, even when one solution is more likely than another, the examples disclosed herein can suppress that solution as an option when the solution is isolated. The examples disclosed herein are generally not affected by bias and can maintain the relative likelihood of each point in the aforementioned grid.

[0051] Although vehicle 100 is implemented as a UAV in this example, vehicle 100 can be implemented as any other suitable type of vehicle, projectile, ground-based vehicle, watercraft, hovering vehicle, submersible, etc. In such examples where vehicle 100 is implemented as a ground-based vehicle or a hovering vehicle, vehicle 100 can utilize TAN and / or TAN-like methods in the examples disclosed herein relatively very close to the ground.

[0052] Figure 2 FIG. is a block diagram depicting an example process flow 200 in accordance with the teachings of the present disclosure. In Figure 2 the illustrated example, Figure 1 vehicle 100 flies over terrain and loses capture of the GNSS signal (e.g., the GNSS signal is jammed, external conditions attenuate the GNSS signal, etc.). Additionally, vehicle 100 flies over terrain that may lack detail and / or water bodies. In this example, vehicle 100 performs TAN based on the output from sensor 110. In a particular example, sensor(s) 110 includes an altitude measurement device (e.g., a lidar) or other device to obtain altitude data corresponding to the position of vehicle 100 and / or the terrain of the surrounding area.

[0053] In block 202, the grid of the illustrated example is moved in a time propagation step. According to the examples disclosed herein, the time propagation step occurs between altitude measurements (e.g., consecutive altitude measurements, consecutive terrain comparisons, etc.) and can include and / or correspond to two main steps: (i) moving the grid, and (ii) smoothing / expanding the grid. Between altitude measurements, vehicle 100 moves and can utilize the speed of vehicle 100 (e.g., an estimated speed). According to the examples disclosed herein, when vehicle 100 moves between altitude measurements, as a result, the grid moves based on the measured speed of vehicle 100 such that the position of vehicle 100 remains within the grid and is potentially aligned, for example, with a corresponding point in the grid. During grid movement, there are errors in the speed measurement. In particular, errors in the speed measurement can cause the grid to be moved incorrectly. In the reference frame of the grid, the error can cause the actual position to move within the grid. Thus, vehicle 100 may no longer be below the peak point in, and in the worst case, vehicle 100 has moved out of the grid without adjusting the grid.

[0054] In block 204, according to the examples disclosed herein, the size of the grid is adjusted (e.g., expanded) and smoothing techniques are applied to the grid. Additionally, the examples disclosed herein can consider points along the edges of the grid. In this example, when When relatively smooth, the grid is expanded to capture and / or encompass new possible / potential locations of vehicle 100. If the location of vehicle 100 is on or near the edge of the grid and there is a probability that vehicle 100 may move out of the grid, then the examples disclosed herein may linearly expand the size of the grid with respect to time to ensure that the location remains within the border (e.g., outer edge) of the grid. According to the examples disclosed herein, the PMF utilizes a point grid with an associated probability of vehicle 100 being at that location. Thus, the smoothed grid represents a mathematical interpretation of vehicle 100 moving within the grid based on probability statistics corresponding to the aforementioned velocity measurement error. According to the examples disclosed herein, when smoothing results in points outside the grid having non-negligible corresponding probabilities, the grid may be expanded to capture those points.

[0055] According to the examples disclosed herein, during each iteration of the PMF, the grid may be repeatedly expanded and / or contracted. To this end, ground elevation measurements may be utilized to identify points that are unlikely to be solutions for the location of vehicle 100, and thus the relative probabilities of those points may be moved down (e.g., pushed). When the probability of a point is relatively low, the disclosed examples may remove / weed out that point (e.g., that point and other points that are relatively very close to it) from the grid. According to the examples disclosed herein, between measurements, the implemented PMF utilizes error estimates in velocity measurements to smooth and expand the grid. In some examples, the repeated expansion and contraction of the grid may reach a steady state point such that the size of the grid remains relatively constant. However, when vehicle 100 is flying over terrain with more variation and / or defined elevation (e.g., elevation with more terrain information), the size of the grid may be reduced because the PMF is able to rule out additional grid points as possible locations. When the exemplary vehicle 100 is flying over flat terrain, the PMF may not be able to rule out points based on the lack of information in the elevation measurements. In this case, the grid may continuously expand. Thus, once the exemplary vehicle 100 starts flying over varying terrain again, the filter may rule out a large number of points in a relatively quick manner, and thus, the size of the grid may be shrunk and / or reduced.

[0056] In block 206, map / elevation data is accessed and / or retrieved from data storage device 112 carried by vehicle 100. In this example, the map / elevation data corresponds to elevation data of the area at or near vehicle 100 (e.g., the last known bearing, the bearing determined / estimated before tracking of vehicle 100 lost GNSS signal, etc.). According to some examples disclosed herein, the map / elevation data is taken from satellites and / or map data. In other examples, the map / elevation data is obtained and / or retrieved from a wireless communication system (e.g., a cellular network, a wireless communication network, etc.).

[0057] In block 208, atFigure 2 In the illustrative example, the sensor output from the sensor(s) 110 is compared with the aforementioned map / elevation data. In this example, multiple points of the terrain are measured and / or analyzed to define ground elevation measurements. For example, these points can be measured by a combination of a barometer, a laser / radar rangefinder, etc. In Figure 2 the illustrative example, the PMF is utilized to compare the ground elevation measurements with a digital elevation map (e.g., stored in the data storage device 112). Further, the aforementioned points representing the terrain are utilized and / or represented in the aforementioned grid such that each point of the grid corresponds to a measurement point on the ground. According to the examples disclosed herein, the elevation of each point of the grid matches the aforementioned measured elevation. The degree of match (as its grade) between the point and the measured elevation is stored in it. Thus, the grade of the grid points that match the measurement more closely can be increased. Conversely, the points that do not match the measurement closely can have their grade decreased. According to some examples disclosed herein, when a grid point does not match the measurement (e.g., the grid point does not match the measurement several times in a row as it may not be the location of the vehicle 100), the grade of that particular point becomes very low and / or significantly low and is removed from the area of possible solutions (AoPS), and as a result, can be culled and / or removed from the grid. Thus, by reducing the tracking of infeasible solutions (e.g., infeasible bearings), the computational overhead associated with the PMF can be significantly reduced, thereby enabling a reduction in power consumption, which can be particularly advantageous for UAV / UAS implementations / applications. Based on a series of matching measurements, the examples disclosed herein can shrink and / or reduce the size of the grid to a relatively small area around the location of the vehicle 100, where the actual location typically aligns with the peak of.

[0058] At block 210, in Figure 2 the illustrative example, the grid point corresponding to the highest probability (represented by the highest grade in it) is determined and / or identified. According to the examples disclosed herein, the grid point corresponding to the highest probability is assumed and / or estimated to be the bearing / location of the vehicle 100.

[0059] At block 212, the bearing of the vehicle 100 is estimated and / or calculated, and the process ends. According to some examples disclosed herein, the bearing of the vehicle 100 is estimated and / or calculated to guide the movement of the vehicle 100 (e.g., in the absence of a GNSS signal, in the absence of available terrain data / information, etc.).

[0060] Figure 3 Graphs 302, 304 corresponding to the PMF that can be implemented in the examples disclosed herein are depicted. In Figure 3In the illustrated example, graph 302 corresponds to a grid of possible solutions corresponding to the location of vehicle 100 (e.g., a probability grid of potential location positions of vehicle 100). Example graph 304 corresponds to the probability of a grid point matching the location of the vehicle, described herein as

[0061] According to examples disclosed herein, the PMF tracks, represents and / or corresponds to a two-dimensional (2D) point grid. In particular, each point of the grid is a possible / potential location of the vehicle 100. According to the examples disclosed herein, the overall grid constrains the estimation of where the solution for the location can be so that the actual / true location of the vehicle 100 is within the grid. Otherwise, the algorithm using the PMF may fail. Example graphic 302 shows a grid of possible locations of the vehicle 100

[0062] According to examples disclosed herein, each point of the grid is assigned a rating and / or value corresponding to the likelihood that the point is the correct solution, and the PMF is used to provide the location of the point with the highest value as its estimate of the orientation of the vehicle 100. In this example, is implemented as a matrix and / or array in which each of the point values / scores / ratings is stored. Visualization, Figure 3 The example graphic 302 indicates The probability that each point in is a solution, where the lighter portions indicate the most likely solution and the darker portions indicate the least likely solution. In addition, the aforementioned example graph 304 represents the data of graph 302 as a surface and / or contour, where the height and shading correspond to the probability that a particular point is a solution. Thus, in some examples, The absolute values ​​in are irrelevant, but the relative values ​​are relevant. Typically, Normalize with maximum value = 1 or sum of all points = 1.

[0063] Figures 4A - 4G Describes example aspects of computing for the examples disclosed herein. Figure 4A , shows an example altitude grid 400 with a center 401 and an area of ​​possible solutions (AoLS) 402. Figure 4A In the example shown, AoLS 402 is a grid The vehicle 100 may be located in a generally (e.g., loosely) defined area. In some examples, for example, if If the AoLS 402 is within 1 standard deviation of the peak value, then the AoLS 402 can be considered as all points within 1 standard deviation of the peak value. Additionally or alternatively, the AoLS 402 can be defined as the region where the value of a single point is within 60% of the maximum value. A second example region is alsoFigure 4A The possible solution area (AoPS) 404 depicted in []. In this example, the AoPS 404 can be defined using grid points between 5% and 60% of the maximum value of []. Thus, the AoPS 404 can correspond to, represent, and / or mark areas where the vehicle 100 can be but is less likely to be. In this example, the area 406 corresponds to the possible area of the vehicle 100 (e.g., a possible area with a low likelihood of being the position of the vehicle 100). According to the example described in [], the remaining points of the grid have values less than 5% of the maximum value. According to the examples disclosed herein, these remaining points can be removed and / or discarded from the grid, thereby reducing computation time and / or resources. In other words, when points are removed from the grid, the boundaries of the grid can be adjusted. The foregoing boundaries may not be important, and values outside the AoPS 404 and / or AoLS 402 can be removed from the grid. In some examples, the boundaries and / or the remaining points can be used for visualizing points corresponding to positions where the vehicle 100 may be (e.g., within one standard deviation of the peak).

[0064] According to Figure 4A the example described, the remaining points of the grid have values less than 5% of the maximum value. According to the examples disclosed herein, these remaining points can be removed and / or discarded from the grid, thereby reducing computation time and / or resources. In other words, when points are removed from the grid, the boundaries of the grid can be adjusted. The foregoing boundaries may not be important, and values outside the AoPS 404 and / or AoLS 402 can be removed from the grid. In some examples, the boundaries and / or the remaining points can be used for visualizing points corresponding to positions where the vehicle 100 may be (e.g., within one standard deviation of the peak).

[0065] The examples disclosed herein can maintain the position of the vehicle 100 within the AoLS 402, even when the vehicle 100 is flying over an area of flat or reduced-detail terrain, and keep the position of the vehicle 100 within the AoPS 404. Otherwise, the solution can fall out of the grid and can thus ultimately be lost to the filter. As shown herein, the AoLS 402 and AoPS 404 are depicted in approximately white and black, respectively. The area around the AoPS 404 in the foregoing area 406 includes points that may be eligible for removal from the grid. In Figure 4A the example described, the elevation grid 400 depicts [] overlaid on the terrain and the height map 410 also depicts the AoLS 402, the AoPS 404, and the foregoing area 406. In this example, the foregoing center 401 corresponds to the actual position of the vehicle 100 (depicted as a point). According to the examples disclosed herein, utilizing the PMF includes two main steps: (i) a time propagation step and (ii) a measurement step. In the example measurement step, the grid is refined based on information obtained from terrain measurements. In the time propagation step, the grid is refined based on an estimate of the change in the orientation of the vehicle 100 between measurements and / or measurement steps.

[0066] According to the examples disclosed herein, the foregoing time propagation step described above can be used for two purposes, among other purposes. The first purpose is that the time propagation step moves the foregoing grid at an estimated (or measured) speed Multiply by the amount of time between measurements and the product of Δt (e.g., the estimated azimuth change between measurements) ) The product. For a second purpose, the examples disclosed herein adjust via smoothing and expanding the grid to account for errors in the estimated velocity.

[0067] As described above, the grid is moving. For example, at each time step, the grid moves by an estimate of the azimuth change between time steps. This can be achieved by multiplying the measured velocity by the time change, as seen in Example Equation 1 below:

[0068] , where the velocity measurement is modeled as having zero mean, uncorrelated, with Gaussian white noise error.

[0069] Known uses of PMF expand the grid . In particular, PMF is used to identify which point in the grid aligns with the position of vehicle 100. Thus, when there is a threshold degree of error in the velocity measurement, the point that aligns with the position can be changed. This can be visualized as the position where vehicle 100 moves around the grid (even though both the grid and the position move over time). The PMF algorithm / implementation takes into account that the position can move within the grid. Therefore, using a prior estimate of the standard deviation of the velocity error, smooth the grid values at the points in. As a result of the smoothing, the peak can be reduced while the surrounding values increase. Assume that the grid point that aligns with the position of vehicle 100 has the highest value in . During the smoothing step, the value of the grid point will decrease and the values of the adjacent points will increase. This adjustment of values takes into account the velocity error. Due to the velocity error, the actual solution may have moved to align with at least one adjacent grid point. In other words, the probability of the peak decreases and, conversely, the values of the adjacent points increase. This smoothing can be achieved by defining a 2D probability density function that corresponds to the probability that the error in the azimuth change will be the distance of. This probability density function is defined as shown in the combined Example Equation 2 below:

[0070]

[0071] , where is derived from Example Equation 1. In this example, the PDF has the same or similar spacing between the points of the main grid for a set of points discretized onto the grid to obtain the following Example Equation 3:

[0072]

[0073] wherein

[0074] In this example, n h is a value corresponding to ((2n h +1)×(2n h +1)), and n h corresponds to the number of points that will grow within, during, and / or between each time step. In this example, corresponding to The symbol of refers to the next largest integer, or ceiling function. This can be extended to Example Equation 4: The symbol of refers to the next largest integer, or ceiling function. This can be extended to Example Equation 4:

[0075]

[0076] k = -n h ,..., -1, 0, 1,..., n h and l = -n h ,..., -1, 0, 1,..., n h (4)

[0077] , wherein is and the spacing between grid points in. In this example, is a discrete, truncated, zero-mean 2D normal probability density function, which is created with the same or similar spacing as the grid . According to the examples disclosed herein, the error PDF is truncated by n standard deviations, for example typically on the order of 2 or 3 standard deviations. Artificially increasing n higher and thus expanding the grid at a faster rate is generally not beneficial because these points will have values close to zero and will be immediately culled. According to the examples disclosed herein, AoLS / AoPS is expanded compared to expanding the grid with points having values close to zero. In addition, for larger n, the size increases, resulting in the entire algorithm running at a slower rate because subsequent steps are a significant driver of the time required to execute the PMF algorithm. Therefore, the PMF algorithm incorporates this error in the velocity measurement into by convolving with , as shown in Example Equation 5 below:

[0078]

[0079] As a result, the grid is smoothed and expanded, causing the grid to act on the image similar to a Gaussian blur. In particular, the peaks of high values are distributed to adjacent grid points.

[0080] A non-zero bias error, such as assumed in known embodiments, can cause many problems. As described above in the context of the PMF embodiment, the goal of using PMF is to make The grid points in are typically aligned with the position of vehicle 100 having the highest value in This can be mainly done during the measurement step. When vehicle 100 flies over a terrain with a large amount of information (e.g., based on hilly terrain or many landmarks), Many of the points in will have a ground elevation that is not relatively close to the measured elevation. In particular, the corresponding values of these points in will decrease, while the points near the correct elevation will have an increased associated value. Furthermore, the overall effect is that the points near the position of vehicle 100 are elevated, while the values of other points are decreased (e.g., depressed). If the position point of vehicle 100 moves within the grid due to an error in the speed estimate then the examples disclosed herein can follow vehicle 100 by elevating the values of the new grid points near the position of vehicle 100 at each new measurement step and decreasing (e.g., depressing) the values of the points that are no longer near the position of vehicle 100. As a result, a competition arises between the ability of the algorithm to elevate the true points to the maximum value and the position of vehicle 100 moving to different points. As described above, such movement of the true points can be due to an error in the speed estimate However, in reality, the true solution does not move within the grid. Instead, an error in the speed estimate can cause the grid to move incorrectly and not move at the same speed and direction as the position of vehicle 100. Thus, the position of vehicle 100 can appear to move within the grid. During periods of low information (e.g., when vehicle 100 is flying over flat ground), the measurement step cannot reduce (e.g., depress) the values of the incorrect points and elevate the values of the grid points aligned with the correct solution. Furthermore, remains unchanged, and thus, The peak points in no longer correspond to the position of vehicle 100. PMF can solve this loss of accuracy by depressing the peaks and distributing their values to adjacent points. In some examples, PMF can smooth the peak in, and in fact in response to a reduced confidence corresponding to the position of vehicle 100. If such an effect persists for the necessary amount of time, then the position of vehicle 100 can leave the grid (e.g., go off-grid). As a result, the determination of the position of vehicle 100 can fail and / or become irrecoverable. To mitigate such adverse outcomes, for example, the PMF can be utilized to attempt to keep the position of vehicle 100 within the grid by expanding the grid during the time propagation step. In essence, in the aforementioned competition between the algorithm's ability to raise the true point to a maximum and the tendency of the true point to drift around the grid, the algorithm can expand (e.g., artificially expand) the grid and raise the points to which the true point can drift (e.g., without culling points). In contrast to reduced information (e.g., smooth terrain), as the measurement information returns increase (e.g., flying over hilly terrain), the algorithm can quickly raise the value of the grid points corresponding to the position of vehicle 100 and shrink the values of the grid points around the position. The problem with known implementations that vary the size of the grid is that the known implementations cannot expand the grid in a fast manner to ensure that the position of vehicle 100 does not go off-grid when encountering low information periods.

[0081] Some known systems utilize a non-linear expansion of the AoLS 402. In particular, known PMF algorithms assume is uncorrelated, zero-mean Gaussian noise. Assuming this is true, the orientation of vehicle 100 can drift around in a random pattern known as a Gaussian random walk. In particular, the position of vehicle 100 can move on the grid in random directions with a step size. Thus, according to Example Equation 6, the distance the position of vehicle 100 moves after n step sizes is a random variable with the following statistics:

[0082]

[0083] As can be seen in Example Equation 6, in known implementations, assuming a random walk, the grid expands at the same rate at which vehicle 100 can deviate. In particular, the algorithms of known implementations can expand the grid at a rate corresponding to the square root of time. This known method can work with non-zero mean errors in velocity estimation. As described by Bergman, to compensate for the bias error, is artificially increased slightly, and then the PMF uses the altitude measurement information to drive the grid points not aligned with the position of vehicle 100 downward in a relatively fast manner and the points aligned with the position upward. In other words, this algorithm can successfully track the position by raising the points aligned with the position of vehicle 100. Additionally, tracking the position in combination with convolution can maintain the position within the AoLS and thus within the grid.

[0084] The examples disclosed herein can be advantageously used in regions with low information content and bias errors in speed estimation (e.g., flat terrain). In contrast, known systems can have difficulties in such cases. Depending on the location where vehicle 100 is flying, there will likely be periods of low information content. For some UASs with low-cost microelectromechanical systems (MEMs) IMUs, there will likely be a bias error in speed estimation. In these cases, using known implementations, the PMF can fail when getting out of the grid. To mitigate such effects, can be significantly increased. In particular, a larger results in the grid expanding faster. (See Equation 6). However, since the grid expands as a function of the square root of time, the amount of increase depends on how long vehicle 100 will fly over the low-information region. In particular, as the amount of time in the low-information region is longer, the value of is larger. Due to the larger filter being less accurate because essentially removes information from by oversmoothing. Therefore, there can be a trade-off between tolerating a longer period of low information content and filter accuracy. Therefore, based on the duration that vehicle 100 flies over the low-information region, the following example Equation 7 can be implemented to ensure that the position of vehicle 100 remains within the grid:

[0085]

[0086] where n is the number of filter iterations, and is the maximum expected speed error.

[0087] In some cases, the problem with vehicle 100 flying over a low-information region is that the size of the region is not always known a priori. Therefore, in known implementations, it can be difficult to increase the size of the grid fast enough for a low-information region. Therefore, must be set very large without ensuring that it is large enough. For this reason, the examples disclosed herein provide an alternative such that the speed error is not assumed to have a zero mean.

[0088] Figure 4B Depicts an example grid 420 after 10 iterations. As described above, the AoLS 422 can expand nonlinearly. For example, some examples assume the following cases: the initial orientation of vehicle 100 is known and located at the center of the grid and / or The value of the center point is 1, and the values of the remaining points are approximately zero. It is also assumed that there is little measurement information (e.g., vehicle 100 is flying over a significantly flat area), and it can be assumed that the maximum speed error is Also for simplicity, it can be assumed that and Δt = 1 s. When choosing parameters for the estimate of the standard deviation of the speed error can be defined as Ideally, the true solution remains within AoLS 422, and the solution must remain within AoPS 424 at least. For example, if the solution enters the region corresponding to zone 426, then the corresponding points can be excluded. In this example, a top view / front view 428 of the grid 420 is also shown.

[0089] In this example, after 10 iterations, AoLS 422 has a radius of approximately 3 meters (m) to 4 m, and AoPS 424 has a radius of approximately 8 m. However, vehicle 100 can be anywhere within a 10 m radius as shown by line 427 for example. Therefore, there is a risk that vehicle 100 has exceeded the grid boundary. Similarly, the filter designer can artificially increase at the cost of accuracy However, there can be a time length during which the distance that vehicle 100 can travel will exceed AoLS 422 and / or AoPS 424.

[0090] As Figure 4A and 4B can be seen, the PMF assumption of zero-mean speed error poses a significant challenge to the grid-based determination of the position of vehicle 100. The presence of any bias error in the speed measurement may require guessing and / or estimating the magnitude of without guaranteeing that is large enough. According to the examples disclosed herein, the PMF can be reformulated to assume any type of speed error as long as it is restricted within a certain range with little or no impact on the filter performance.

[0091] In addition, regarding the convolution step, convolving with artificially reduces the high values with narrow support within As used herein, the term "narrow support" refers to a relatively long and thin region within The relatively long and thin region can be the result of vehicle 100 flying along a valley or a hill. When approaching a wide hill, a relatively long and thin region can also appear. Additionally, if there is a more general circular region within the grid, then some algorithms will be disproportionately biased towards the circular region. This is because when The fact during convolution is that it disproportionately shrinks narrow regions. Considering that the effect of convolution on an image can be similar to Gaussian blur, this result is not unexpected. For example, the blurring process can smooth out lines but only smooth the edges of a circle.

[0092] Turning to Figure 4C , example figures 430, 432, 434, 436 depict known convolution processes. Example figure 430 depicts an artificial including a small plateau and two thin ridges, all of these features having Additionally, in this example, the large plateau only has corresponding values. As seen in figure 434, after one convolution with , the thin ridges and the small plateau have the same probability as the large plateau. After five iterations, figure 436 depicts the large plateau with the highest feature, while the small plateau is almost removed.

[0093] As Figure 4C can be seen in the views of the illustration of , the points on the ridges and the small plateau correspond to the most likely points of the position of vehicle 100. However, according to the examples disclosed herein, if it is assumed that there is no measurement information for five iterations, then the most likely points according to the algorithm have completely changed. Ideally, when there is no measurement information, the likelihood of the points generally remains unchanged. Thus, the convolution step can accurately change the relative probabilities. In the presence of speed errors, a relatively small plateau will need to distribute its probability, and if the area under the PDF is integrated around the small plateau, then it will remain relatively unchanged. However, the algorithm does not integrate the area to determine the position of vehicle 100. Instead, the examples disclosed herein can utilize the maximum value of the PDF. Ideally, the time propagation step should not change the maximum value of

[0094] According to the examples disclosed herein, a favorable example method for expanding is to expand linearly with respect to time and there is no smoothing effect. For example, the grid can expand cylindrically. Assuming that at t = 0, the orientation of vehicle 100 is known and it is located at the center of the grid , the value of the center point is 1, while the values of the remaining points are approximately zero. After one propagation step, the radius is equal to the maximum speed error The cylinder is centered at a known initial solution (e.g., at t = 0). The cylindrical region represents the bounded region within which vehicle 100 can be located. If there is measurement information, then the cylindrical grid will be reduced in the regions where the elevation is not close to the UAV position (and it may no longer be cylindrical). But if there is no measurement information (e.g., vehicle 100 is flying over water), then the cylinder linearly grows outward at a rate of per time step.

[0095] Figure 4D FIG. depicts an example expansion of grid 440 that can be implemented in the examples disclosed herein. Example grid 440 is also depicted as a top view 444. It should be noted that there can be challenges in implementing the grid expansion. In particular, a recursive process that does not require any more information storage is utilized. Additionally, this example method may limit the methods that can be implemented. Furthermore, the maximum speed estimation error may not be an integer multiple of the grid spacing, or the maximum speed estimation error can be less than the grid spacing. This mismatch in spacing can lead to problems with time stepping and grid discretization. For example, taking a half time step without recording additional data can be disadvantageous. Additionally, because discrete points are utilized, it can be difficult to perform a true circular expansion, especially when the grid spacing is large compared to the error. Finally, a flat surface with the same maximum value, as shown in grid 440 of Figure 4D may be ineffective for methods that utilize the maximum value in as an estimate of the position of vehicle 100 (see Equation 8 below). The position of vehicle 100 can move to any of the points in the grid (e.g., jump around it).

[0096] The examples disclosed herein can effectively approximate a cylindrical expansion. In particular, the AoLS can expand linearly. The examples disclosed herein can, for example, linearly expand outward at a rate of per time step Thus, the expansion can be achieved by, at each time step, having each point in the grid look at all points within a distance of and setting its value to the maximum value found within the radius, as can be seen in Example Equation 8 below:

[0097]

[0098] where

[0099] and

[0100] According to the examples disclosed herein, the symbol refers to the floor function. It should be noted that corresponds to the maximum distance for looking / searching in terms of grid points. As long as This results in Figure 4D the exemplary idealized example cylindrical grid shown. However, in some cases, r may not be greater than In these cases, the examples disclosed herein can create and / or define a diamond pattern. It is also likely that r is less than In this case, the algorithm may crash due to the lack of the ability to look within a radius of less than 1 grid point. Another potential problem is that the above relationship can create and / or define a relatively flat top surface, which, as described above, can be relatively difficult to analyze when using the maximum value to determine the final estimated solution. Therefore, a variant of the algorithm that will result in a cylindrical grid with a circular top has been developed. Thus, exemplary methods are disclosed below.

[0101] The examples disclosed herein can utilize a smoothing factor. For example, assume s is the smoothing factor, where (s≥1), and s defines the smoothness of the cylinder and the edges surrounding the top. Thus, s = 1 corresponds to an idealized cylinder. Additionally, larger s values result in a more rounded cylinder with a more circular top. The exemplary algorithm works by looking a distance (s r) to find the maximum value. However, the exemplary algorithm only utilizes a portion of the maximum value, rather than the maximum value itself. For convenience, w can be defined as the weight factor, where w = 1 / s. The exemplary algorithm includes multiplying the difference between the maximum found value and the current point by the weight factor. For example, if s = 2 and w = 1 / 2, then the exemplary algorithm looks twice as far but only uses half of the difference. If s = 4 and w = 1 / 4, then the exemplary algorithm looks four times as far but only uses one-fourth of the difference. Exemplary Equation 9 illustrates the smoothing according to the examples disclosed herein:

[0102]

[0103] where

[0104] where and s≥1

[0105] and

[0106] An advantageous aspect of the exemplary algorithm is that AoLS (values that are at least 0.5 - 0.6 times the maximum grid value) can scale at a rate that is independent of the choice of s. This enables control of the amount of smoothing of the cylinder without significantly affecting the scaling rate. In practice, a value of w≈0.8 appears to work well. However, in some cases, due to s≈1.25 and the distance being Therefore, a value of w≈0.8 does not show effective expansion of the local search area. Generally,[[]] can correspond to a distance of less than one grid point, which may require another modification. Assume that H is the subset of points within which the algorithm will search and will include all points within a circle of radius (s r), but can also include additional points outside the radius. In some examples, the goal is to include enough points such that the resulting extended grid is approximately circular (e.g., too few points result in a rhombus), but not to include computationally expensive excess points. Due to the fact that matrices are used, which are typically square, and the typical size of is typically about 5×5 points. According to the examples disclosed herein, points outside the circle of radius (s r) are included in the algorithm, but can have additional weights based on their distance from that point. The weights can be the reciprocal of their distance from the center point. Points within the circle of radius (s r) continue to have the same weights as described above. The algorithm finds the maximum value of all these weighted points. As a result, according to Example Equation 10, AoLS continues to expand favorably at the desired rate, regardless of the size of H or the value of s:

[0107]

[0108] where and

[0109] Figure 4E illustrates an example grid 450 having distances around an arbitrarily chosen center point 451. In Figure 4E the illustrated example, a circle 452 of radius r is depicted. The example circle 452 specifies the region of positions to which the vehicle 100 can move within one time step (assuming it is initially at the center point), based on the maximum error in the velocity estimate. The example circle 454 has a radius (s r). The smoothing algorithm searches in the two regions defined by the circles 452, 454. In this example, all points within the two regions defined by the circles 452, 454 have the same weight w = 1 / s applied to them. In the illustrated region, the region 456 corresponds to the points within Figure 4E and while is typically depicted as a square which may be helpful for programming and / or coding, any other suitable shape can alternatively be implemented. Points within the region 456 can be scaled based on their relative distance from the center point. Additionally, the example algorithm can find and / or determine the maximum weight difference between each point and the center point 451, and can add the value of each point to the value corresponding to the center point 451. This process can be repeated for each point in the grid according to the examples disclosed herein. Figure 4A is typically depicted as a square which may be helpful for programming and / or coding, any other suitable shape can alternatively be implemented. Points within the region 456 can be scaled based on their relative distance from the center point. Additionally, the example algorithm can find and / or determine the maximum weight difference between each point and the center point 451, and can add the value of each point to the value corresponding to the center point 451. This process can be repeated for each point in the grid according to the examples disclosed herein.

[0110] Turning Figure 4F , an example grid 460 after five iterations is shown. A top view 462 is also shown. In this example, a matrix defined on the region is of size (2n h +1) × (2n h +1). To ensure that the region completely encloses a circle 464 of radius sr, n h is defined as can be represented by Example Equation 11:

[0111]

[0112] In Figure 4F the particular example depicted, with w = 0.5 implemented

[0113] According to the examples disclosed herein, for each point in , each value in is assigned an associated weight w, resulting in Example Equation 12:

[0114]

[0115] where and

[0116] Additionally, Example Equation 10 can now be rewritten as Example Equation 13:

[0117]

[0118] In this example, is typically a constant and is defined in terms of s, r, and nh. Thus, once these values are chosen, can be generated a priori. Referring to the example in Figure 4B where and s = 1.25, Example Equation 14 can be defined as follows:

[0119]

[0120] According to the examples disclosed herein, the resulting AoLS linearly scales approximately at . According to the examples disclosed herein, the AoLS is dome-shaped, which is very effective for the maximum likelihood method. Thus, in practice, the examples disclosed herein are very advantageous in terms of position determination.

[0121] Figure 4GThe use example graphs 470, 472, 474, 476 depict the linear expansion of AoLS according to the examples disclosed herein. In this example, the refinement of the depicted features is shown. Figure 4G The example of Figure 4C is shown in contrast to the example of where thin features are present inside. Using the new linear expansion AoLS, the relative heights of all features are maintained. In particular, Figure 4G the example of Figure 4C does not artificially depress the thinly supported features. As a result, compared to the example of

[0122] Figures 5A - 5H Figure 5A Figure 5A shows a top view 500 with an example flight path 502. In the example described, the vehicle 100 will fly from a first azimuth on the island. In particular, the vehicle 100 will fly in the NNW direction on the island and then leave. In this example, assuming there is a bias error of 3 m / s in the speed measurement, the grid is pushed to the west of the position where the grid should be. Such an error can be caused by an undetected change in wind direction or heading misalignment or any other bias error, as in the following examples etc.

[0123]

[0124]

[0125] Figure 5B Figure 5B Figure 5B

[0126] In the view described, the brighter areas and / or parts correspond to the actual position of the aforementioned vehicle 100 corresponding to the flight path 502. As can be seen from Figure 5B the error causes the filter to assume that the vehicle 100 is to the west of the true path 502, as indicated by the path line 512. Thus, because the speed error is typically constant, the azimuth error linearly expands when there is relatively little or no measurement information. This is a limitation of the TAN system without measurement information. However, many operations require restoring information once the vehicle 100 has returned to flying over varying terrain.

[0126] For known implementations, it is typically necessary to determine the values to be used / utilized / assumed for For relatively small values such as 3 m / s or 4 m / s, the position of the vehicle 100 can be off the grid, even in hilly areas or well-defined areas / terrains. For example, in the range of 10 - 20 m / s The value can be particularly effective when flying over the island and can generate a solution within approximately 100 m. However, when flying over water bodies, the grid does not expand fast enough and the position of vehicle 100 gets out of the grid. In this example, flying over water bodies can take approximately 18 minutes. Therefore, for a speed of approximately 40 - 50 m / s can be utilized Even with the assumed error, the position of vehicle 100 can eventually be on the edge of the AoPS, resulting in a lost solution for the PMF. When is set to a value of 75 m / s, vehicle 100 stays on the grid even when the vehicle crosses water bodies. Once vehicle 100 reaches the hill, the PMF starts to reduce the size of the AoLS and locates vehicle 100.

[0127] Figure 5C The grid is depicted at two different orientations. In this example, Figure 5C the grid depicted in the top view and the grid depicted in the bottom view As can be seen, the position of vehicle 100 is not close enough to the grid in the top view and is hardly within the AoPS in the bottom view. However, to ensure that the filter does not fail, the filter is provided with the error in the speed estimate of vehicle 100 at each time step, and the error in the speed estimate of vehicle 100 can have a standard deviation of 75 m / s. This relatively large standard deviation can affect the filter performance because much of the information in is smoothed out due to the relatively large value of

[0128] In Figure 5C the example illustrated, for two assumed speed errors, the grid is shown to have point 521, an AoLS 522 with grid center 524, and an AoPS region 526. In this example, the aforementioned point 521 corresponds to the actual / true position of vehicle 100.

[0129] Figure 5D An example top view 530 depicting a known implementation of the PMF illustrating solution paths and distance errors with different values is depicted. Figure 5D The top view 530 of depicts the initial path on the island, and graph 532 shows the corresponding error. As can be seen from the top view 530, is shown to be too low. As a result, the position of vehicle 100 gets out of the grid in a relatively fast manner, and the error in the orientation of vehicle 100 grows almost linearly. Therefore, A large amount of prior information is deleted, and the solution jumps around the current best point. In this case, values between 10 m / s and 25 m / s are particularly effective, and the resulting total error is approximately 100 m or less. However, as described above and shown below, these values are too low to be effective when flying over flat areas. The values are particularly effective, and the resulting total error is approximately 100 m or less. However, as described above and shown below, these values are too low to be effective when flying over flat areas.

[0130] Figure 5E Depict a first top view 540 with an example PMF solution path and a graph 542 depicting the distance error for different values. As can be seen in graph 542, when over water (time < 1020 s), all solutions have an error that increases at a rate of 3 m / s. This is to be expected since there is little or no measurement information and velocity error is not checked. However, when information returns, only the solutions are able to recapture the position of vehicle 100 because only these two solutions expand the grid fast enough to ensure that the position of vehicle 100 remains within the grid. The 50 m / s solution has solutions on the edge of the AoPS, but it is too close to the edge, and the position of vehicle 100 moves out of the grid at the last moment. However, the grid and the position of vehicle 100 randomly overlap after about two minutes, enabling the grid to be restored relative to vehicle 100.

[0131] Overall, the filter needs to artificially increase the values to ensure that the position of vehicle 100 remains within the AoPS. However, these values are utilized at the expense of filter accuracy and do not guarantee a solution because the flight path of vehicle 100 can result in longer flight times over water bodies, causing the position of vehicle 100 to move out of the grid.

[0132] Figure 5F Depict a top view 550 corresponding to the PMF solution path and a graph 552 depicting the distance error for different values relative to the linearly extended AoLS. Figure 5F Illustrate a modified PMF according to the teachings of the present disclosure compared to a traditional PMF. In the Figure 5F illustrated example, when measurement information is present and / or available, the linearly extended and / or linearly adjusted solutions have improved performance in terms of total error compared to a traditional PMF.

[0133] Figure 5G Depict a top view 560 illustrating the PMF solution path and a graph 562 depicting the distance error for different and values. As Figure 5GAs can be seen in Figure 562, when over water (for t < 1020 s), all solutions have an error that grows at a rate of 3 m / s. This growth in the error rate is expected since there is no measurement information and the velocity error is generally not checked. When vehicle 100 has completed its flight over water, according to the examples disclosed herein, the PMF ensures that the position of vehicle 100 is in not only the AoPS but also the AoLS. As a result, the algorithm enables the vehicle 100 to be located quickly and accurately. Additionally, since remains relatively small, the accuracy of the solutions with available information remains relatively high. In some known methods, when vehicle 100 is flying over water, only is able to successfully find vehicle 100. However, for relatively high values, the solution accuracy can be poor.

[0134] Figure 5H Depicts a grid in a method where grid 570 corresponds to the grid in In particular, grid 570 depicting a known PMF implementation, where in Figure 5H the view illustrated, grid center 571, AoLS 572, AoPS 574, outer region 576, and actual orientation 578 are shown. Additionally, grid 580 corresponding to the PMF according to the teachings of the present disclosure is shown. Regarding grid 580, as Figure 5H can be seen in the example illustrated, when vehicle 100 is flying over water, AoLS 572 expands linearly (and cyclically) at a rate of 4 m / s, thus ensuring that the position of vehicle 100 remains within AoLS 572. In contrast, the left grid 570 illustrates the problem when expanding the grid based on the square root of time as implemented in known systems. For these known systems, to ensure that vehicle 100 remains within the grid, it can be assumed that is relatively large.

[0135] Figure 6 is a block diagram of an example implementation of an orientation probability analysis system 600 for analyzing and generating the position / orientation probability of a vehicle (e.g., vehicle 100) for its navigation and / or guidance. Figure 6 The orientation probability analysis system 600 of Figure 6The azimuth probability analysis system 600 can be instantiated (e.g., created, generated over any time length, embodied, implemented, etc.) by: (i) an application specific integrated circuit (ASIC) and / or (ii) a field programmable gate array (FPGA) that is constructed and / or configured to perform operations corresponding to the first instruction in response to the implementation of the second instruction. It should be understood, therefore, that Figure 6 Some or all of the circuitry of Figure 6 Some or all of the circuitry of Figure 6 can be instantiated at the same or different times. For example,

[0136] Some or all of the circuitry of Figure 1 can be instantiated in one or more threads implemented concurrently on hardware and / or serially on hardware. Additionally, in some examples,

[0137] Some or all of the circuitry of

[0138] can be implemented by a microprocessor circuitry that implements instructions and / or an FPGA circuitry that performs operations to implement one or more virtual machines and / or containers. Example azimuth probability analysis system 600 can be implemented in Figure 1 the example navigation / guidance system 108 shown and includes an example map / elevation data analyzer circuitry 602, an example filter circuitry 604, an example error analyzer circuitry 606, and an example navigation controller circuitry 608. Additionally, according to some examples disclosed herein, the illustrated example azimuth probability analysis system 600 includes and / or is communicatively coupled to the navigation / guidance system 108 and / or the data storage device 112.

[0137] The example map / elevation data analyzer circuitry 602 retrieves, accesses, and / or selects terrain data for a region from an on-board data storage device 112 of a vehicle (e.g., vehicle 100), which in this example is a UAV. In turn, the map / elevation data analyzer circuitry 602 generates and / or adjusts (e.g., linearly adjusts) a grid (e.g., a search grid, a probability grid, a 2D position probability grid, etc.) based on a comparison of data (e.g., spatial data, terrain data, etc.) obtained / measured by on-board sensors of the UAV (e.g., sensor 110). According to some examples disclosed herein, the stored terrain data is compared with data obtained / measured by on-board sensors of the UAV to determine at least one measurement error relative to the grid. The grid can include a 2D array and / or matrix of position probabilities of corresponding points of the grid relative to the position of the UAV. In some examples, the example map / elevation data analyzer circuitry 602 identifies the grid point with the highest specified probability as the (new) azimuth estimate. Additionally or alternatively, the grid point corresponding to the average value of the grid points is selected as the grid point with the most likely solution. In some examples, the new or updated probability is multiplied by the previous likelihood.

[0138] According to some examples, the map / elevation data analyzer circuitry 602 updates the bias estimate for each point of the grid. In some examples, a filter (e.g., a Kalman filter) is utilized to correct additional measurement steps. Additionally or alternatively, the map / elevation data analyzer circuitry 602 prunes grid points having a relatively low (e.g., near-zero probability), thereby preventing the grid from becoming relatively large and thus advantageously reducing the associated computational requirements. In some examples, the map / elevation data analyzer circuitry 602 is instantiated by programmable circuitry implementing the map / elevation data analyzer instructions and / or is configured to perform operations such as those represented by the Figure 7 flowchart of

[0139] The illustrated example of the filter circuitry 604 utilizes the PMF and is implemented as a moving grid, as well as adjusts the size of the grid. In particular, the example filter circuitry 604 can be used to expand or contract the grid. Additionally or alternatively, the filter circuitry 604 is used to smooth the grid. In Figure 6 the illustrated example, the filter circuitry 604 can utilize the PMF without information about the flight path of the UAV.

[0140] To move the grid, the example filter circuitry 604 utilizes the estimated velocity of the UAV. In some examples, from one time step to a subsequent time step, the solution point (e.g., the hypothesized orientation of the UAV) generally remains the same (in grid coordinates). According to the examples disclosed herein, an error in the estimated velocity causes the true solution to change. Thus, the velocity error can cause the true position of the UAV to move within the grid.

[0141] To mitigate the effects of the velocity error, the illustrated example of the filter circuitry 604 adjusts the size of the grid (e.g., expands the grid, shrinks the grid, etc.). According to some examples disclosed herein, the filter circuitry 604 expands the grid to encompass the true position of the UAV. Thus, the expansion and pruning of the grid can enable the grid to move with the UAV to mitigate the effects of the velocity error that causes the position of the UAV to move through the grid, while additionally reducing the computational burden / requirements. In some examples, the filter circuitry 604 is instantiated by programmable circuitry implementing the filter instructions and / or is configured to perform operations such as those represented by the Figure 7 flowchart of

[0142] In some examples, the error analyzer circuitry 606 determines the degree of error associated with the UAV. In some such examples, the error analyzer circuitry 606 may determine the speed error and / or speed error range / tolerance of the UAV for use in moving and / or adjusting the size of the grid by the filter circuitry 604. In some examples, the error analyzer circuitry 606 determines the degree of error based on the capabilities and / or limitations of the UAV. Additionally or alternatively, for example, the error analyzer circuitry 606 calculates the uncertainty relative to the speed estimate of the UAV. In some examples, the error analyzer circuitry 606 is instantiated by a programmable circuitry implementing error analyzer instructions and / or is configured to perform operations such as those represented by the Figure 7 flowchart of

[0143] According to the Figure 6 example illustrated, the navigation controller circuitry 608 is implemented to direct and / or control the navigation / guidance of the UAV. An example navigation controller circuitry 608 may utilize the grid point with the highest probability to direct the movement and / or navigation of the UAV. In other words, an example navigation controller circuitry 608 may utilize the point with the highest probability as the hypothesized position of the UAV. In some examples, the navigation controller circuitry 608 may adjust for the uncertainty in the position of the UAV (e.g., by reducing the speed of the UAV until the speed error is reduced to a threshold error level, by initiating a turn and / or a skimming motion to direct the UAV closer to an area with a GNSS signal, etc.). In some examples, the navigation controller circuitry 608 is instantiated by a programmable circuitry implementing navigation controller instructions and / or is configured to perform operations such as those represented by the Figure 7 flowchart of

[0144] Although Figure 6 illustrates an example manner of implementing the Figure 1 azimuth probability analysis system 600, one or more of the elements, processes, and / or devices illustrated in Figure 6 may be combined, divided, rearranged, omitted, eliminated, and / or implemented in any other manner. Additionally, Figure 6The example map / elevation data analyzer circuitry 602, example filter circuitry 604, example error analyzer circuitry 606, example navigation controller circuitry 608, and / or more generally the example azimuth probability analysis system 600 can be implemented individually by hardware or by hardware in combination with software and / or firmware. Thus, for example, any one of the example map / elevation data analyzer circuitry 602, example filter circuitry 604, example error analyzer circuitry 606, example navigation controller circuitry 608, and / or more generally the example azimuth probability analysis system 600 can be implemented by programmable circuitry in combination with machine-readable instructions (e.g., firmware or software), processor circuitry, analog circuitry, digital circuitry, logic circuitry, programmable processors, programmable microcontrollers, graphics processing units (GPUs), digital signal processors (DSPs), application specific integrated circuits (ASICs), programmable logic devices (PLDs), and / or field programmable logic devices (FPLDs) such as FPGAs. Additionally, Figure 6 the example azimuth probability analysis system 600 can include one or more elements, processes, and / or devices in addition to Figure 6 those illustrated in Figure 6 or as an alternative to those illustrated in

[0145] Figure 7 and / or can include more than one of any or all of the illustrated elements, processes, and devices. Figure 6 FIG. shows example machine-readable instructions that can be implemented by programmable circuitry to implement and / or instantiate Figure 6 the azimuth probability analysis system 600 and / or a flowchart representative of example operations that can be performed by programmable circuitry to implement and / or instantiate Figure 8 the azimuth probability analysis system 600. The machine-readable instructions can be one or more executable programs or a portion of one or more executable programs for implementation by programmable circuitry such as the programmable circuitry 812 shown in the example processor platform 800 discussed below in connection with Figure 9 and / or FIG. 10, and / or can be one or more functions or a portion of one or more functions to be performed by an example programmable circuitry (e.g., FPGA) discussed below in connection with

[0146] The program can be implemented in instructions (e.g., software and / or firmware) stored on one or more non-transitory computer-readable and / or machine-readable storage media, such as cache memory, magnetic storage devices or disks (e.g., floppy disks, hard disk drives (HDDs), etc.), optical storage devices or disks (e.g., Blu-ray discs, compact discs (CDs), digital versatile discs (DVDs), etc.), redundant arrays of independent disks (RAID), registers, ROMs, solid state drives (SSDs), SSD memories, non-volatile memories (e.g., electrically erasable programmable read-only memories (EEPROMs), flash memories, etc.), volatile memories (e.g., any type of random access memory (RAM), etc.), and / or any other storage device or storage disk. The instructions of the non-transitory computer-readable and / or machine-readable media can be programmed and / or implemented by programmable circuitry located in one or more hardware devices, but the entire program and / or portions thereof can alternatively be implemented and / or instantiated and / or implemented in dedicated hardware in addition to programmable circuitry. The machine-readable instructions can be distributed across multiple hardware devices and / or implemented by two or more hardware devices (e.g., server and client hardware devices). For example, the client hardware device can be implemented by an endpoint client hardware device (e.g., a hardware device associated with a human and / or machine user) or an intermediate client hardware device gateway (e.g., a radio access network (RAN)) that can facilitate communication between the server and the endpoint client hardware device. Similarly, the non-transitory computer-readable storage medium can include one or more media. Additionally, although reference Figure 7 is made to the flowchart illustration of an example program, many other methods can alternatively be used to implement the example azimuth probability analysis system 600. For example, the order of implementation of the blocks of the flowchart can be changed, and / or some of the blocks described can be changed, eliminated, or combined. Additionally or alternatively, any or all of the blocks of the flowchart can be implemented by one or more hardware circuits (e.g., processor circuitry, discrete and / or integrated analog and / or digital circuitry, FPGAs, ASICs, comparators, operational amplifiers (op-amps), logic circuits, etc.) configured to perform the corresponding operations without implementing software or firmware. The programmable circuitry can be distributed across different network locations and / or be local to one or more hardware devices (e.g., a single-core processor (e.g., a single-core CPU), a multi-core processor (e.g., a multi-core CPU, an XPU, etc.)). For example, the programmable circuitry can be a CPU and / or FPGA located in the same package (e.g., the same integrated circuit (IC) package or in two or more separate enclosures), one or more processors in a single machine, multiple processors distributed across multiple servers in a server rack, multiple processors distributed across one or more server racks, etc. and / or any combination thereof.

[0147] The machine-readable instructions described herein can be stored in one or more of a compressed format, an encrypted format, a segmented format, a compiled format, an executable format, a packaged format, etc. The machine-readable instructions as described herein can be stored as data (e.g., computer-readable data, machine-readable data, one or more bits (e.g., one or more computer-readable bits, one or more machine-readable bits, etc.), a bit stream (e.g., a computer-readable bit stream, a machine-readable bit stream, etc.)) or a data structure (e.g., as part of an instruction, code, representation of code, etc.), which can be used to create, fabricate, and / or generate machine-executable instructions. For example, the machine-readable instructions can be segmented and stored on one or more storage devices, disks, and / or computing devices (e.g., servers) (e.g., in the cloud, at an edge device, etc.) located at the same or different locations of a network or a collection of networks. The machine-readable instructions may need one or more of installation, modification, adaptation, update, combination, supplementation, configuration, decryption, decompression, unpacking, distribution, redistribution, compilation, etc. in order to make them directly readable, interpretable, and / or executable by a computing device and / or other machine. For example, the machine-readable instructions can be stored in multiple parts, which are individually compressed, encrypted, and / or stored on separate computing devices, where the parts form a set of computer-executable and / or machine-executable instructions that, when decrypted, decompressed, and / or combined, implement one or more functions and / or operations that can together form a program such as described herein.

[0148] In another example, the machine-readable instructions can be stored in a state in which they can be read by a programmable circuitry, but libraries (e.g., dynamic link libraries (DLLs)), software development kits (SDKs), application programming interfaces (APIs), etc. need to be added in order to implement the machine-readable instructions on a particular computing device or other device. In another example, the machine-readable instructions (e.g., stored settings, data inputs, recorded network addresses, etc.) may need to be configured before the machine-readable instructions and / or the corresponding program can be implemented in whole or in part. Thus, as used herein, machine-readable, computer-readable, and / or machine-readable media can include instructions and / or programs regardless of the particular format or state of the machine-readable instructions and / or programs.

[0149] The machine-readable instructions described herein can be represented by any past, present, or future instruction language, scripting language, programming language, etc. For example, the machine-readable instructions can be represented using any one of the following languages: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift, etc.

[0150] As described above, Figure 7Example operations may be implemented using executable instructions (e.g., computer-readable and / or machine-readable instructions) stored on one or more non-transitory computer-readable and / or machine-readable media. As used herein, the terms non-transitory computer-readable medium, non-transitory computer-readable storage medium, non-transitory machine-readable medium, and / or non-transitory machine-readable storage medium are expressly defined to include any type of computer-readable storage device and / or storage disk, and to exclude propagated signals and to exclude transmission media. Examples of such non-transitory computer-readable media, non-transitory computer-readable storage media, non-transitory machine-readable media, and / or non-transitory machine-readable storage media include optical storage devices, magnetic storage devices, HDDs, flash memory, read-only memory (ROM), CDs, DVDs, caches, any type of RAM, registers, and / or any other storage device or storage disk in which information is stored for any duration (e.g., extended periods of time, permanently, briefly, temporarily buffered, and / or cached information). As used herein, the terms "non-transitory computer-readable storage device" and "non-transitory machine-readable storage device" are defined to include any physical (mechanical, magnetic, and / or electrical) hardware for storing information for a period of time, but to exclude propagated signals and to exclude transmission media. Examples of non-transitory computer-readable storage devices and / or non-transitory machine-readable storage devices include any type of random access memory, any type of read-only memory, solid-state memory, flash memory, optical disks, magnetic disks, disk drives, and / or redundant array of independent disks (RAID) systems. As used herein, the term "device" refers to a physical structure, such as mechanical and / or electrical equipment, hardware, and / or circuitry, which may or may not be configured by and / or manufactured to implement computer-readable instructions, machine-readable instructions, etc.

[0151] Figure 7 FIG. is a flowchart representing example machine-readable instructions and / or example operations 700 that may be implemented, instantiated, and / or executed by a programmable circuitry to guide the movement and / or navigation of a vehicle (e.g., vehicle 100). In this example, the vehicle is a self-guided UAV (and / or UAS) that moves from an area with a well-defined terrain to a relatively flat area or alternatively a body of water. According to some examples disclosed herein, Figure 7 The example machine-readable instructions and / or example operations 700 begin at block 702, where an error analyzer circuitry 606 determines the degree of error associated with the UAV and / or its movement. In this example, the degree of error corresponds to the speed error of the UAV. In some examples, the error analyzer circuitry 606 utilizes the capabilities / specifications of the UAV, external conditions, lack of information / sensor data, etc. to determine the degree of error associated with the UAV.

[0152] At block 704, the example map / elevation data analyzer circuitry 602 and / or the example filter circuitry 604 move the grid. In this example, the map / elevation data analyzer circuitry 602 and / or the example filter circuitry 604 move the grid based on points in the grid having a higher corresponding probability. Thus, the map / elevation data analyzer circuitry 602 and / or the example filter circuitry 604 can utilize regions and / or points of the grid having the highest relative probability.

[0153] At block 706, the illustrated example filter circuitry 604 adjusts and / or smooths the grid. In Figure 7 the illustrated example, the filter circuitry 604 expands the grid based on the aforementioned degree of error associated with the UAV. According to examples disclosed herein, the filter circuitry 604 can expand or contract the grid linearly with respect to time. In some examples, regions and / or portions of the grid corresponding to AoLS and / or AoPS expand linearly with respect to time. In other words, regions (e.g., spatial regions) of the grid corresponding to AoLS and / or AoPS can expand (or contract) linearly with respect to time along a 2D plane defined by the grid. However, any other suitable parameter can be utilized instead of time.

[0154] At block 708, the example map / elevation data analyzer circuitry 602 retrieves, accesses, and / or selects terrain data for a region from the airborne data storage device 112. Additionally, the grid corresponding to the UAV is used to determine the orientation of the UAV (e.g., the UAV is not receiving GNSS signals, the GNSS signals are jammed, etc.). According to some examples disclosed herein, the grid is used as a probability 2D array / matrix corresponding to potential orientations / locations of the UAV.

[0155] At block 709, the illustrated example map / elevation data analyzer circuitry 602 determines the elevation (e.g., elevation map, elevation grid, etc.) measured by the airborne sensors of the UAV. The airborne sensors can be and / or include cameras, range sensors, laser sensors, etc. or any other suitable type of sensor for measuring the elevation of the terrain.

[0156] At block 710, the illustrated example map / elevation data analyzer circuitry 602 compares the elevation with the terrain data. In this example, the map / elevation data analyzer circuitry 602 compares the measured points obtained by the aforementioned airborne sensors with the stored elevation data.

[0157] At block 712, the map / elevation data analyzer circuitry 602 and / or the filter circuitry 604 adjusts the values of the grid points. For example, the map / elevation data analyzer circuitry 602 and / or the filter circuitry 604 adjusts and / or determines the probability that each point of the grid is the location of the UAV probabilistically based on a comparison of the terrain with the terrain data (block 706).

[0158] At block 714, the illustrated example navigation controller circuitry 608 estimates the orientation of the UAV. According to the examples disclosed herein, the navigation controller circuitry 608 estimates the orientation of the UAV by leveraging at least one point in the grid having a relatively high probability (e.g., the point on the grid having the greatest probability, a grid region corresponding to a relatively high probability, etc.).

[0159] At block 716, in some examples, the navigation controller circuitry 608 uses the estimated orientation to guide the vehicle 100 and the process ends. In some such examples, the navigation controller circuitry 608 uses the point on the grid having the highest probability to guide the movement of the UAV. Additionally or alternatively, in response to the loss of the GNSS signal and / or sufficient terrain definition, the illustrated example navigation controller circuitry 608 uses the grid and / or estimates the orientation of the UAV.

[0160] Figure 8 is a block diagram of an example programmable circuitry platform 800 that is configured to implement and / or instantiate Figure 7 the example machine-readable instructions and / or the example operations to implement Figure 6 the orientation probability analysis system 600. The programmable circuitry platform 800 can be, for example, a server, a personal computer, a workstation, a self-learning machine (e.g., a neural network), a mobile device (e.g., a cellular phone, a smart phone, a tablet such as an iPad TM tablet), a personal digital assistant (PDA), an Internet device, a DVD player, a CD player, a digital video recorder, a Blu-ray player, a game console, a personal video recorder, a set-top box, headphones (e.g., augmented reality (AR) headphones, virtual reality (VR) headphones, etc.) or other wearable devices, or any other type of computing and / or electronic device.

[0161] The programmable circuit system platform 800 of the illustrated example includes a programmable circuit system 812. The programmable circuit system 812 of the illustrated example is hardware. For example, the programmable circuit system 812 can be implemented by one or more integrated circuits, logic circuits, FPGAs, microprocessors, CPUs, GPUs, DSPs, and / or microcontrollers from any desired family or manufacturer. The programmable circuit system 812 can be implemented by one or more semiconductor (e.g., silicon-based) devices. In this example, the programmable circuit system 812 implements the example map / elevation data analyzer circuit system 602, the example filter circuit system 604, the example error analyzer circuit system 606, and the example navigation controller circuit system 608.

[0162] The programmable circuit system 812 of the illustrated example includes a local memory 813 (e.g., cache, registers, etc.). The programmable circuit system 812 of the illustrated example communicates with a main memory 814, 816 that includes a volatile memory 814 and a non-volatile memory 816 via a bus 818. The volatile memory 814 can be implemented by synchronous dynamic random access memory (SDRAM), dynamic random access memory (DRAM), dynamic random access memory and / or any other type of RAM device. The non-volatile memory 816 can be implemented by flash memory and / or any other desired type of storage device. Access to the main memory 814, 816 of the illustrated example is controlled by a memory controller 817. In some examples, the memory controller 817 can be implemented by one or more integrated circuits, logic circuits, microcontrollers from any desired family or manufacturer, or any other type of circuit system to manage the data flow to and from the main memory 814, 816.

[0163] The programmable circuit system platform 800 of the illustrated example further includes an interface circuit system 820. The interface circuit system 820 can be implemented in hardware according to any type of interface standard such as an Ethernet interface, a universal serial bus (USB) interface, interface, a near field communication (NFC) interface, a peripheral component interconnect (PCI) interface, and / or a peripheral component interconnect express (PCIe) interface.

[0164] In the illustrated example, one or more input devices 822 are connected to the interface circuit system 820. The input devices 822 allow a user (e.g., a human user, a machine user, etc.) to input data and / or commands into the programmable circuit system 812. The input devices 822 can be implemented by, for example, audio sensors, microphones, cameras (still or video), keyboards, buttons, mice, touchscreens, trackpads, trackballs, point devices, and / or voice recognition systems.

[0165] One or more output devices 824 are also connected to the interface circuitry 820 of the illustrated example. The output device 824 can be implemented, for example, by a display device (e.g., a light-emitting diode (LED), an organic light-emitting diode (OLED), a liquid crystal display (LCD), a cathode ray tube (CRT) display, an in-plane switching (IPS) display, a touch screen, etc.), a haptic output device, a printer, and / or a speaker. Thus, the interface circuitry 820 of the illustrated example typically includes a graphics driver card, a graphics driver chip, and / or a graphics processor circuitry such as a GPU.

[0166] The interface circuitry 820 of the illustrated example also includes communication devices such as a transmitter, a receiver, a transceiver, a modem, a resident gateway, a wireless access point, and / or a network interface to facilitate data exchange with an external machine (e.g., any type of computing device) via a network 826. The communication can be via, for example, an Ethernet connection, a digital subscriber line (DSL) connection, a telephone line connection, a coaxial cable system, a satellite system, an over-the-horizon wireless system, a line-of-sight wireless system, a cellular phone system, an optical connection, etc.

[0167] The programmable circuitry platform 800 of the illustrated example also includes one or more mass storage disks or devices 828 for storing firmware, software, and / or data. Examples of such mass storage disks or devices 828 include magnetic storage devices (e.g., floppy disks, drives, HDDs, etc.), optical storage devices (e.g., Blu-ray disks, CDs, DVDs, etc.), RAID systems, and / or solid-state storage disks or devices such as flash devices and / or SSDs.

[0168] Can be implemented by Figure 7 Machine-readable instructions 832 can be stored on the mass storage device 828, the volatile memory 814, the non-volatile memory 816, and / or at least one non-transitory computer-readable storage medium such as a removable CD or DVD.

[0169] Figure 9 Is Figure 8 A block diagram of an example implementation of the programmable circuitry 812. In this example, Figure 8 The programmable circuitry 812 is implemented by a microprocessor 900. For example, the microprocessor 900 can be a general-purpose microprocessor (e.g., a general-purpose microprocessor circuitry). The microprocessor 900 implements Figure 7 Some or all of the machine-readable instructions of the flowchart to effectively instantiate the Figure 2 Circuitry of the example into a logic circuit to perform operations corresponding to those machine-readable instructions. In some such examples, Figure 6The circuit system is instantiated by the hardware circuit of the microprocessor 900 in combination with machine-readable instructions. For example, the microprocessor 900 can be implemented by a multi-core hardware circuit system such as a CPU, DSP, GPU, XPU, etc. Although it can include any number of example cores 902 (e.g., 1 core), the microprocessor 900 in this example is a multi-core semiconductor device including N cores. The cores 902 of the microprocessor 900 can operate independently or can cooperate to execute machine-readable instructions. For example, the machine code corresponding to a firmware program, an embedded software program, or a software program can be executed by one of the cores 902, or can be executed by multiple cores among the cores 902 at the same or different times. In some examples, the machine code corresponding to a firmware program, an embedded software program, or a software program is divided into threads and executed in parallel by two or more of the cores 902. The software program can correspond to a part or all of the machine-readable instructions and / or operations represented by Figure 7 the flowchart of

[0170] The cores 902 can communicate via a first example bus 904. In some examples, the first bus 904 can be implemented by a communication bus to enable communication associated with one of the cores 902. For example, the first bus 904 can be implemented by at least one of an Inter-Integrated Circuit (I2C) bus, a Serial Peripheral Interface (SPI) bus, a PCI bus, or a PCIe bus. Additionally or alternatively, the first bus 904 can be implemented by any other type of computing or electrical bus. The cores 902 can obtain data, instructions, and / or signals from one or more external devices via an example interface circuit system 906. The cores 902 can output data, instructions, and / or signals to one or more external devices via the interface circuit system 906. Although the cores 902 in this example include an example local memory 920 (e.g., a level 1 (L1) cache that can be divided into an L1 data cache and an L1 instruction cache), the microprocessor 900 also includes an example shared memory 910 that can be shared by the cores (e.g., a level 2 (L2) cache) for high-speed access to data and / or instructions. Data and / or instructions can be passed (e.g., shared) by writing to and / or reading from the shared memory 910. The local memory 920 and the shared memory 910 of each of the cores 902 can be part of a storage device hierarchy including multiple levels of cache memory and main memory (e.g., Figure 8 the main memories 814, 816 of

[0171] Each core 902 may be referred to as a CPU, DSP, GPU, etc. or any other type of hardware circuitry. Each core 902 includes control unit circuitry 914, arithmetic and logic (AL) circuitry (sometimes referred to as an ALU) 916, a plurality of registers 918, local memory 920, and a second example bus 922. Other structures may exist. For example, each core 902 may include vector unit circuitry, single instruction multiple data (SIMD) unit circuitry, load / store unit (LSU) circuitry, branch / jump unit circuitry, floating point unit (FPU) circuitry, etc. The control unit circuitry 914 includes semiconductor-based circuitry configured to control (e.g., coordinate) data movement within the corresponding core 902. The AL circuitry 916 includes semiconductor-based circuitry configured to perform one or more mathematical and / or logical operations on data within the corresponding core 902. Some example AL circuitry 916 performs integer-based operations. In other examples, the AL circuitry 916 also performs floating point operations. In still other examples, the AL circuitry 916 may include a first AL circuitry that performs integer-based operations and a second AL circuitry that performs floating point operations. In some examples, the AL circuitry 916 may be referred to as an arithmetic logic unit (ALU).

[0172] The registers 918 are semiconductor-based structures for storing data and / or instructions (such as the result of one or more of the operations performed by the AL circuitry 916 of the corresponding core 902). For example, the registers 918 may include vector registers, SIMD registers, general-purpose registers, flag registers, segment registers, machine-specific registers, instruction pointer registers, control registers, debug registers, memory management registers, machine check registers, etc. The registers 918 may be arranged in a bank as shown in Figure 9 FIG. Alternatively, the registers 918 may be organized in any other arrangement, format, or structure, such as by being distributed throughout the core 902 to reduce access time. The second bus 922 may be implemented by at least one of an I2C bus, an SPI bus, a PCI bus, or a PCIe bus.

[0173] Each core 902 and / or more generally the microprocessor 900 may include additional and / or alternative structures to those shown and described above. For example, there may be one or more clock circuits, one or more power supplies, one or more power thresholds, one or more cache coherence agents (CHA), one or more aggregation / common mesh stops (CMS), one or more shifters (e.g., barrel shifters), and / or other circuitry. The microprocessor 900 is a semiconductor device that is manufactured to include many transistors that are interconnected to implement the above structures in one or more integrated circuits (ICs) contained in one or more packages.

[0174] The microprocessor 900 may include one or more accelerators and / or cooperate with them (e.g., acceleration circuitry, hardware accelerators, etc.). In some examples, the accelerator is implemented by logic circuitry to perform certain tasks faster and / or more efficiently than a general-purpose processor can. Examples of accelerators include ASICs and FPGAs, such as those discussed herein. GPUs, DSPs, and / or other programmable devices can also be accelerators. The accelerator can be on the microprocessor 900, in the same chip package as the microprocessor 900, and / or in one or more packages separate from the microprocessor 900.

[0175] Figure 10 For Figure 8 Another example implementation of the programmable circuitry 812. In this example, the programmable circuitry 812 is implemented by the FPGA circuitry 1000. For example, the FPGA circuitry 1000 can be implemented by an FPGA. The FPGA circuitry 1000 can be used, for example, to perform operations that could otherwise be performed by Figure 9 the example microprocessor 900 implementing corresponding machine-readable instructions. However, once configured, the FPGA circuitry 1000 instantiates in hardware the operations and / or functions corresponding to the machine-readable instructions and can thus generally implement the operations / functions faster than operations / functions that could be performed by implementing corresponding software by a general-purpose microprocessor.

[0176] More specifically, compared to the above Figure 9 microprocessor 900 (which is a general-purpose device that can be programmed to implement some or all of the machine-readable instructions represented by the Figure 7 flowchart, but whose interconnections and logic circuitry are fixed once manufactured), Figure 10 the example FPGA circuitry 1000 of Figure 7 includes interconnections and logic circuitry that can be configured, constructed, programmed, and / or interconnected in different ways after manufacture to instantiate, for example, some or all of the operations / functions corresponding to the machine-readable instructions represented by the Figure 7Some or all of the instructions (e.g., software and / or firmware) represented by the flowchart of. In this way, the FPGA circuitry 1000 can be configured and / or constructed to effectively instantiate, as dedicated logic circuitry, some or all of the operations / functions corresponding to Figure 7 the flowchart of, and execute the operations / functions corresponding to those software instructions in a dedicated manner similar to an ASIC. Thus, compared to a general-purpose microprocessor that can implement some or all of the operations / functions corresponding to Figure 7 the machine-readable instructions of, the FPGA circuitry 1000 can execute these operations / functions more quickly.

[0177] In Figure 10 an example of, the FPGA circuitry 1000 is configured and / or constructed to be programmed (and / or reprogrammed one or more times) in response to a binary file. In some examples, the binary file can be compiled and / or generated based on instructions in a hardware description language (HDL), such as Lucid, Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL), or Verilog. For example, a user (e.g., a human user, a machine user, etc.) can write code or a program in HDL corresponding to one or more operations / functions; the code / program can be translated into a low-level language as needed; and the code / program (e.g., the code / program in the low-level language) can be converted (e.g., by a compiler, a software application, etc.) into a binary file. In some examples, Figure 10 the FPGA circuitry 1000 of can access and / or load the binary file to cause Figure 10 the FPGA circuitry 1000 of to be configured and / or constructed to execute one or more operations / functions. For example, the binary file can be implemented by a bitstream (e.g., one or more computer-readable bits, one or more machine-readable bits, etc.), data (e.g., computer-readable data, machine-readable data, etc.), and / or machine-readable instructions accessible to the FPGA circuitry 1000 of Figure 10 to cause the configuration and / or structuring of the FPGA circuitry 1000 of or a portion thereof. Figure 10

[0178] In some examples, the binary file is compiled, generated, converted, and / or otherwise output from a unified software platform for programming the FPGA. For example, the unified software platform can translate first instructions (e.g., code or a program) corresponding to one or more operations / functions in a high-level language (e.g., C, C++, Python, etc.) into second instructions corresponding to one or more operations / functions in HDL. In some such examples, the binary file is compiled, generated, and / or otherwise output from the unified software platform based on the second instructions. In some examples,​Figure 10 The FPGA circuit system 1000 can access and / or load a binary file to cause Figure 10 the FPGA circuit system 1000 to be configured and / or structured to perform one or more operations / functions. For example, the binary file can be implemented by Figure 10 a bitstream (e.g., one or more computer-readable bits, one or more machine-readable bits, etc.), data (e.g., computer-readable data, machine-readable data, etc.), and / or machine-readable instructions accessible to the FPGA circuit system 1000 to cause Figure 10 the configuration and / or structuring of the FPGA circuit system 1000 or a portion thereof.

[0179] Figure 10 The FPGA circuit system 1000 includes an example input / output (I / O) circuit system 1002 for obtaining data and / or outputting data to an example configuration circuit system 1004 and / or external hardware 1006. For example, the configuration circuit system 1004 can be implemented by an interface circuit system that can obtain a binary file, which can be implemented by a bitstream, data, and / or machine-readable instructions to configure the FPGA circuit system 1000 or a portion thereof. In some such examples, the configuration circuit system 1004 can obtain the binary file from a user, a machine (e.g., a hardware circuit system that can implement an artificial intelligence / machine learning (AI / ML) model to generate the binary file (e.g., a programmable or dedicated circuit system)), etc. and / or any combination thereof). In some examples, the external hardware 1006 can be implemented by an external hardware circuit system. For example, the external hardware 1006 can be implemented by Figure 9 a microprocessor 900.

[0180] The FPGA circuit system 1000 also includes an example logic gate circuit system 1008, a plurality of example configurable interconnects 1010, and an array of example storage circuit systems 1012. The logic gate circuit system 1008 and the configurable interconnects 1010 can be configured to instantiate one or more operations / functions that can correspond to Figure 7 at least some of the machine-readable instructions and / or other desired operations. Figure 10The illustrated logic gate circuit system 1008 is manufactured in blocks or groups. Each block includes a semiconductor-based electrical structure that can be configured as a logic circuit. In some examples, the electrical structure includes logic gates (e.g., AND gates, OR gates, NAND gates, etc.) that provide the basic building blocks for the logic circuit. Each of the logic gate circuit systems 1008 includes electrically controllable switches (e.g., transistors) to enable configuring the electrical structure and / or the logic gates to form a circuit that performs a desired operation / function. The logic gate circuit system 1008 may include other electrical structures, such as look-up tables (LUTs), registers (e.g., flip-flops or latches), multiplexers, etc.

[0181] The illustrated configurable interconnect 1010 of the example is conductive paths, traces, vias, etc., which may include electrically controllable switches (e.g., transistors) whose states can be changed by programming (e.g., using an HDL instruction language) to activate or deactivate one or more connections between one or more of the logic gate circuit systems 1008 to program the desired logic circuit.

[0182] The illustrated storage circuit system 1012 of the example is configured to store the results of one or more of the operations performed by the corresponding logic gates. The storage circuit system 1012 may be implemented by registers, etc. In the illustrated example, the storage circuit system 1012 is distributed among the logic gate circuit systems 1008 to facilitate access and increase implementation speed.

[0183] Figure 10 The example FPGA circuit system 1000 also includes the example dedicated operation circuit system 1014. In this example, the dedicated operation circuit system 1014 includes a special-purpose circuit system 1016 that can be invoked to implement common functions to avoid the need to program these functions in the field. Examples of such special-purpose circuit systems 1016 include memory (e.g., DRAM) controller circuit systems, PCIe controller circuit systems, clock circuit systems, transceiver circuit systems, memory and multiply-accumulate circuit systems. There may be other types of special-purpose circuit systems. In some examples, the FPGA circuit system 1000 may also include the example general-purpose programmable circuit system 1018, such as the example CPU 1020 and / or the example DSP 1022. There may additionally or alternatively be other general-purpose programmable circuit systems 1018, such as GPUs, XPUs, etc., which can be programmed to perform other operations.

[0184] Although Figure 9 and 10 illustrate Figure 8 two example implementations of the programmable circuit system 812, many other methods are also envisioned. For example, the FPGA circuit system may include an on-board CPU, such as Figure 9one or more of the example CPUs 1020. Thus, Figure 8 the programmable circuitry 812 may additionally be implemented by combining at least Figure 9 the example microprocessor 900 and Figure 10 the example FPGA circuitry 1000. In some such hybrid examples, Figure 9 one or more cores 902 may implement a first portion of machine-readable instructions represented by a Figure 7 flowchart to perform a first operation / function, Figure 10 the FPGA circuitry 1000 may be configured and / or constructed to perform a second operation / function corresponding to a second portion of machine-readable instructions represented by a Figure 7 flowchart, and / or an ASIC may be configured and / or constructed to perform a third operation / function corresponding to a third portion of machine-readable instructions represented by a Figure 7 flowchart.

[0185] It should be understood that Figure 6 some or all of the circuitry may thus be instantiated at the same or different time instances. For example, Figure 9 the same and / or different portions of the microprocessor 900 may be programmed to implement portions of machine-readable instructions at the same and / or different times. In some examples, Figure 10 the same and / or different portions of the FPGA circuitry 1000 may be configured and / or constructed to perform operations / functions corresponding to portions of machine-readable instructions at the same and / or different times.

[0186] In some instances, Figure 6 some or all of the circuitry may be instantiated, for example, in one or more threads implemented concurrently and / or serially. For example, Figure 9 the microprocessor 900 may implement machine-readable instructions in one or more threads implemented concurrently and / or serially. In some examples, Figure 10 the FPGA circuitry 1000 may be configured and / or constructed to operate / function concurrently and / or serially. Additionally, in some examples, Figure 6 some or all of the circuitry may be implemented within one or more virtual machines and / or containers implemented on Figure 9 the microprocessor 900.

[0187] In some examples, Figure 8 the programmable circuitry 812 may be in one or more packages. For example, Figure 9 the microprocessor 900 and / or Figure 10 the FPGA circuitry 1000 may be in one or more packages. In some examples, an XPU may be formed by what may be in one or more packagesFigure 8 implemented by the programmable circuit system 812. For example, the XPU may include a CPU (e.g., Figure 9 the microprocessor 900, Figure 10 the CPU 1020, etc.) in one package, a DSP (e.g., Figure 10 the DSP 1022) in another package, a GPU in yet another package, and an FPGA (e.g., Figure 10 the FPGA circuit system 1000) in still another package.

[0188] "including" and "comprising" (and all their forms and tenses) are used herein as open - ended terms. Thus, whenever a claim uses any form of "include" or "comprise" (e.g., comprises, includes, comprising, including, having, etc.) as a preamble or within any kind of claim recitation, it should be understood that additional elements, terms, etc. may exist without falling outside the scope of the corresponding claim or recitation. As used herein, when the phrase "at least" is used as a transitional term in, for example, the preamble of a claim, it is open - ended in the same manner as the terms "comprising" and "including" are open - ended. When used in the form such as A, B, and / or C, the term "and / or" refers to any combination or subset of A, B, C, such as (1) A alone, (2) B alone, (3) C alone, (4) A and B, (5) A and C, (6) B and C, or (7) A and B and C. As used herein in the context of describing a structure, component, item, object, and / or thing, the phrase "at least one of A and B" is intended to refer to an embodiment that includes (1) at least one A, (2) at least one B, or (3) either at least one A and at least one B. Similarly, as used herein in the context of describing a structure, component, item, object, and / or thing, the phrase "at least one of A or B" is intended to refer to an embodiment that includes (1) at least one A, (2) at least one B, or (3) either at least one A and at least one B. As used herein in the context of describing the performance or implementation of a process, instruction, action, activity, etc., the phrase "at least one of A and B" is intended to refer to an embodiment that includes (1) at least one A, (2) at least one B, or (3) either at least one A and at least one B. Similarly, as used herein in the context of describing the performance or implementation of a process, instruction, action, activity, etc., the phrase "at least one of A or B" is intended to refer to an embodiment that includes (1) at least one A, (2) at least one B, or (3) either at least one A and at least one B.

[0189] As used herein, singular references (e.g., "a", "an", "first", "second", etc.) do not exclude a plurality. As used herein, the term "a" or "an" object refers to one or more of such objects. The terms "a" (or "an"), "one or more", and "at least one" are used interchangeably herein. In addition, although listed separately, multiple devices, elements, or acts may be implemented by, for example, the same entity or object. Further, although individual features may be included in different examples or claims, these features may be combined, and inclusion in different examples or claims does not imply that the combination of features is infeasible and / or not advantageous.

[0190] As used herein, unless otherwise specified, the term "above" describes the relationship of two components relative to the earth. If a second component has at least one component between the earth and a first component, then the first component is above the second component. Similarly, as used herein, when a first component is closer to the earth than a second component, the first component is "below" the second component. As described above, the first component may be above or below the second component, having one or more of the following: having other components therebetween, having no other components therebetween, the first and second components being in contact, or the first and second components not being in direct contact with each other.

[0191] As used in this patent, stating that any component is on (e.g., positioned on, located on, disposed on, or formed on) another component in any way indicates that the referenced component either contacts the other component or the referenced component is above the other component, with one or more intermediate components therebetween.

[0192] As used herein, unless otherwise indicated, connection references (e.g., attach, couple, connect, and join) may include intermediate members between the elements referenced by the connection reference and / or relative movement between those elements. Thus, a connection reference does not necessarily infer that two elements are directly connected and / or in a fixed relationship with each other. As used herein, stating that any component "contacts" another component is defined to mean that there is no intermediate component between the two components.

[0193] Unless otherwise specifically stated, descriptors such as "first", "second", "third", etc. used herein do not imply or otherwise indicate any sense of priority, physical order, arrangement in a list, and / or any ordering in any way, but are merely used as labels and / or arbitrary names to distinguish elements for easy understanding of the disclosed examples. In some examples, the descriptor "first" may be used to refer to an element in the detailed description, while in the claims a different descriptor such as "second" or "third" may be used to refer to the same element. In such cases, it should be understood that such descriptors are only used to clearly identify those elements within the context of the discussion (e.g., within the claims), where these elements may, for example, otherwise share the same name.

[0194] As used herein, "about" and "approximately" modify the subject / value to identify the potential presence of variations that occur in real-world applications. For example, "about" and "approximately" may modify dimensions that may be imprecise due to manufacturing tolerances and / or other real-world imperfections that would be understood by a person of ordinary skill in the art. For example, "about" and "approximately" may indicate that such dimensions may be within a tolerance range of + / - 10%, unless otherwise stated herein.

[0195] As used herein, "substantially real-time" refers to occurring in a nearly instantaneous manner recognizing that there may be real-world delays for calculating time, transmission, etc. Thus, unless otherwise stated, "substantially real-time" refers to real-time + 1 second.

[0196] As used herein, the phrase "in communication", including its variants, encompasses direct communication and / or indirect communication through one or more intermediate components, and does not require direct physical (e.g., wired) communication and / or continuous communication, but additionally includes selective communication at periodic intervals, scheduled intervals, aperiodic intervals, and / or one-time events.

[0197] As used herein, "programmable circuitry" is defined to include (i) one or more special-purpose circuits (e.g., application-specific integrated circuits (ASICs)) that are configured to perform specific operations and include one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors), and / or (ii) one or more general-purpose semiconductor-based circuits that can be programmed using instructions to perform specific functions and / or operations and include one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors). Examples of programmable circuitry include programmable microprocessors such as a central processing unit (CPU) that can implement a first instruction to perform one or more operations and / or functions, a field-programmable gate array (FPGA) that can be programmed using a second instruction to instantiate a configuration and / or structure of the FPGA corresponding to one or more operations and / or functions of the first instruction, a graphics processing unit (GPU) that can implement a first instruction to perform one or more operations and / or functions, a digital signal processor (DSP), an XPU, a network processing unit (NPU), one or more microcontrollers and / or integrated circuits such as an ASIC that can implement a first instruction to perform one or more operations and / or functions. For example, an XPU can be implemented by a heterogeneous computing system that includes multiple types of programmable circuitry (e.g., one or more FPGAs, one or more CPUs, one or more GPUs, one or more NPUs, one or more DSPs, etc. and / or any combination thereof), and an orchestration technique (e.g., an application programming interface (API)) that can assign computing tasks to any one of the multiple types of programmable circuitry that is suitable and available for performing the computing task.

[0198] As used herein, an integrated circuit / circuitry is defined as one or more semiconductor packages that contain one or more circuit elements such as transistors, capacitors, inductors, resistors, current paths, diodes, etc. For example, an integrated circuit can be implemented as one or more of an ASIC, an FPGA, a chip, a microchip, programmable circuitry, a semiconductor substrate that couples multiple circuit elements, a system-on-chip (SoC), etc.

[0199] Examples of methods, devices, systems, and articles of manufacture are disclosed herein that enable accurate and computationally efficient determination of a vehicle location. Additional examples and combinations thereof include the following:

[0200] Example 1 includes an apparatus for adjusting a probability grid of a point mass filter for navigation of a vehicle, the apparatus including interface circuitry communicatively coupled to sensors of the vehicle; machine-readable instructions; and programmable circuitry for instantiating or implementing at least one of the machine-readable instructions to move the probability grid based on movement of the vehicle; and perform a linear adjustment over time of at least a portion of the probability grid based on a bounded error corresponding to the movement of the vehicle.

[0201] Example 2 includes the apparatus according to Example 1, wherein the programmable circuitry is for determining an estimate of the orientation of the vehicle based on the probability grid.

[0202] Example 3 includes the apparatus according to Example 1, wherein the programmable circuitry is for linearly adjusting the size of a two-dimensional region of the probability grid.

[0203] Example 4 includes the apparatus according to Example 3, wherein the programmable circuitry is for linearly adjusting a two-dimensional area of the region based on the bounded error with respect to a first order of time.

[0204] Example 5 includes the apparatus according to Example 1, wherein the programmable circuitry is for identifying a point in the probability grid having a highest probability value to estimate the orientation of the vehicle.

[0205] Example 6 includes the apparatus according to Example 5, wherein the programmable circuitry is for centering the probability grid based on the identified point.

[0206] Example 7 includes the apparatus according to Example 1, wherein the programmable circuitry is for smoothing the probability grid.

[0207] Example 8 includes the apparatus according to Example 1, wherein the programmable circuitry is for determining a degree of the bounded error with respect to a speed error of the vehicle, and wherein the linear adjustment of at least a portion of the probability grid is based on the speed error.

[0208] Example 9 includes a non-transitory machine-readable storage medium including instructions for causing programmable circuitry to move a probability grid corresponding to a point mass filter for navigation of a vehicle based at least on movement of the vehicle, and perform a linear adjustment over time of at least a portion of the probability grid based on a bounded error corresponding to the movement of the vehicle.

[0209] Example 10 includes the non-transitory machine-readable storage medium according to Example 9, wherein the instructions cause the programmable circuitry to determine an estimate of the orientation of the vehicle based on the probability grid.

[0210] Example 11 includes the non-transitory machine-readable storage medium according to Example 9, wherein the instructions cause the programmable circuitry to linearly adjust the size of a two-dimensional region of the probability grid.

[0211] Example 12 includes the non-transitory machine-readable storage medium according to Example 11, wherein the instructions cause the programmable circuitry to linearly adjust a two-dimensional region of the region based on the bounded error relative to a first-order time.

[0212] Example 13 includes the non-transitory machine-readable storage medium according to Example 9, wherein the instructions cause the programmable circuitry to identify a point in the probability grid having the highest probability value to estimate the orientation of the vehicle.

[0213] Example 14 includes the non-transitory machine-readable storage medium according to Example 13, wherein the instructions cause the programmable circuitry to center the probability grid based on the identified point.

[0214] Example 15 includes the non-transitory machine-readable storage medium according to Example 9, wherein the instructions cause the programmable circuitry to smooth the probability grid.

[0215] Example 16 includes the non-transitory machine-readable storage medium according to Example 9, wherein the instructions cause the programmable circuitry to determine the bounded error relative to a speed error of the vehicle, and wherein the linear adjustment of at least a portion of the probability grid is based on the speed error.

[0216] Example 17 includes a method that includes moving a probability grid of a point mass filter for navigation of a vehicle based on movement of the vehicle by implementing instructions with a programmable circuitry, and performing a linear adjustment over time of at least a portion of the probability grid based on a bounded error corresponding to the movement of the vehicle by implementing instructions with the programmable circuitry.

[0217] Example 18 includes the method according to Example 17, wherein the linear adjustment of the probability grid is performed by adjusting the size of a two-dimensional region of the probability grid.

[0218] Example 19 includes the method according to Example 17, which further includes smoothing the probability grid by implementing instructions with the programmable circuitry.

[0219] Example 20 includes the method according to Example 17, further comprising determining the bounded error of the speed error relative to the vehicle by implementing instructions with the programmable circuitry, and wherein the linear adjustment of at least a portion of the probability grid is based on the speed error.

[0220] As can be seen from the above, it should be understood that example systems, devices, articles, and methods have been disclosed that enable efficient determination of position by linearly adjusting the grid of the PMF. The examples disclosed herein can accurately determine the orientation of a vehicle traveling on water or other environments where terrain is not suitable for exploitation. The examples can also mitigate the effects of non-zero bias errors. The disclosed systems, devices, articles, and methods improve the efficiency of using a computing device by considering non-zero bias errors and providing a computationally efficient method for keeping a vehicle within the grid, and thus reduce and / or eliminate the need for computational correction and / or adjustment of a vehicle that exits the grid. Accordingly, the examples disclosed herein are computationally efficient. Accordingly, the disclosed systems, devices, articles, and methods improve one or more of the operations of a machine such as a computer or other electronic and / or mechanical device.

[0221] The following claims are hereby incorporated by reference into this detailed description. Although certain example systems, devices, articles, and methods have been disclosed herein, the scope of this patent is not limited thereto. Instead, this patent covers all systems, devices, articles, and methods that fall entirely within the scope of the claims of this patent.

Claims

1. A device (108) for adjusting a probability grid of a point quality filter for navigation of a vehicle (100), the device comprising: an interface circuit system (820) communicatively coupled to a sensor (110) of the vehicle; machine-readable instructions (832); and Programmable circuitry (600) for instantiating or implementing at least one of the machine-readable instructions to: moving the probability grid based on movement of the vehicle; and A linear adjustment of at least a portion of the probability grid with respect to time is performed based on a bounded error corresponding to the movement of the vehicle. 2 . The apparatus of claim 1 , wherein the programmable circuitry is to determine an estimate of the vehicle's position based on the probability grid.

3. The apparatus of claim 1, wherein the programmable circuitry is to linearly adjust the size of a two-dimensional region of the probability grid. 4 . The apparatus of claim 3 , wherein the programmable circuitry is to linearly adjust a two-dimensional area of ​​the zone based on the bounded error relative to first order time.

5. The apparatus of claim 1, wherein the programmable circuitry is to identify a point in the probability grid having a highest probability value to estimate the position of the vehicle.

6. The apparatus of claim 5, wherein the programmable circuitry is to center the probability grid based on the identified point.

7. The apparatus of claim 1, wherein the programmable circuitry is to smooth the probability grid.

8. The apparatus of claim 1, wherein the programmable circuitry is to determine the extent of the bounded error relative to a speed error of the vehicle, and wherein the linear adjustment of the at least a portion of the probability grid is based on the speed error.

9. A non-transitory machine-readable storage medium comprising instructions for causing a programmable circuit system to at least: moving a probability grid of a point mass filter corresponding to navigation of the vehicle based on movement of the vehicle; and A linear adjustment of at least a portion of the probability grid with respect to time is performed based on a bounded error corresponding to the movement of the vehicle.

10. The non-transitory machine-readable storage medium of claim 9, wherein the instructions cause the programmable circuitry to determine an estimate of the vehicle's position based on the probability grid.