Preparation of data for high-precision absolute positioning of moving object along trajectory

By generating reference lines and using KD trees, cubic spline curve fitting, and sliding window methods, the problem of high-precision absolute positioning of moving objects on complex trajectories was solved. Robust conversion from Cartesian to reference lines and reverse conversion were achieved, improving positioning accuracy.

CN121889641APending Publication Date: 2026-04-17ORACLE INT CORP
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
ORACLE INT CORP
Filing Date
2024-09-12
Publication Date
2026-04-17

AI Technical Summary

Technical Problem

Existing technologies struggle to achieve high-precision absolute positioning of moving objects along a trajectory, especially with reference lines of complex geometry. Cartesian coordinate transformation suffers from error accumulation and discontinuity, and yaw angle measurement is difficult, affecting positioning accuracy.

Method used

By generating a reference line, using KD trees and cubic spline curve fitting, combined with the sliding window method and yaw increment calculation, a robust transformation from Cartesian coordinates to reference line coordinates is achieved, and the reverse transformation is performed to Cartesian coordinates, ensuring high accuracy.

Benefits of technology

It improves the positioning accuracy of moving objects along the trajectory, reduces error accumulation, ensures that the transformation from reference line to Cartesian coordinates does not introduce distortion, and supports more reliable trajectory planning and analysis.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121889641A_ABST
    Figure CN121889641A_ABST
Patent Text Reader

Abstract

Techniques are provided for preparing data for high precision absolute positioning of a moving object along a trajectory. In one technique, a sequence of points is stored, where each point corresponds to a different set of Cartesian coordinates. A curve is generated that approximates a line passing through the sequence of points. Based on the curve, a set of points on the curve is generated, where the set of points is different from the sequence of points. A new Cartesian coordinate is generated for each point in the set of points. After the new Cartesian coordinates are generated, the Cartesian coordinates of the position of the moving object are determined.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to object localization, and more particularly, to preparing data for high-precision absolute localization of a moving object along a trajectory. Background Technology

[0002] Raw path data describing the trajectory of a moving object, obtained from sensors mounted on an object (e.g., a vehicle), is rarely (if ever) sufficient for high-precision absolute positioning of a moving object along a trajectory or reference line. A reference line is a continuous curve of arbitrary length defined by a series of closely positioned points in Cartesian coordinates. The reference line itself requires extensive preprocessing, and the object's pose (position and orientation) needs adjustment, expansion, and transformation.

[0003] Using Cartesian coordinates to describe the position of an object is commonplace, but it may not always be optimal for certain tasks. In the context of visual odometry (VO) and simultaneous localization and mapping (SLAM), if Cartesian coordinates are used to track a moving object, errors in the estimation can cause the moving object to drift outside the possible paths or roads defined by the reference line. This happens because if the reference line has complex geometry—for example, if the line includes sharp and repetitive turns in different directions and at various angles—constraining object movement in Cartesian coordinates is computationally intensive, both manually and for machine learning models. The task would require solving polynomials with very large coefficients, which can significantly impact the model's efficiency.

[0004] However, using reference-line-based coordinates provides the position of a moving object relative to a reference line, adding internal constraints to the model that help maintain its connection to reality, and ultimately substantially simplifying computations and ensuring more reliable and accurate results. Strong anchoring to the reference line also facilitates post-processing and analysis of the results. Many use cases related to the planning, prediction, and analysis of moving object trajectories benefit from the use of reference-line-based coordinates. In recent years, reference-line-based coordinate systems have proven useful for representing the trajectories of objects such as robots and autonomous vehicles. Such systems are crucial in settings where the object trajectory geometry is predetermined, repetitive (where objects repeatedly follow the same path), and subject to infrequent modifications. Example settings include racetracks, automated guided vehicles (AGVs), autonomous agricultural equipment, and aerial vehicles following flight paths.

[0005] A reference-line-based coordinate system consists of a longitudinal displacement *s* (how far the object is from the reference line's starting point) and a lateral displacement *d* (how far the object is laterally from the reference line). Much real-world data exists in Cartesian (x, y) or geographic (longitude and latitude) coordinate systems. While the conversion from geographic to Cartesian is trivial, the conversion from Cartesian to reference-line is not. Many available solutions for converting Cartesian coordinates to reference-line-based coordinates are either incomplete (i.e., omitting necessary steps) or have poor accuracy. This is a significant obstacle for many applications where accurately tracking vehicle position and orientation is crucial for safe and reliable operation.

[0006] Another problem with raw data is that the most convenient orientation measurement—the yaw angle—is often not provided due to the physical difficulty of measuring it. The yaw angle measures the orientation of a moving object around its yaw axis as it changes direction, whether to the left or right in the direction of motion. It is possible to directly transform a more common given slip angle and a set of object coordinates into an absolute yaw angle, but this direct transformation introduces other problems, including discontinuities in absolute yaw values ​​exceeding zero (i.e., difficulty in determining where the sign of the angle changes) and a loss of accuracy due to the accumulation of errors from the individual coordinates and slip angle, and the errors in the transformations between them. Predicting the difference in yaw angles between frames of the same and different video segments helps improve prediction accuracy and avoids the discontinuity problem of absolute angles. However, if the difference is calculated from the initial absolute yaw value, it still suffers from discontinuities, and multiple transformations introduce additional small errors, which are crucial when predicting small yaw differences (i.e., fractions of a degree or a few hundredths of a degree).

[0007] The methods described in this section are permissible but not necessarily previously conceived or employed methods. Therefore, unless otherwise indicated, any method described in this section should not be considered prior art simply because it is included in this section. Attached Figure Description

[0008] In the attached diagram:

[0009] Figure 1 This is a block diagram depicting an example system in an embodiment for modifying input data into a state that improves the accuracy of a method for absolute positioning of a moving object along a trajectory defined by a reference line.

[0010] Figure 2 This is a flowchart depicting an example process for generating reference lines in an embodiment;

[0011] Figure 3It is a diagram depicting the generated reference lines in the embodiments and how corresponding points on the reference lines can be determined based on the position of the moving object;

[0012] Figure 4 This is a diagram illustrating how the lateral distance of a moving object from a reference line can be determined in an embodiment;

[0013] Figure 5 This is a diagram illustrating the process used in an embodiment to generate kinematic values ​​using this sliding window method;

[0014] Figure 6 This is a flowchart depicting an example processing step in the embodiment for expanding image data with kinematic values;

[0015] Figure 7 This is a block diagram illustrating a computer system on which embodiments of the present invention can be implemented;

[0016] Figure 8 It is a block diagram of a basic software system that can be used to control the operation of a computer system. Detailed Implementation

[0017] In the following description, numerous specific details are set forth for purposes of explanation in order to provide a thorough understanding of the invention. However, it will be apparent to you that the invention can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid unnecessarily obscuring the invention.

[0018] General Overview

[0019] Systems and methods are provided for preparing data for high-precision absolute positioning of an object moving along a trajectory. In real-world scenarios, input positioning data is rarely smooth and consistent; therefore, it requires preparation. Embodiments provide specific steps for this process. In one technique, raw data comprising a sequence of points in Cartesian space is received. Based on the raw data, a curve is generated that approximately crosses or approaches the sequence of points. Based on the curve, a set of points on the curve is generated. Each pair of adjacent points in this set can be separated by the same fixed distance. Then, new Cartesian coordinates are generated for each input in this set of points. Given the Cartesian coordinates of the position of the moving object, the point on the curve closest to that position is determined.

[0020] This embodiment improves upon computer-related techniques, specifically the absolute positioning of moving objects. It outperforms existing methods because it provides a robust and highly accurate transformation from Cartesian coordinates to a reference line (corresponding to the actual geographic location): robustness lies in its ability to handle input from any curve without giving unexpected erroneous results; high accuracy lies in the fact that converting to a reference line and then back to Cartesian coordinates yields the same original Cartesian coordinates. In other words, the transformation does not introduce distortion.

[0021] System Overview

[0022] Figure 1 This is a block diagram depicting an example system 100 in an embodiment for modifying input data into a state that improves the accuracy of a method for absolute positioning of a moving object (which is a physical object) along a trajectory defined by a reference line.

[0023] System 100 includes input data 110, a reference line generator 120, a ground truth preparer 130, a coordinate transformation verifier 140, a kinematics generator 150, and a delta yaw generator 160. Each of the reference line generator 120, ground truth preparer 130, coordinate transformation verifier 140, kinematics generator 150, and delta yaw generator 160 can be implemented using software, hardware, or any combination of software and hardware.

[0024] Input data 110 includes two types of data: path data (or data for generating reference lines in a reference-line-based coordinate system) and raw movement data from which ground truth data is generated to train one or more machine learning models. Path data may include one or more sets of location data, each set defining the path and orientation of a moving object, such as a vehicle on a track, an autonomous aerial vehicle, or a mobile robot in a warehouse. This path may be referred to as R, or path R. Thus, data about the movement of a single moving object can be used to determine path R. Alternatively, path data may be artificially generated, such as calculated optimal paths to follow from point A to point B in a given scene or location. For example, path data could be static data defining a track, such as the centerline of the track.

[0025] A set of location data can be stored as an array or vector of values. The set of location data includes location data for each location in the set, which can be geographic data or Cartesian coordinates in any plane or space. If the location data is geographic data, then the geographic (e.g., GPS) data can include the longitude and latitude values ​​for each location. In a scenario where a set of location data defines a path R, a reference line generator 120 (or another component of system 100) can convert the geographic data into Cartesian coordinates. For example, a first location can be mapped to (0, 0) in Cartesian space, and each unit in the x and y directions can have units equivalent to the units being predicted, such as feet, meters, or centimeters. In the context of a track, the location data can be a series of GPS coordinates generated when a vehicle travels around the center of the track once. The raw motion data can also include a set of location data for each of one or more moving objects, along with an image of each location. The image can be generated by a camera mounted on the moving object (e.g., on top of a car or under a drone) and facing the same direction as the moving object.

[0026] Reference line generator

[0027] Reference line generator 120 may include multiple sub-components, such as a position deduplication unit 122, a position smoother 124, a curve generator 126, and a unit vector generator 128. Reference line generator 120 may include more or fewer sub-components. For example, an operation described as being performed by one of these sub-components may be performed by other sub-components.

[0028] Location deduplication 122 analyzes a set of location data from input data 110 and identifies and removes any duplicate locations. Duplicate locations are two locations that have the same or identical location data. For example, two or more locations in a set of location data may have the same Cartesian coordinates or the same set of GPS values. If this is the case, location deduplication 122 identifies one or more duplicates and removes them. Before removing duplicates, location deduplication 122 may first determine if a duplicate location is adjacent to a matching location. If two locations have the same value but are not adjacent to each other in the set of location data (i.e., there are one or more locations between these two locations in the location data), this may mean that the path traveled by the moving object is zigzagging back, such as in a loop of a figure-eight track. In such scenarios, location deduplication 122 may only analyze duplicate locations that are adjacent to each other in the set of location data. In some cases, location deduplication 122 may identify zero duplicates in a set of location data. In another embodiment, location deduplication 122 does not perform this operation on a set of location data at all.

[0029] Position smoother 124 adjusts one or more positions in a set of position data (with or without deduplication). Position smoother 124 "smooths" the set of position data using a low-pass filter, an example of which is a Butterworth filter. Smoothing the set of position data removes unwanted irregular oscillations that may be caused by (a) equipment that produces inaccurate location data and / or (b) object operators that cause objects to move off-smooth curves in space (such as vehicle drivers frequently and unnecessarily moving the steering wheel). Parameters of the Butterworth filter include filter order, filter critical frequency, filter method, and filter fill. Examples of values ​​for these parameters include 3, 0.1, Gustafsson, and no filter fill, respectively. The result of smoothing is a coarse reference line.

[0030] The position smoother 124 (or another component of the reference line generator 120, such as the curve generator 126) determines the length (L) of a coarse reference line defined by a set of smoothed position data. This determination involves calculating the (e.g., Euclidean) distance between each pair of adjacent positions in the set of smoothed position data and summing (or totaling) the calculated distances.

[0031] Curve generator 126 generates curves based on path R or a coarse reference line. (or “smooth R”), where each point in the line is evenly spaced along the vertical dimension. To obtain these points, a smoothed B-spline curve G(r) is fitted to the points of a coarse reference line. Then, curve generator 126 creates curves starting from the origin of curve R at intervals of... The distance array S (e.g., distance array S) ), up to the length of the rough reference line. S contains the traversal curve. The vertical position of the imaginary object, where all positions lie on the curve. It is evenly distributed on the surface. The smaller the value, the better the calculation of the moving object relative to the curve. The more precise the absolute location, the more expensive it is in terms of time and computing resources. Example It is one centimeter, which can represent the balance between computation time and desired accuracy, depending on the processing used relative to the curve. The hardware for generating the data. Therefore, with the data used to generate the curve. Compared to the number of points / positions in the original coarse reference line R, the curve It can have more curves Related points.

[0032] Curve generator 126 (or another component of reference line generator 120) uses For each value in array S, new Cartesian coordinates (i.e., (x, y)) are generated. To generate these new points, curve generator 126 evaluates the spline curve G(r) for each value in array S. The generated points describe the curve. The path in the curve. The length is 10 and each If the value is 1, then the array S = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]. (Curve) Having a starting point, the first point (x, y) corresponds to S[0], the second point (x, y) corresponds to S[1], and so on. In this way, a set of points (x, y) in Cartesian space is obtained, which lie on the curve. They are equidistant from each other.

[0033] In this embodiment, curve generator 126 (or another component of reference line generator 120) generates two one-dimensional (1D) cubic splines C. S,Rx and C S,Ry They interpolate the values ​​in S. The value of each dimension (x, y).

[0034] In the embodiment, for Each pair of (x, y) coordinates generates a 2D KD tree. The KD tree is then used to identify given the input Cartesian positions. The nearest point on the tree. An alternative to the KD-tree is a binary tree.

[0035] Unit vector generator 128 Each pair of adjacent points generates a unit vector d. x and d y And other values. A unit vector is a vector of length 1. The generated unit vector is used to generate two one-dimensional (1D) cubic splines. and They are the interpolation unit vectors d for values ​​in S. x and d y The value of each of them.

[0036] In order to generate and Calculate the following values:

[0037] a. For each coordinate, the distance between adjacent points: and .

[0038] b. (x) r y r The angle of the normal vector:

[0039] c. sr It is from the reference line From the starting point along the reference line of (x) r y r The longitudinal distance of the point (or D(x)) r y r )).

[0040] d. ,in It is the unit vector at the point (r-1) on the x-axis.

[0041] e. ,in It is the unit vector at point (r-1) on the y-axis.

[0042] Reference line Each point in the vector has a 1D unit vector in each dimension x and y. and This is then used for the transformation from the reference coordinate system to the Cartesian coordinate system. When transforming back to Cartesian coordinates, each dimension is calculated separately, first considering s, and then adjusting accordingly based on d.

[0043] The data generated by the reference line generator 120 is used for the transformation between the Cartesian-based coordinate system and the reference line-based coordinate system.

[0044] Example processing

[0045] Figure 2 This is a flowchart depicting an example process 200 for generating and using reference lines in an embodiment. Process 200 can be performed by different components of system 100, such as reference line generator 120.

[0046] At box 210, a sequence of points is stored, each point corresponding to a different set of Cartesian coordinates. This sequence of points may have been generated by a GPS receiver attached to the moving object, which generates geographic coordinates at regular intervals (such as every second or every thirty milliseconds). Therefore, the sequence of points may correspond to the measured past location of the moving object (which may differ from the moving object in box 250). Alternatively, the sequence of points may be an arbitrarily defined line, which may be an optimal path based on one or more criteria (such as time, distance, or difficulty). Therefore, box 210 may also involve converting geographic coordinates to Cartesian coordinates. Furthermore, in this embodiment, the sequence of points corresponds to different geographic locations. The sequence of points is used to generate reference lines.

[0047] At box 220, a curve is automatically generated that approximates the line passing through the point sequence. An error can be calculated, which represents the cumulative difference between each point (in the point sequence) and the closed position on the curve (to that point).

[0048] At box 230, a set of points on the curve is generated based on the curve. This set of points is different from the point sequence. In fact, many or most of the points in this set may not match or be equal to any point in the (original) point sequence. This set of points can be generated such that the distance between each pair of adjacent points in the set is equal or substantially equal (e.g., such that the difference between any two distances is less than 1% of the minimum distance).

[0049] At box 240, new Cartesian coordinates are generated for each point in this set. Like boxes 210-230, box 240 can be performed by reference line generator 120.

[0050] At box 250, after generating new Cartesian coordinates, the Cartesian coordinates of the moving object's location are determined. Box 250 may involve a computing device on the moving object transmitting geographic data (indicating the computing device's real-world location at a specific time) to a server computer via a wireless network. This server computer converts the geographic data into Cartesian coordinates and sends these Cartesian coordinates to system 100 or another computer system having a copy of the set of points and their corresponding Cartesian coordinates.

[0051] At box 260, a specific point on the curve that is closest to that location is determined. This specific point on the curve is mapped to a real-world location. Box 260 may involve a component of system 100 (e.g., ground truth preparer 130) or another computer system calculating the specific point based on the determined Cartesian coordinates. Box 260 can be performed using one of the techniques described herein.

[0052] Ground truth preparer

[0053] The technique described below assumes that the ground truth data of the trajectory of each moving object (which will be used to train the machine learning model) is defined by a sequence of poses, each pose including Cartesian (x, y) coordinates, the slip angle of the moving object, and a timestamp of the pose. The distance between adjacent poses can vary depending on the number of frames per second (FPS) captured by the video camera. Example FPS cameras are 30 FPS and 60 FPS cameras. The embodiments are not limited to these specific FPS values ​​and can process images from video cameras with potentially very different FPS.

[0054] At a high level, ground truth preparation involves expanding each pose (x, y, slip angle, and timestamp) of the original video clip with new values ​​that will later be used to train the machine learning model. Below is a list of variables and their corresponding definitions:

[0055] a. s (reference line) (distance above)

[0056] b. d (relative to the reference line) (lateral distance)

[0057] c. For each coordinate (x and y) (speed), (acceleration) and (Acceleration)

[0058] d. (yaw).

[0059] e. (Speed ​​in yaw direction)

[0060] The ground truth preparer 130 calculates or computes the s and d values ​​of Cartesian coordinates (i.e., (x, y)) given a ground truth image. In other words, the ground truth preparer 130 converts Cartesian coordinates into reference-line-based coordinates (s, d). s (or distance from the reference line) The distance from the starting point is calculated as follows. Figure 3 It is a diagram depicting the generated reference line 305 in the embodiment and how the corresponding point on the reference line 305 can be calculated based on the position of the moving object.

[0061] The moving object is at position c (which may be a distance from the reference line). The coordinates of (very far) are called (x) c y c (and indicated by point 310).

[0062] use( x , y KD tree recognition reference line on ) The nearest point is 320 (x) r1 y r1 Searching a KD-tree is a binary search in a 2D space encoded by a KD-tree.

[0063] Identify reference lines The second nearest point on the top is 330. This can be done by: (1) identifying the reference line From point 320 (x r1 y r1 The adjacent subsequent point (x) starting from ) r3 y r3 (2) Calculate from point 310(x) c y c (3) Identify reference lines From point 320 (x r1 y r1The adjacent point (x) starting from r2 y r2 (4) Calculate from point 310(x) c y c (5) Determine which distance is shorter to point 310 (x) c y c The nearest neighbor is the second nearest point. If the reference line If it's circular, then the next point can serve as a reference line. The first point (if the nearest point is located at) (the end of the line), and the preceding point can serve as a reference line. The last point (if the nearest point is on the reference line) (The beginning of the text). Based on experiments, identifying and utilizing the second nearest point to determine s has a significant impact on the accuracy of the s value.

[0064] Given reference line Calculate the reference line from the nearest and second nearest points on the line. The incremental value (deltavalue) on:

[0065] a.

[0066] b.

[0067] Then, calculate the distance of the moved object to the nearest point:

[0068] a.

[0069] b.

[0070] Calculate the projection norm (N) from these values:

[0071] a.

[0072] Reference line Projection point 340 The coordinates can be calculated as follows:

[0073] a.

[0074] b.

[0075] From these two values, the reference line can be identified first by its index. The first point (s) on p1 To calculate s c Point S p1Corresponding to the reference line The nearest point on 320 The vertical distance. Then:

[0076] a. If the second nearest point is located after the nearest point (i.e., the second nearest point is on the reference line). (If the point array has a higher index), then (in( () is a reference line (The length of line segment 350 on line 305)

[0077] i. If s c > L (i.e., reference line) (length) and If it's round, then s c = s c – L

[0078] b. If the second nearest point is located before the nearest point, then

[0079] i. If s c < 0 and If it's round, then s c = s c + L

[0080] The calculation of d (lateral distance) is as follows and in Figure 4 Description in Chinese:

[0081] a. First, using one of the techniques described in this paper to identify moving objects. c Location 410.

[0082] b. Second, use s c The value and reference spline C S,Rx and C S,Ry Identify reference lines Point 430 (x) on 405 r y r ).

[0083] c. Third, calculate d c 450, of which And among them d c Indicates distance from reference line The lateral distance of the point on 405. However, at this stage of calculating d, it is unknown whether the moving object is located on the reference line. Which side of the reference line. The next two steps are used to determine which side the moving object is on. Which side?

[0084] d. Fourth, determine the reference line. The point 420 is located in front of the x-axis. This point is called (x). ra y ra ),use ,in It is a reference line. Small step sizes on 405, such as 0.5 meters.

[0085] e. Fifth, calculate the vector. and The angle between them is 440 degrees. .if If d < 0, then d c = -d c Therefore, the angle determines whether the moving object is located on the reference line. Is it the left or right side of 405?

[0086] Given the above steps performed by the ground truth preparer 130 for each image used to train the machine learning model, each image can be associated with the correct reference line coordinates (s, d).

[0087] Coordinate Transformation Verifier

[0088] In one embodiment, system 100 includes a coordinate transformation verifier 140 that verifies that the reference line coordinates can be transformed back to the original Cartesian coordinates. The coordinate transformation verifier 140 performs this verification before training the machine learning model. If the result must be in Cartesian coordinates, this verification can also be used to apply to the machine learning model's predictions in the reference line coordinates.

[0089] Given reference line coordinates s c and d c Reflecting a point in the trajectory of a moving object, s is identified using splines pre-calculated in the first stage associated with the reference line generator 120. c Cartesian coordinates:

[0090] a. This is a function that, when called, takes a given vertical distance s. c Use interpolation to find the value x. r .

[0091] b. Same as above, but on the y-axis.

[0092] Then, by shifting d c Calculate the Cartesian coordinates of the moving object (i.e., (x...) c y c (), as shown below:

[0093] a.

[0094] b.

[0095] The coordinate transformation verifier 140 can compare these (a) output Cartesian coordinates with (b) the original Cartesian coordinates used to generate the reference line coordinates input to the coordinate transformation verifier 140. If the two sets of Cartesian coordinates are exactly the same or within an acceptable threshold between them (e.g., difference <1%), then the transformation is verified.

[0096] Extended data using kinematic values ​​and yaw

[0097] At this stage, the original training data (e.g., stored in input data 110 and comprising multiple images, each representing the pose of a moving object, associated with a timestamp and spatial (e.g., geographic) coordinates, and oriented in a specific direction) is expanded with kinematic values ​​and yaw angles (generated by kinematic value generator 150) for each pose in the pose sequence of the moving object's trajectory. Example kinematic parameters include velocity, acceleration, and jerk. This new data helps the machine learning model make better predictions, is necessary for calculating the yaw angle increments between poses, and can be used to evaluate the predicted trajectory.

[0098] The embodiments described below can be used independently of systems that generate and utilize reference lines and convert Cartesian coordinates to reference line coordinates.

[0099] To generate kinematic values, the initial step is to choose a sliding window size (w), which indicates the number of adjacent poses along the trajectory of the moving object. Example values ​​for w include 5 and 3, but a window of 3 does not allow for the calculation of jerk. Therefore, if the sliding window size is 5, it is impossible to calculate the kinematic values ​​for the first two and last two poses in a series of poses. However, a sliding window of 3 can be selected for the first three poses and the last three poses in a series of poses. This means that only the first and last poses in the series will not have velocity or acceleration values ​​calculated for them.

[0100] Figure 5 This is a diagram illustrating the process used in an embodiment to generate kinematic values ​​using this sliding window method. Figure 5 Several points 500 in Cartesian space are depicted, each corresponding to the position of the moving object. An example distance between positions is one meter, but the embodiment is not limited to this distance. At the 5th time point, the current window is in the first group of five poses 510. At the 6th time point, the current window is in the second group of five poses 520.

[0101] Once the size of the sliding window is determined, one of the points within the window is selected as an index, such as the midpoint of the window. For example, if the midpoint is selected as the index and the window size is 5, then the third pose out of a set of five adjacent poses is selected as the midpoint. Figure 5 In the diagram, the midpoint of window 510 is point 512, while the midpoint of window 520 is point 522.

[0102] Once the midpoint is selected, the pose and timestamp corresponding to the midpoint are identified, and the timestamps in the window are offset so that the midpoint has a timestamp of 0, the poses that are before the midpoint pose have negative timestamps, and the poses that are after the midpoint pose have positive timestamps.

[0103] Once the timestamp offset is determined, a cubic polynomial is fitted at points within the window, where each point has two values: the modified timestamp and the x-coordinate from the Cartesian coordinates of the image / pose corresponding to that point. This cubic polynomial is the equation of motion. (The larger the window, the smoother the polynomial). Due to the nature of the equation, the value at timestamp T is the newly calculated x (this only evaluates the cubic polynomial at T=0), the first derivative at timestamp T is the velocity (v), and the second derivative at timestamp T is the acceleration (v). ), and the third derivative at timestamp T is the jerk ( It's important to clarify that a polynomial equation is generated for each window, and the purpose of each polynomial is to generate kinematic properties for the midpoint within the corresponding window. The exact value T of the midpoint is not important, which is why the timestamps of all points within the window can be offset by -T, making the midpoint's timestamp zero. Making the midpoint's timestamp zero simplifies computation and makes each polynomial more robust. One or more of these values ​​may be useful for training the model and verifying predictions of relative or absolute poses.

[0104] One or more of these derivatives are calculated with respect to timestamp 0 (the midpoint). Doing so gives a new x, plus the velocity, acceleration, and jerk at x. The value of x is then updated to match the generated kinematic values.

[0105] The same process of repeatedly calculating one or more of these kinematic values ​​for the x-coordinate is performed for the y-coordinate. Therefore, for each image in the training image set used to train the machine learning model, the above process of calculating a set of kinematic values ​​for a set of points is performed twice: once for the x-coordinate and once for the y-coordinate.

[0106] Through the above processing, the values ​​of the velocity in the x-direction / dimension and the y-direction / dimension are calculated and known. The "slip angle" is the angle between the direction the moving object is facing (or the direction the camera on the moving object is facing / pointing) and the direction the moving object is traveling. Therefore, a moving object may slide on a moving surface in one direction but face (e.g., very) a different direction. The velocity of the moving object in the yaw direction (or the direction the object is traveling) can be calculated using the slip angle and the calculated velocities in the x and y coordinates:

[0107] a. ,

[0108] in It is the velocity vector in the yaw direction. It is the slip angle. It's yawed, and It is a velocity vector in Cartesian space, and It is applied to A rotation matrix that orients the vehicle relative to the slip angle direction.

[0109] The yaw angle can then be calculated as follows:

[0110] a.

[0111] in and These are the velocities in the y-axis and x-axis, respectively, representing the y-axis velocities.

[0112] The calculation of the pose / image corresponding to the index (e.g., midpoint) of the sliding window yields at least velocity and yaw angle values. This process is repeated by moving the sliding window one point / pose and repeating the calculation for the next five points. This process is repeated for each group of five adjacent poses (in a series of poses) until the end of the trajectory of the moving object is reached. One benefit of fitting a polynomial to each group of adjacent points is that the angles become much more consistent and do not fluctuate significantly between points. This consistency allows the machine learning model to learn better and output better predictions about the position of one object relative to another.

[0113] Figure 6 This is a flowchart depicting an example process 600 for expanding image data with kinematic values ​​in an embodiment. Process 600 can be implemented by a kinematic value generator 150 and can be performed before training a machine learning model for locating moving objects in the future (e.g., in real time).

[0114] At box 610, a sliding window identifies a set of adjacent points along the trajectory of the moving object. The size of the sliding window can be a default value or predefined. The trajectory is defined by a series of points in Cartesian space, each with Cartesian coordinates. This series of points can be stored in input data 110 or another database or storage location.

[0115] At box 620, identify the midpoint of this group of adjacent points. Similar to the sliding window size, the midpoint can be a default value or a predefined value.

[0116] At box 630, a first polynomial equation is generated for the first dimension (such as the x-dimensional dimension) based on the set of neighboring points. The first value of the first polynomial equation at a specific timestamp associated with the midpoint is a newly calculated first positional value along the first dimension, while the first derivative at the specific timestamp is the first velocity along the first dimension.

[0117] At box 640, a second polynomial equation is generated for the second dimension (such as the y-dimension) based on the set of neighboring points. The second value of the second polynomial equation at a specific timestamp is a newly calculated second positional value along the second dimension, while the first derivative at a specific timestamp is a second velocity along the second dimension.

[0118] At box 650, a velocity value in the yaw direction is generated based on a first velocity, a second velocity, and a slip angle associated with the midpoint. Box 650 can be performed using matrix multiplication, where one of the matrices includes the velocity values ​​in the x and y directions, and the other matrix includes sine and cosine values ​​based on the slip angle.

[0119] At box 660, the yaw angle is generated based on the velocity in the yaw direction. Box 660 can be performed by calculating the arctangent of two velocities: one in the x-direction and the other in the y-direction.

[0120] Boxes 610-660 can be executed for each group of consecutive adjacent points along the trajectory. Therefore, if there are N points in a series of points on the trajectory, then boxes 610-660 can be executed N-4 times relative to the points in the trajectory.

[0121] Precise calculation of yaw increment

[0122] One of the outputs of the machine learning model described in U.S. Patent Application Serial No. 18 / 210,506 is the yaw increment (or Given two input frames (one a reference frame and the other a new frame) and data about these input frames in the machine learning model, output the position increment (or the position difference between the two frames) and the yaw increment (or the difference in yaw angles between the two frames). Repeat this operation for multiple reference frames and the same new frame. Aggregate (e.g., average) the outputs to generate the final predicted position for the new frame.

[0123] To train such a machine learning model to output yaw increment values, accurate yaw increment values ​​as labels in the training set are necessary. However, generating accurate yaw increment values ​​has proven difficult. Multiple chained conversions of values ​​from one format to another can lead to the accumulation of errors. For example, a common problem with the cosine function is that the cosine value for small angles is close to 1, making it difficult to resolve the angle from values ​​close to 1.

[0124] To avoid computational problems, the yaw increment generator 160 can implement the following formula, which calculates the yaw difference using only the arctangent and the initial velocity in the yaw direction. The yaw increment generator 160 generates (or calculates) the yaw increment value through a series of mathematical and trigonometric transformations:

[0125]

[0126] Here, i and j indicate frame numbers, corresponding to different poses or images. Frames i and j can be taken from the same trajectory (of the same moving object) or from different trajectories that may correspond to different moving objects. If the velocity in the yaw direction is provided, the difference between their yaw angle values ​​can be calculated. Besides using these generated yaw increment values ​​to train machine learning models, or instead of using these values, these generated yaw increment values ​​can be used outside the ML context, such as expanding the set of variables describing the object's movement. The yaw increment values, together with the output of the kinematics value generator 150, create a comprehensive description of the moving object.

[0127] Additional Examples

[0128] In a first specific embodiment, a first method includes: (1) determining the Cartesian coordinates of the position of a moving object; (2) identifying the point on a reference line closest to the position; (3) identifying the point on the reference line second closest to the position; and (4) identifying a point on the reference line between the closest point and the second closest point based on the closest point and the second closest point; wherein the first method is performed by one or more computing devices.

[0129] In a first related embodiment of the first specific embodiment, the first method further includes: (a) determining a first increment value, which is the difference between the x-coordinate of the nearest point and the x-coordinate of the second nearest point; (b) determining a second increment value, which is the difference between the y-coordinate of the nearest point and the y-coordinate of the second nearest point; (c) determining a third increment value, which is the difference between the x-coordinate of the position and the x-coordinate of the nearest position; and (d) determining a fourth increment value, which is the difference between the y-coordinate of the position and the y-coordinate of the nearest position; wherein the point is identified based on the first increment value, the second increment value, the third increment value, and the fourth increment value.

[0130] In a second related embodiment of the first related embodiment, the first method further includes: generating a projection norm value based on a first increment value, a second increment value, a third increment value, and a fourth increment value; and generating a Cartesian coordinate increment based on the projection norm value, the first increment value, and the second increment value; wherein the point is identified based on the Cartesian coordinate increment.

[0131] In a third related embodiment of the second related embodiment, the first method further includes: generating a distance based on Cartesian coordinate increments; determining whether the second nearest point is before or after the nearest point on the reference line; and based on the determination, adding the distance to the nearest point or subtracting the distance from the nearest point.

[0132] In a particular embodiment, the first method further includes: generating the distance between the position and the nearest point on the reference line; determining a second point on the reference line; calculating an angle between two vectors, each vector being based on the second point; and determining which side of the reference line the position is located on based on the angle.

[0133] In a second specific embodiment, a second method includes: (1) identifying a sliding window of a set of adjacent points along the trajectory of a moving object; (2) identifying the midpoint of the set of adjacent points; (3) generating a first polynomial equation for a first dimension based on the set of adjacent points, wherein a first value of the first polynomial equation at a specific timestamp associated with the midpoint is a newly calculated first position value along the first dimension, and a first derivative at the specific timestamp is a first velocity along the first dimension; (4) generating a second polynomial equation for a second dimension different from the first dimension based on the set of adjacent points, wherein a second value of the second polynomial equation at a specific timestamp is a newly calculated second position value along the second dimension, and a specific first derivative at the specific timestamp is a second velocity along the second dimension; (5) generating a velocity in a yaw direction based on the first velocity, the second velocity, and a slip angle associated with the midpoint; and (6) generating a yaw angle based on the velocity in the yaw direction; wherein the second method is performed by one or more computing devices.

[0134] In a first relevant embodiment of a second specific embodiment of the second method: the second derivative of the first polynomial equation at a specific timestamp is a first acceleration along a first dimension; and the specific second derivative of the second polynomial equation at a specific timestamp is a second acceleration along a second dimension.

[0135] In a second relevant embodiment of a second specific embodiment of the second method: the third derivative of the first polynomial equation at a specific timestamp is a first accelerometer along the first dimension; and the specific third derivative of the second polynomial equation at a specific timestamp is a second accelerometer along the second dimension.

[0136] In a third related embodiment of the second specific embodiment, the second method further includes: identifying a second set of neighboring points along the trajectory of the moving object, wherein the second set of neighboring points includes a subset of points in the set of neighboring points and includes at least one point not in the set of neighboring points; identifying a second midpoint of the second set of neighboring points; generating a first specific polynomial equation for a first dimension based on the second set of neighboring points, wherein a first specific value of the first specific polynomial equation at a timestamp associated with the second midpoint is a newly calculated first specific position value along the first dimension, and a specific first derivative at that timestamp is a third velocity along the first dimension; generating a second specific polynomial equation for a second dimension based on the second set of neighboring points, wherein a second specific value of the second specific polynomial equation at that timestamp is a newly calculated second specific position value along the second dimension, and a first derivative at that timestamp is a fourth velocity along the second dimension; generating a second specific velocity in a yaw direction based on the third velocity, the fourth velocity, and a second slip angle associated with the second midpoint; and generating a second yaw angle based on the second specific velocity in the yaw direction.

[0137] In a fourth related embodiment of the second specific embodiment of the second method, the velocity in the yaw direction is generated based on the cosine of the slip angle and the sine of the slip angle.

[0138] In a fifth related embodiment of the second specific embodiment of the second method, generating the yaw angle based on the velocity in the yaw direction includes generating the yaw angle based on the velocity along the first dimension in the yaw direction and the velocity along the second dimension in the yaw direction.

[0139] In a sixth related embodiment of the second specific embodiment, the second method further includes: storing velocity and yaw angle in association with frames in the video associated with the midpoint; and training a model based on velocity and yaw angle using one or more machine learning techniques.

[0140] In a seventh related embodiment of the second specific embodiment, the second method further includes: selecting a first frame in a first video segment; selecting a second frame in a second video segment; generating a first velocity along a first dimension in the yaw direction of a first moving object associated with the first frame; associating the first velocity with the first frame; generating a second velocity along a second dimension in the yaw direction of the first moving object; associating the second velocity with the first frame; generating a first specific velocity along the first dimension in the yaw direction of a second moving object associated with the second frame; associating the first specific velocity with the second frame; generating a second specific velocity along the second dimension in the yaw direction of the second moving object; associating the second specific velocity with the second frame; generating a ratio based on the first velocity, the second velocity, the first specific velocity, and the second specific velocity; and generating a yaw increment value based on the arctangent of the ratio.

[0141] In a third specific embodiment, a third method includes: (1) selecting a first frame in a first video segment; (2) selecting a second frame in a second video segment; (3) generating a first velocity along a first dimension in the yaw direction of a first moving object associated with the first frame; (4) generating a second velocity along a second dimension in the yaw direction of the first moving object; (5) generating a first specific velocity along the first dimension in the yaw direction of a second moving object associated with the second frame; (6) generating a second specific velocity along the second dimension in the yaw direction of the second moving object; (7) generating a ratio based on the first velocity, the second velocity, the first specific velocity, and the second specific velocity; and (8) generating a yaw increment value based on the arctangent of the ratio.

[0142] In a related embodiment of a third specific embodiment of the third method, the first video segment is captured from a first camera attached to a first moving object, and the second video segment is captured from a second camera attached to a second moving object different from the first moving object.

[0143] In a second related embodiment of the third specific embodiment, the third method further includes: training a model based on yaw increment values ​​using one or more machine learning techniques.

[0144] Hardware Overview

[0145] According to one embodiment, the techniques described herein are implemented by one or more dedicated computing devices. The dedicated computing device may be hardwired to execute the techniques, or may include digital electronic devices permanently programmed to execute the techniques, such as one or more application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs), or may include one or more general-purpose hardware processors programmed to execute the techniques according to program instructions in firmware, memory, other storage devices, or combinations thereof. Such a dedicated computing device may also combine custom hardwired logic, ASICs, or FPGAs with custom programming to implement the techniques. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a networking device, or any other device that combines hardwired and / or program logic to implement the techniques.

[0146] For example, Figure 7 This is a block diagram illustrating a computer system 700 on which embodiments of the present invention may be implemented. The computer system 700 includes a bus 702 or other communication mechanism for transmitting information and a hardware processor 704 coupled to the bus 702 for processing information. The hardware processor 704 may be, for example, a general-purpose microprocessor.

[0147] Computer system 700 also includes main memory 706, such as random access memory (RAM) or other dynamic storage devices, coupled to bus 702 for storing information and instructions to be executed by processor 704. Main memory 706 can also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 704. When such instructions are stored in non-transitory storage media accessible to processor 704, such instructions make computer system 700 a dedicated machine customized to perform the operations specified in the instructions.

[0148] The computer system 700 also includes a read-only memory (ROM) 708 or other static storage device coupled to the bus 702 for storing static information and instructions of the processor 704. A storage device 710, such as a disk, optical disk, or solid-state drive, is provided and coupled to the bus 702 for storing information and instructions.

[0149] Computer system 700 can be coupled via bus 702 to a display 712, such as a cathode ray tube (CRT), for displaying information to a computer user. Input device 714, including alphanumeric keys and other keys, is coupled to bus 702 for transmitting information and command selections to processor 704. Another type of user input device is a cursor control 716, such as a mouse, trackball, or arrow keys, for transmitting directional information and command selections to processor 704 and for controlling cursor movement on display 712. Such input devices typically have two degrees of freedom on two axes (a first axis (e.g., x) and a second axis (e.g., y)) to allow the device to specify a position in a plane.

[0150] Computer system 700 may implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic, which, in combination with the computer system, enable computer system 700 to become a special-purpose machine or to program computer system 700 as a special-purpose machine. According to one embodiment, the techniques herein are executed by computer system 700 in response to processor 704 executing one or more sequences of one or more instructions contained in main memory 706. These instructions may be read into main memory 706 from another storage medium, such as storage device 710. Execution of the sequence of instructions contained in main memory 706 causes processor 704 to perform the processing steps described herein. In alternative embodiments, hard-wired circuitry may be used instead of software instructions or in combination with software instructions.

[0151] As used herein, the term "storage medium" refers to any non-transitory medium that stores data and / or instructions that enable a machine to operate in a particular manner. Such storage media can include non-volatile media and / or volatile media. Non-volatile media include, for example, optical discs, magnetic disks, or solid-state drives, such as storage device 710. Volatile media include dynamic memory, such as main memory 706. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with a perforated pattern, RAM, PROMs and EPROMs, FLASH-EPROMs, NVRAMs, any other memory chips, or magnetic tape cassettes.

[0152] Storage media differ from transmission media but can be used in conjunction with them. Transmission media participate in the transfer of information between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, including wires containing bus 702. Transmission media can also take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.

[0153] Various forms of media can involve carrying one or more sequences of one or more instructions to processor 704 for execution. For example, the instructions may initially be carried on a disk or solid-state drive of a remote computer. The remote computer may load the instructions into its dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 700 may receive data over the telephone line and convert the data into an infrared signal using an infrared transmitter. An infrared detector may receive the data carried in the infrared signal, and appropriate circuitry may place the data on bus 702. Bus 702 carries the data to main memory 706, from which processor 704 retrieves and executes the instructions. The instructions received by main memory 706 may optionally be stored on storage device 710 before or after execution by processor 704.

[0154] Computer system 700 also includes a communication interface 718 coupled to bus 702. Communication interface 718 provides bidirectional data communication coupled to network link 720, which is connected to local network 722. For example, communication interface 718 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem providing data communication connectivity to a corresponding type of telephone line. As another example, communication interface 718 may be a LAN card providing data communication connectivity to a compatible local area network (LAN). A wireless link may also be implemented. In any such implementation, communication interface 718 transmits and receives electrical, electromagnetic, or optical signals carrying streams of digital data representing various types of information.

[0155] Network link 720 typically provides data communication to other data devices via one or more networks. For example, network link 720 may provide a connection to host computer 724 or to data devices operated by Internet Service Provider (ISP) 726 via local network 722. ISP 726, in turn, provides data communication services via a global packet data communication network now commonly referred to as the "Internet" 728. Both local network 722 and Internet 728 use electrical, electromagnetic, or optical signals that carry digital data streams. Signals through various networks, as well as signals on network link 720 and through communication interface 718, are example forms of transmission media that carry digital data to or from computer system 700.

[0156] Computer system 700 can send messages and receive data, including program code, through one or more networks, network links 720, and communication interfaces 718. In the Internet example, server 730 can transmit requested code for the application through the Internet 728, ISP 726, local network 722, and communication interface 718.

[0157] The received code can be executed by processor 704 when it is received, and / or stored in storage device 710 or other non-volatile storage device for later execution.

[0158] According to some embodiments, a system including one or more computing devices has means for performing operations, including those disclosed in this document and / or recited in any method claim. According to other embodiments, a computer program product includes instructions that, when executed by one or more computing devices, cause the one or more computing devices to perform operations, including those disclosed in this document and / or recited in any method claim. According to still other embodiments, a computer-readable medium includes instructions that, when executed by one or more computing devices, cause the one or more computing devices to perform operations, including those disclosed in this document and / or recited in any method claim.

[0159] Software Overview

[0160] Figure 8 This is a block diagram of a basic software system 800 that can be used to control the operation of computer system 700. The software system 800 and its components, including their connections, relationships, and functions, are intended to be exemplary only and are not intended to limit the implementation of one or more of the example embodiments. Other software systems suitable for implementing one or more example embodiments may have different components, including components with different connections, relationships, and functions.

[0161] A software system 800 is provided to instruct the operation of the computer system 700. The software system 800, which may be stored on system memory (RAM) 706 and fixed storage devices (e.g., hard disk or flash memory) 710, includes a kernel or operating system (OS) 810.

[0162] OS 810 manages the low-level aspects of computer operations, including managing process execution, memory allocation, file input and output (I / O), and device I / O. One or more applications, designated 802A, 802B, 802C…802N, can be “loaded” (e.g., transferred from fixed storage device 710 to memory 706) for execution by system 800. Applications or other software intended for use on computer system 700 can also be stored as downloadable computer-executable instruction sets, for example, for downloading and installation from Internet locations (e.g., web servers, app stores, or other online services).

[0163] Software system 800 includes a graphical user interface (GUI) 815 for receiving user commands and data graphically (e.g., "click" or "touch gestures"). These inputs can then be manipulated by system 800 according to instructions from operating system 810 and / or (one or more) applications 802. GUI 815 also displays the results of operations from OS 810 and (one or more) applications 802, to which the user can provide additional input or terminate the session (e.g., log off).

[0164] OS 810 can execute directly on the bare hardware 820 of computer system 700 (e.g., one or more processors 704). Alternatively, a hypervisor or virtual machine monitor (VMM) 830 can be inserted between the bare hardware 820 and OS 810. In this configuration, VMM 830 acts as a software "buffer" or virtualization layer between OS 810 and the bare hardware 820 of computer system 700.

[0165] VMM 830 instantiates and runs one or more virtual machine instances (“guest machines”). Each guest machine includes a “guest” operating system (such as OS 810) and one or more applications designed to run on the guest operating system, such as application(s)802. VMM 830 presents a virtual operating platform to the guest operating system and manages the execution of the guest operating system.

[0166] In some instances, VMM 830 can allow a guest operating system to run as if it were running directly on the bare hardware 820 of the computer system 700. In these instances, the same version of the guest operating system configured to run directly on the bare hardware 820 can also run on VMM 830 without modification or reconfiguration. In other words, VMM 830 can provide full hardware and CPU virtualization to the guest operating system in some instances.

[0167] In other instances, the guest operating system can be specifically designed or configured to run on VMM 830 for improved efficiency. In these instances, the guest operating system is "aware" that it is running on the virtual machine monitor. In other words, VMM 830 can provide paravirtualization to the guest operating system in some instances.

[0168] Computer system processes include the allocation of hardware processor time, as well as the allocation of (physical and / or virtual) memory, memory allocation for storing instructions executed by the hardware processor, memory allocation for storing data generated by the execution of instructions by the hardware processor, and / or memory allocation for storing hardware processor state (e.g., register contents) between hardware processor time allocations when the computer system process is not running. Computer system processes run under the control of the operating system and can also run under the control of other programs executing on the computer system.

[0169] The basic computer hardware and software described above are intended to illustrate the basic underlying computer components that can be used to implement one or more example embodiments. However, the one or more example embodiments are not necessarily limited to any particular computing environment or computing device configuration. Instead, the one or more example embodiments can be implemented in any type of system architecture or processing environment that a person skilled in the art will understand from this disclosure as capable of supporting the features and functionality of the one or more example embodiments presented herein.

[0170] cloud computing

[0171] This article generally uses the term "cloud computing" to describe a computing model that enables on-demand access to a shared pool of computing resources, such as computer networks, servers, software applications, and services, and allows for the rapid provisioning and release of resources with minimal management effort or service provider interaction.

[0172] Cloud computing environments (sometimes called cloud environments or the cloud) can be implemented in various ways to best suit different requirements. For example, in a public cloud environment, the underlying computing infrastructure is owned by an organization that makes its cloud services available to other organizations or the general public. In contrast, private cloud environments are generally designed for use by a single organization or within a single organization. Community clouds are designed to be shared by several organizations within a community; while hybrid clouds include two or more types of clouds (e.g., private, community, or public) bound together by data and application portability.

[0173] Generally, cloud computing models enable some of the responsibilities that might have previously been provided by an organization's own IT department to be delivered as service layers within a cloud environment for use by consumers (inside or outside the organization, depending on the public / private nature of the cloud). Depending on the specific implementation, the precise definition of the components or features provided by or within each cloud service layer can vary, but common examples include: Software as a Service (SaaS), where consumers use software applications running on cloud infrastructure, while the SaaS provider manages or controls the underlying cloud infrastructure and applications; Platform as a Service (PaaS), where consumers can use software programming languages ​​and development tools supported by the PaaS provider to develop, deploy, and otherwise control their own applications, while the PaaS provider manages or controls other aspects of the cloud environment (i.e., everything in the runtime execution environment); and Infrastructure as a Service (IaaS), where consumers can deploy and run arbitrary software applications and / or provide processing, storage, networking, and other basic computing resources, while the IaaS provider manages or controls the underlying physical cloud infrastructure (i.e., everything below the operating system layer). Database as a Service (DBaaS) is a service in which consumers use database servers or database management systems running on cloud infrastructure, while DbaaS providers manage or control the underlying cloud infrastructure, applications, and servers, including one or more database servers.

[0174] In the foregoing description, embodiments have been described with reference to numerous specific details that vary depending on the implementation. Accordingly, the description and drawings should be considered illustrative rather than restrictive. The sole and exclusive reference to the scope of the invention, and the content that the applicant intends to define as the scope of the invention, is the literal and equivalent scope of the set of claims issued in this application, in the specific form of such claims, including any subsequent corrections.

Claims

1. A method comprising: Store a sequence of points, each point corresponding to a different set of Cartesian coordinates; Generate a curve that approximates a line passing through the sequence of points; Based on the curve, generate a set of points on the curve, wherein the set of points is different from the point sequence; Generate new Cartesian coordinates for each point in the set of points; After generating new Cartesian coordinates, determine the Cartesian coordinates of the position of the moved object; Determine the specific point on the curve that is closest to the position; The method is performed by one or more computing devices.

2. The method of claim 1, further comprising: Before generating the curve, the point sequence is smoothed using a low-pass filter.

3. The method according to any one of claims 1-2, further comprising: Before generating the curve, duplicate points are removed from the point sequence.

4. The method according to any one of claims 1-3, further comprising: After generating new Cartesian coordinates for each point in the set of points, a two-dimensional KD tree is generated based on the set of points.

5. The method of claim 4, wherein determining the specific point comprises using the Cartesian coordinates of the location and the two-dimensional KD tree to determine the specific point.

6. The method of any one of claims 1-5, further comprising, after generating new Cartesian coordinates for each point in the set of points: Generate a unit vector for each pair of adjacent points in the set of points; Calculate the angle of the normal vector at each point in the set of points; or Calculate the longitudinal distance from the starting point of the curve to each point in the set of points.

7. The method according to any one of claims 1-6, further comprising: Generate a first cubic spline, which maps the S value at each point in the set of points to the corresponding x value in the x-coordinate dimension; Generate a second or third cubic spline, which maps the S value at each point in the set of points to the corresponding y value in the y-coordinate dimension.

8. The method of claim 7, further comprising: Determine the s and d values ​​for a specific location of a particular moving object; The x-coordinate on the curve is determined based on the s-value and the first and third cubic splines; The y-coordinate on the curve is determined based on the s-value and the cubic spline. The updated x-coordinate is calculated based on the x-coordinate, d-value, and the cubic spline. The updated y-coordinate is calculated based on the y-coordinate, d-value, and the fourth cubic spline. The updated x-coordinate is compared with the original y-coordinate at the specific location; The updated y-coordinate is compared with the original y-coordinate at the specific location.

9. The method of any one of claims 1-8, wherein the specific point is the point on the curve closest to the location, the method further comprising: Determine the second closest point on the curve to the given position; Based on the nearest point and the second nearest point, identify the point on the curve located between the nearest point and the second nearest point.

10. The method of claim 9, further comprising: Determine the first increment value, which is the difference between the x-coordinate of the nearest point and the x-coordinate of the second nearest point; Determine the second increment value, which is the difference between the y-coordinate of the nearest point and the y-coordinate of the second nearest point; Determine a third increment value, which is the difference between the x-coordinate of the stated position and the x-coordinate of the nearest position; Determine the fourth increment value, which is the difference between the y-coordinate of the stated position and the y-coordinate of the nearest position; The points are identified based on a first increment value, a second increment value, a third increment value, and a fourth increment value.

11. The method of claim 10, further comprising: The projection norm is generated based on the first, second, third, and fourth increment values; The Cartesian coordinate increment is generated based on the projection norm, the first increment value, and the second increment value. The points are identified based on Cartesian coordinate increments.

12. The method of claim 11, further comprising: Generate distances based on Cartesian coordinate increments; Determine whether the second nearest point is before or after the nearest point on the reference line; Based on the determination, the distance is added to the nearest point or subtracted from the nearest point.

13. The method of any one of claims 1-10, further comprising: Calculate the distance between the location and the specific point; Determine the second point on the curve; Calculate the angle between two vectors, where each vector is based on the second point; The location is determined based on the angle, indicating which side of the curve the position lies on.

14. A storage medium for storing one or more instructions, which, when executed by one or more computing devices, cause to perform the method as described in any one of claims 1-13.

Citation Information

Patent Citations

  • High-precision localization of a moving object on a trajectory

    US12579662B2