Regression of Rail Alignments from Survey Points
20260103852 ยท 2026-04-16
Assignee
Inventors
- Flavia Dobrescu (Bucharest, RO)
- Wojciech Garczewski (Krakow, PL)
- Qiang Wu (Shanghai, CN)
- Valentin R. Koch (St-Legier, CH)
Cpc classification
E01B29/16
FIXED CONSTRUCTIONS
International classification
Abstract
A method and system provide the ability to align a railway track. Survey representing the track are obtained. A centerline of the railway track and curvatures are autonomously computed based on the survey points. Geometry is detected based on the curvature plot and provides for geometry types including a tangent, a spiral, and a curve. An alignment is displayed and includes a curvature plot that includes the detected geometry with each geometry type displayed in a visually distinguishable manner. Parameters of the detected geometry are changed and the alignment is dynamically updated. The alignment is then exported to a physical machine that aligns the railway track consistent with the alignment.
Claims
1. A computer-implemented method for aligning a railway track, comprising: obtaining survey points that represent the railway track, wherein the railway track is a physical real world railway track; autonomously computing a centerline of the railway track based on the survey points; autonomously computing curvatures based on the survey points and centerline, wherein the computing comprises plotting the curvatures on a curvature plot; detecting geometry based on the curvature plot, wherein the detected geometry comprises geometry types, wherein the geometry types comprise a tangent, a spiral, and a curve; displaying an alignment on a graphical user interface, wherein: the displayed alignment comprises the curvature plot; the detected geometry is displayed on the curvature plot; each geometry type is displayed in a visually distinguishable manner from other geometry types; changing parameters of the detected geometry; dynamically updating the alignment based on the changed parameters; exporting the alignment to a physical machine that aligns the railway track consistent with the alignment.
2. The computer-implemented method of claim 1, wherein the autonomously computing the curvatures comprises: for each triplet of the survey points: placing an arc over the triplet; autonomously computing a curvature of the arc; assigning the curvature to one or more of the survey points in the triplet; assigning a station value that represents a distance from a start or end of the alignment that is assigned to that curvature; and creating the curvature plot that contains new points formed by the station value and the curvature, wherein an x-axis of the curvature plot comprises station values, and a y-axis of the curvature plot comprises curvature values.
3. The computer-implemented method of claim 1, further comprising: smoothing the curvature plot.
4. The computer-implemented method of claim 1, wherein the displayed alignment further comprises an offset graph that visualizes comparative differences between the survey points and the detected geometry.
5. The computer-implemented method of claim 1, wherein the alignment further comprises a station navigator comprising a zoomed out depiction of the curvature plot with a rectangle highlighting a particular segment of the zoomed out depiction of the curvature plot that determines which segment is visible in the displayed alignment of the curvature plot.
6. The computer-implemented method of claim 1, wherein: the displayed alignment further comprises a tabular view of segment properties that describes geometric properties of each detected geometry in numerical form; the tabular view communicates with the curvature plot and displayed information is correlated; the changing the parameters further comprises modifying numbers in a table cell of the tabular view; and the dynamically updating the alignment reflects the modified numbers in the curvature plot.
7. The computer-implemented method of claim 1, wherein: the displayed alignment further comprises a tabular view of point properties that describes properties of each survey point in numerical form; the tabular view communicates with the curvature plot and displayed information is correlated; the changing the parameters further comprises modifying numbers in a table cell of the tabular view; and the dynamically updating the alignment reflects the modified numbers in the curvature plot.
8. The computer-implemented method of claim 1, wherein: the alignment that is displayed comprises a visualization of the alignment in multiple equivalent representations that are displayed simultaneously from different points of view on the graphical user interface.
9. A computer-implemented method for aligning a railway track, comprising: (a) obtaining survey points that represent the railway track, wherein the railway track is a physical real world railway track; (b) autonomously computing a centerline of the railway track based on the survey points; (c) autonomously computing curvatures based on the survey points and centerline, wherein the computing comprises plotting the curvatures on a curvature plot; (d) detecting geometry based on the curvature plot, wherein: (1) the detected geometry comprises geometry types; (2) the geometry types comprise a tangent, a spiral, and a curve; (3) the detecting comprises a sliding window that iteratively steps over the curvature plot until all survey points in the curvature plot are processed; (4) at each step: (i) analyzing data in the sliding window to determine start and end points of the geometry types; (e) providing the start and end points to an alignment solver that creates an alignment geometry using a geometry solver; (f) exporting the alignment geometry to a physical machine that aligns the railway track consistent with the alignment.
10. The computer-implemented method of claim 9, wherein the analyzing comprises linear regression, dynamic programming, and statistical checks.
11. The computer-implemented method of claim 9, wherein the analyzing comprises statistical analysis and comprises: reading a set of k consecutive points from the curvature plot within the sliding window; processing the set of points using a segmentation method to divide the curvature plot into a set of consecutive segments; analyzing each of the consecutive segments to determine its geometric properties, wherein the geometric properties comprise: a slope of each segment; and statistical measures of curvature values; and classifying each segment as either a tangent, curve, or spiral based on the geometric properties.
12. The computer-implemented method of claim 11, wherein the classifying comprises: determining that the slope of the segment is below a predefined threshold; determining, based on the slope below the predefined threshold, that the segment is considered flat and can be classified as either a tangent or a curve; based on the statistical measures, distinguishing between the tangent or the curve for the flat segment.
13. The computer-implemented method of claim 11, wherein the classifying comprises: determining that the slope of the segment is above a predefined threshold; determining, based on the slope above the predefined threshold, that the segment is part of a spiral; evaluating a length of the segment and continuity with a previous segment to determine whether to merge the segment with an existing spiral or classify the segment as a new geometric feature.
14. The computer-implemented method of claim 13, wherein the evaluating comprises: checking for changes in curvature to identify potential spiral transitions; comparing statistical measures of the segment to statistical measures of previous segments to determine whether to add a tangent, curve, or spiral at the potential spiral transition.
15. The computer-implemented method of claim 9, wherein the analyzing utilizes a machine learning model comprising: from survey points (x,y), computing signals, wherein the signals comprise a bearing, a station, and a curvature; for each of the survey points, based on the signals, building input vectors that describe which signals are included in that survey point; normalizing the input vectors; constructing a sequence by cutting the signals into overlapping windows of a fixed length; defining a machine learning (ML) model wherein the ML model: is trained to predict a class, for each survey point; receives the survey points as input and outputs a class from a predefined list of classes for each survey point, extracts local patterns using 1D convolutions; and uses a bidirectional long short-term memory (LSTM) to understand how patterns evolve along the railway track.
16. The computer-implemented method of claim 15, wherein the 1D convolution: acts as a sliding detector; spots curvature typical for a circular curve; spots curvature typical for a tangent; spots linear ramps in curvature typical for a spiral increasing or decreasing; recognizes a local turn or arc shape in an (x,y) view; distinguishes steady bearing changes from flat bearing; and uses an absolute curvature channel to stabilize detection of spiral boundaries.
17. The computer-implemented method of claim 15, wherein the LSTM: analyzes how local patterns change along the railway track; maintains a running memory of what came before and what comes next on the railway track; confirming that a first segment is part of a second segment, wherein the second segment is longer than the first segment; follow ramps in curvature to identify spirals; and places boundaries between tangents, curves, and spirals by using context on both sides.
18. The computer-implemented method of claim 15, further comprising: grouping consecutive points with a same class into segments; converting each segment into a geometry primitive; connecting, using the geometry solver, each geometry primitive while enforcing smooth joins.
19. The computer-implemented method of claim 9, wherein the analyzing utilizes a machine learning model comprising: from the survey points, computing signals, wherein the signals comprise a bearing, a station, and a curvature; normalizing the curvature by symmetric percentile scaling; assembling feature sequences, from the curvature, in a selected mode; utilizing a machine learning (ML) model to: classify each of the survey points with a dual-branch or hybrid sequence model; aggregating overlapping-window predictions by majority voting; performing direction-aware segmentation that preserves spiral increasing (SI) and spiral decreasing (SD); generating alignment primitives; and invoking group solvers to output a connected alignment.
20. The computer-implemented method of claim 19, further comprising: selecting the feature sequences from a library.
21. The computer-implemented method of claim 19, further comprising: applying temporal logit smoothing.
22. The computer-implemented method of claim 19, further comprising: tuning window length or stride.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
DETAILED DESCRIPTION OF THE INVENTION
[0029] In the following description, reference is made to the accompanying drawings which form a part hereof, and which is shown, by way of illustration, several embodiments of the present invention. It is understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention.
Overview
[0030] Embodiments of the invention provide a workflow that incorporates two new concepts: firstly, it facilitates the automatic detection and creation of the continuous alignment, and secondly, it allows the user to modify and alter the alignment geometry, while being simultaneously guided by displayed meta information such as curvature and offset distance to survey pointsall combined within the same view. In embodiments of the invention, detection may be conducted using statistical properties or through machine learning processes. Depending on the accuracy, the detection will already undertake a significant portion of the traditional workflow, which will save time. Where the detection is imprecise, the user can swiftly edit and rectify the alignment using the combined alignment, curvature, and offset graph view.
[0031] Geometries are visualized in both the curvature and the alignment preview, enabling a user to rapidly see where entities start and end. The alignment's geometries can be visualized using different colors in the radius graph and on the real alignment plot.
[0032] Furthermore, geometries can be displayed in an alignment table, which could facilitate easy editing of start and end points, along with other geometry parameters. The tables may also be utilized for verification of results by inspecting the offset values between surveyed points and regression alignment geometries. Additionally, they may be used to exclude erroneous points or assign weights to the points.
[0033] Key features of the Horizontal Regression Analysis workflow may include: [0034] Modern engine that identifies lines, curves and spirals; [0035] A streamlined, iterative process that allows users to easily refine results; [0036] Generation of a design-ready CAD application alignment; and [0037] Generation of detailed skew reports
Process Workflow
[0038]
[0039] At step 104, the imported data is organized/prepared. For example, the data may be prepared using preferred presets for the purpose of a particular project. Depending on the context, such settings may be made according to standards of a user's design firm, national standards, or individual preference. In any case, the choices made at this step have the role customize the characteristics of the alignment that will be output. The order of the workflow's steps do not have a defining role over the concept. For instance, many of the settings (e.g., naming the geometry) may also be made at a later point in the process without altering the concept. As an example, within an alignment settings selection, the user may decide on presets that fine-tune the final alignment including aspects such as the name of the resulting object, the layer where the alignment will be placed, and/or the station numbering convention (e.g., distance along the alignment).
[0040] At step 106, the centerline of the path(s) is (autonomouslyi.e., without any additional user input) computed (based on the survey points). In this regard, survey points may represent one of the rail tracks or the centerline between two tracks.
Curvature Computations 108
[0041] At step 108, the curvatures are (autonomously) computed. Such computing may include plotting the curvatures on a curvature plot. More specifically, for each consecutive triplet of survey points, an arc is placed over the triplet, and the curvature of this arc is (autonomously) computed. That curvature is then assigned to one or more of the survey points in the triplet, and a station value that may represent a distance from the start or end of the alignment is assigned to that curvature value. The curvature plot may then be created and contains new points formed by the station and curvature values.
[0042] Different methods may be chosen to compute the curvature from the three points. Two commonly used ones are versine curvature and menger curvature.
Versine Curvature
[0043] Consider the points A, B, and C that form a triplet. Furthermore, consider the point D that lies perpendicular to B on the line segment from A to C. We define the distances:
where .Math..sub.2 is the Euclidean distance. Then the radius R of the circle that circumscribes the three points A, B, and C can be computed by the Versine formula:
The curvature is then just the reciprocal of R. This method to compute curvature is an approximation to the real curvature, which is popular among surveyors for its simplicity.
Menger Curvature
[0044] Consider the points mentioned above. Furthermore, consider the area S of the triangle formed by A, B, and C. Then the Menger Curvature can be calculated by
Curvature Plot Smoothing
[0045] Step 108 may also include the smoothing of the curvature plot 200. Let the original curvature plot 200 be defined by n points of the form (t.sub.i, y.sub.i), i=1,2, . . . , n, where t.sub.i denotes the distance or station along the alignment, measured from the start, and y.sub.i
denotes the elevation at the station t.sub.i.
Moving Average
[0046] For the moving average, we use a moving window of size k and replace the points in the curvature plot 200 by (t.sub.i, x.sub.i), i=1,2, . . . , nk, where
[0047] In this case, the last k points are truncated or replaced by a fixed value. The moving average can be calculated similarly by truncating or fixing the first k points, or by truncating or fixing on both sides up to k points.
L.SUB.1 .Regularization
[0048] Consider the three consecutive curvature points (t.sub.1,y.sub.1), (t.sub.2,y.sub.2), (t.sub.3,y.sub.3). Let
and let .Math. be the L.sub.1 norm defined by
where is a vector of length n, and |.Math.| denotes the absolute value. Then the grade change minimization between the three points can be stated as
[0049] Expanding this to n points in a curvature plot can be stated as
[0050] Solving this problem would result in a straight line. To preserve the shape of the original curvature plot 200, we introduce the smoothing coefficient and restate our problem as
The problem can be written in matrix form as
where b and m=2n2. The problem can then be written as a Linear Program:
Geometry Detection 110
[0051] At step 110, geometries are detected in the curvature plot 200. Such detected geometry includes geometry types that consist of a tangent, a spiral, and a curve. The smoothed or un-smoothed curvature plot 200 can be regarded as a signal on an x, y plot. The x-axis represents the stations or distance from the beginning or another marker point of the alignment, and the y-axis represents the curvature value at that station. For points on tangents 202, curvature values are around zero, whereas for arcs or curves 204, the values are non-zero (positive or negative) but stay constant along the stations that belong to the curve. Points between curves and tangents usually rise or fall linearly, indicating a spiral 206 or clothoid. In other terms, the curvature plot 200 represents the mathematical derivative of the alignment geometries 202-206.
[0052] As mentioned above, the automated geometry detection 110 of embodiments of the invention may be based on a sliding window of arbitrary size k, that reads in k consecutive points (t.sub.i, x.sub.i) from the curvature plot 200. The size k could be chosen as a small number or include all points of the curvature plot 200. An analysis method is then run for the points in the window.
[0053] Two different approaches may be utilized to detect geometry at step 110a statistical analysis approach and a machine learning approach. Both approaches are described in detail below.
Statistical Analysis
[0054]
[0055] In this regard, the algorithm 304 is run for each segment left (as determined at step 306) in the curvature plot. Once the algorithm 302 has divided the curvature plot into all of the segments S, the process continues.
[0056] At step 308, each segment s E S is then analyzed to determine its geometric properties. In this regard, for each segment/tangent, and statistical measures (e.g., the slope, median, and quartiles) are obtained. More specifically, the slope m of each segment is calculated, and statistical measures such as the median .sub.1/2, lower quantile q.sub.l, and upper quantile q.sub.u of the curvature values are obtained. Based on these measurements/geometric properties, the method classifies each segment as either a tangent, curve, or spiral.
[0057] A determination is made at step 310 regarding whether the slope is flat or not (i.e., whether it is below a predefined threshold). If the slope of a segment is below a predefined threshold , the segment is considered flat (and the process continues to
[0058] As illustrated in
[0059] If the segment is longer than the minimum spiral, a determination is made at step 320 regarding whether the segment is on a tangent. Thereafter, further checks of the median (via steps 322-328) and quantiles (via steps 330-336) help distinguish between these two geometries. More specifically, if not on a tangent (as determined at step 320), a determination is made at step 322 regarding whether there are opposite sign quartiles or a small median. If the quartile signs are not opposite or the median is not small, it is determined that the segment is on the previous curve at step 324. However, if the quartiles have opposite signs or there is small median, the curve geometric segment is ended at step 326 and the tangent geometric segment is started at step 328.
[0060] Returning to step 320, if the segment is on a tangent, a determination is made at step 330 regarding whether the quartiles have the same sign. If not, it is determined that the segment is on a previous tangent at step 332. If the quartiles have the same sign, the tangent segment is ended at step 334, and a new curve geometric segment is started at step 336.
[0061] Returning to
[0062] If the segment was on a spiral before (as determined at step 338), a determination is made at step 350 regarding whether a significant spiral change has happened. If not, the process continues with the next segment (back to
[0063] The method iteratively processes (via steps 306) all points in the curvature plot until no more points are left. It tracks previous segments to connect them with segments in subsequent windows if they form the same geometry. Segments representing spirals may be merged to form a single spiral. The method also keeps track of consecutive spirals and removes or inserts curves where necessary.
[0064] In view of the above,
TABLE-US-00001 TABLE A Require: Curvature Plot, 1 repeat 2 Read k points for Tim 3 Run Bellman to obtain segments S 4 for all sS do 5 Read curvature values C from s 6 m slope of s 7 .sub.1/2 median of C 8 q.sub.u an upper quantile of C 9 q.sub.l a lower quantile of C 10 if |m| then 11 if previous s was a spiral? Then 12 Add a spiral and start tangent or curve. 13 else 14 if s is longer than some minimum spiral length? Then 15 if previous s is a tangent? Then 16 if sign(q.sub.u)sign (q.sub.l) then 17 Add tangent and start curve. 18 else 19 Stay on previous tangent. 20 end if 21 else 22 if .sub.1/2 is small or sign(q.sub.u)sign (q.sub.l) then 23 Add a curve and start tangent. 24 else 25 Stay on previous curve. 26 endif 27 endif 28 endif 29 endif 30 else 31 if previous s was a spiral? Then 32 if significant spiral change happened? Then 33 Add a spiral and start new spiral. 34 else 35 *.sub.1/2 median of previous C 36 q*.sub.u an upper quantile of previous C 37 q*.sub.l a lower quantile of previous C 38 if *.sub.1/2 is small or sign (q*.sub.u) sign (q*.sub.l) then 39 Add a tangent and start spiral. 40 else 41 Add a curve and start spiral. 42 endif 43 endif 44 endif 45 endif 46 end for 47 until no more points are left
Machine Learning Analysis
[0065] In a machine learning approach, the system performs classification of sequences of survey points to detect the railway geometry. For each survey point, it produces one of four labels in a 4-class system: Tangent (T), Curve (C), Spiral Increasing (SI), and Spiral Decreasing (SD). These classifications feed a geometry solver that generates a connected best-fit alignment.
[0066] From survey points (x, y) we compute bearing (direction of travel), station (distance along the track), and curvature (how sharply the track bends). Curvature may use the versine or Menger formulas (as described above). For each of the survey points, based on the signals, we then build input vectors using named feature modes that describe which signals are included (in that survey point):
TABLE-US-00002 sc: [station, curvature] scC: [station, curvature, |curvature|] (adds absolute curvature for clearer spiral boundaries) xysc: [x, y, station, curvature] xysC: [x, y, station, |curvature|] xycC: [x, y, curvature, |curvature|] xybc: [x, y, bearing, curvature] xyscC: [x, y, station, curvature, |curvature|] xybsc: [x, y, bearing, station, curvature] xybscC: [x, y, bearing, station, curvature, |curvature|]
[0067] Any of these feature modes can be used as input to the classification model; the choice depends on which signals are available and the desired robustness.
[0068] The inputs are then normalized so the model sees similar value ranges during training and in use. For curvature, a symmetric percentile scaling may be used: typical large positive and negative curvature values are estimated (for example the 95th percentile magnitudes) across data, then positives and negatives are scaled by their own constants and clipped to [1,1]. This keeps left/right bends balanced and helps the model recognize spirals. Standard scaling and a legacy station/curvature scheme are also available.
[0069] Once normalized, a sequence is constructed. The signal is cut into overlapping windows of a fixed length (for example 200-500 points). A small overlap helps smooth the result at window boundaries. Only the last, shorter fragment is padded if needed.
[0070] An ML Model is then defined that is trained to predict a class for each survey point by receiving the survey point as input and outputting a class from a predefined list of classes (for each survey point).
[0071] Exemplary ML model embodiments may utilize a hybrid network as the default model. Such embodiments may first use 1D convolutions (Conv1D) to extract local patterns, then a bidirectional LSTM (long short term memory) to understand how those patterns evolve along the (railway) track, and finally a small classifier that outputs one of the four classes for each survey point. Alternative versions can add residual connections or use attention layers, but the overall idea is the same: recognize local shapes, then use context over distance.
[0072] Conv1D layers act like small sliding detectors. Over short spans of points they can, for example: [0073] spot nearly constant curvature (typical for a circular curve), [0074] spot curvature near zero (typical for a tangent), [0075] spot small linear ramps in curvature (typical for a spiral increasing or decreasing), [0076] recognize a gentle local turn or arc shape in the (x, y) view, [0077] distinguish steady bearing changes (curves/spirals) from flat bearing (tangents), [0078] use the absolute curvature channel to stabilize the detection of spiral boundaries.
[0079] An LSTM (Long Short-Term Memory) layer then looks at how these local patterns change along the track. It keeps/maintains a running memory of what came before and what comes next (when bidirectional), while also forgetting noise. In practice, this helps the model: [0080] confirm that a short curve-like patch is truly part of a longer curve (i.e., that a first segment is part of a second longer segment); [0081] follow gradual ramps in curvature to identify spirals reliably; amd [0082] place cleaner boundaries between tangents, curves, and spirals by using context on both sides.
[0083] The model can be trained to predict the correct geometry class for each survey point. The training objective encourages correct classifications and stable boundaries between regions, so results are both accurate and smooth along the track.
[0084] Inference Pipelinewhen classifying a new alignment, the same overlapping window may slide along the data. Each window makes its own prediction; where windows overlap, their opinions may be combined by simple majority voting. A small smoothing step (for example, taking the majority in a short neighborhood) removes isolated misclassifications. The result is one stable label per survey point.
[0085] Direction-Aware Segmentation and Mergingconsecutive points with the same label/class may be grouped into segments and very short segments (likely noise) can be dropped. Because spirals can increase or decrease in curvature, SI and SD may be kept separate so transitions are respected. Simple rules decide when neighboring segments can be merged (for example, tangent next to tangent).
[0086] Integration with Geometry SolverEach segment becomes/is converted into a simple geometry primitive (tangent, curve with a sign for left/right, or spiral with increase/decrease). A solver then connects these pieces (i.e., each geometry primitive) while enforcing smooth joins (tangency). If a larger group cannot be solved, the system tries smaller groups or flags the spot for a quick manual check.
[0087] Training Data GenerationEmbodiments of the invention may use synthetic supervision with increasing realism: [0088] Phase 1: Basic patterns with controlled noise to establish core recognition. [0089] Phase 2: Wear simulation across noise intensities (light.fwdarw.severe) conditioned on asset factors (age, maintenance, traffic). [0090] Phase 3: Challenging compositions (long spirals, rapid transitions, compound curves; spiral-curve-spiral) and a fraction of clean references to sharpen boundaries. Complex pattern injection increases robustness.
[0091] These datasets mirror feature computation and normalization used in deployment to avoid train-inference skew.
[0092] Performance and Industrial ApplicabilityRepresentative evaluations on synthetic and real survey data show high point-wise accuracy and strong segment-level fidelity, with especially high precision on spiral detection. The pipeline is efficient (parallel preprocessing and lightweight models), deployable in CAD contexts, and integrable with existing alignment solvers. The described components may be implemented on CPU, GPU, or APPLE SILICON processor acceleration without changing the method.
[0093] VariationsIn addition to dual-branch and hybrid models, alternative classifiers (including attention-only encoders) may be substituted. Feature modes may be selected per dataset; notably, adding Icurvaturel (xycC) often improves spiral boundary detection. Voting stride, smoothing windows, segment thresholds, and solver back-off policies may be tuned without departing from the core method.
[0094] In view of the above,
[0098] In addition to the above, feature modes/sequences may be selected from a library (xysc, xybc, xycC, xybscC); using (bi)LSTM or attention encoders; applying temporal logit smoothing; tuning window length/stride; iterative refinement using solver residuals.
Geometry Solver
[0099] When the detection algorithm 110 identifies the geometries (tangents, spirals, and curves), they are detected in a sequence that should represent a connected alignment. The rail track alignment should be smooth where the geometries join. In civil engineering, this smoothness is also called tangency where the geometries meet.
[0100] Sometimes it is possible to join curves 506 and tangents 502 directly and preserve tangency or smoothness. However, in many cases, they don't connect smoothly. This is where spirals 504 are used to transition from a curve 506 to a tangent 502 or vice versa, or from curve 506 to curve 506. Euler spirals 504 (clothoids) have a linear change in curvature, and solving for the correct start and end radius can be done using optimization methods such as Newton's method. Sometimes it is not possible to solve for such a spiral 504.
[0101] In embodiments of the invention, the detection algorithm attempts to identify spirals 504 between tangents 502 and curves 506, and the corresponding parameters. However, embodiments may use an exact solver to compute the correct spiral parameters. This is where a Geometry Solver comes into play. It uses pre-existing spiral solvers within the CIVIL 3D application to connect various geometries. These spiral solvers can solve for different kinds of geometry sequences.
[0102] The main idea of a Geometry Solver of embodiments of the invention is the way the corresponding spiral solver is chosen from the CIVIL 3D application. The following pseudo-code in Table B illustrates this concept:
TABLE-US-00003 TABLE B Require: Detected geometries sequence 1 Initialize the alignment geometry list G ={g.sub.1, g.sub.2, ... , g.sub.n} 2 i 1 3 while in do 4 Use appropriate 4-entity solver for quadruplet g.sub.i, g.sub.i+1, g.sub.i+2, and g.sub.i+3 5 if 4-entity solver fails then 6 Use appropriate 3-entity solver for triplet g.sub.i, g.sub.i+1, g.sub.i+2 7 if 3-entity solver fails then 8 Use appropriate 2-entity solver for pair g.sub.i, g.sub.i+1 9 if 2-entity solver fails then 10 Mark g.sub.i as requiring manual adjustment 11 endif 12 i i + 1 13 else 14 i i + 2 15 endif 16 else 17 i i + 3 18 endif 19 end while 20 Return the connected alignment geometry list G
[0103] With a sequence of detected geometries of G, the Geometry Solver algorithm processes the geometries in the sequence by grouping them into pairs, triplets, and quadruplets. The algorithm then uses the appropriate group solver to solve the geometries in one group. After solving the geometries in one group, the algorithm moves on to the next group. Solving a group of geometries involves calculating the geometries in the group and keeps them being tangential to each other.
[0104] Embodiments of the invention support 2-entity, 3-entity, and 4-entity solvers for pairs, triplets, and quadruplets, respectively. For example, a simple 2-entity solver can solve for a spiral 504 between a tangent (T) 502 and a curve (C). 506. Let's call this a TC solver. A 3-entity solver solves for a spiral 504 between two curves 506 is called a CC solver. Similarly, if there is already a tangent 502, a spiral (S) 504, and a curve 506, and it is desired to add another curve 506, a 4-entity solver TSCC solver may be used.
[0105] Exemplary 4-entity solvers include: [0106] Tangent-Spiral-Spiral-Tangent (TSST) solver [0107] Tangent-Spiral-Spiral-Curve (TSSC) solver [0108] Curve-Spiral-Spiral-Tangent (CSST) solver [0109] Curve-Spiral-Spiral-Curve (CSSC) solver
[0110] Exemplary 3-entity solvers include: [0111] Tangent-Spiral-Curve (TSC) solver [0112] Curve-Spiral-Tangent (CST) solver [0113] Curve-Spiral-Curve (CSC) solver [0114] Tangent-Curve-Tangent (TCT) solver
[0115] Exemplary 2-entity solvers include: [0116] Tangent-Spiral (TS) solver [0117] Spiral-Tangent (ST) solver [0118] Spiral-Curve (SC) solver [0119] Curve-Spiral (CS) solver [0120] Tangent-Curve (TC) solver [0121] Curve-Tangent (CT) solver
Modifications Optimization
[0122] Returning to
[0123] At step 114, the results may be changed/adjusted (e.g., by adjusting detection parameters/parameters of the detected geometry).
[0124]
[0125]
[0126] Once the results are changed at step 114, the plots may be further optimized at step 116 before the alignment is exported at step 118 (e.g., exported to a tamping machine [e.g., in a LandXML format] to perform the alignment consistent with the alignment). In this regard, step 118 includes exporting the alignment to a physical machine (e.g., a tamping machine) that aligns the railway track consistent with the alignment.
Alternative Embodiments and Details
[0127] In view of the above, after computing the centerline at step 106, steps 108-116 provide the ability to analyze and fine tune the alignment. In this regard, the user may visualize the alignment in multiple equivalent representations (e.g., the curvature plot and alignment plot) that are displayed simultaneously from different points of view of the graphical user interface. Each of the sub-views (e.g., the plots and/or data/methods to adjust the alignment) that are displayed during the analysis describe the alignment geometry from a different point of view, but all refer to the same object(s). While
[0128] As described above, there are two different options for performing the analysis and fine tuning of the alignment (i.e., the geometry detection 110 and resulting adjustments in 114-116): (1) machine learning approach; and (2) the statistical analysis (also referred to as regression detection) approach.
[0129] For the machine learning approach, the user may choose to enable the artificial intelligence assisted detection and may have the option to switch between the regression detection and the AI alternative.
[0130] In the non-AI based workflow, the user may have the option to adjust various parameters as illustrated in
[0131] Once detected, the alignment descriptions may be analyzed in the form of various graphs/plots/views including a radius graph, offset graph, station navigator, segment properties (tabular view), point properties (tabular view), and canvas geometry. Each of these different forms of analysis are described in details below.
[0132] Radius Graph (also referred to as a curvature plot)referring to
[0133] Offset Graphthe offset graph 712 helps the user visualize the difference (comparative differences) between the position of the survey data (i.e., the survey points) and the detected alignment/geometry. An O deviation axis 714 may be displayed in the middlesegments that diverge upwards describe an offset of the alignment to the left of the survey data; similarly, the segments that diverge downwards describe an offset of the alignment to the left of the survey data. The line of the graph may also be color coded, so that the user can visualize high deviations easierfor example, areas of high deviation may be in red, mid range deviation may be marked with yellow, and small to no deviation may be represented in green. The curvature information may be mapped in accordance to the alignment stationing (distance on the course of the alignment) on the x-axis and the value of the deviation on the y-axis.
[0134] Station Navigator 716this is a zoomed out depiction of the curvature graph/plot 702, allowing users to orientate and quickly move along the stationing of the alignment. The rectangle 718 that highlights a particular segment of the (zoomed out) graph/view determines which segment is currently visible in other views (e.g., in the displayed alignment of the curvature plot).
[0135] Segment Properties (tabular view) (also referred to as alignment element properties 802)this is a table that is describing the geometric properties of each detected alignment segment (each straight/tangent, curve, and spiral) in numerical form. It gives information about features such as the segment type, total length, start and end point alongside the alignment stationing. The tabular view communicates with the graphs (e.g., the curvature plot) and the displayed information is correlated. Some of the values can be modified by editing the number in the table cell of the tabular view 802 and the change will be reflected (e.g., dynamically updated) in the alignment geometry/curvature plot.
[0136] Point properties (tabular view) 804this is a table that is describing the properties of each individual data point (i.e., survey point) in numerical form. It gives information about features such as: the stationing of the point alongside the alignment; Northing and Easting of the point; and offset (distance between original survey data point and detected alignment). The point properties tabular view 804 communicates with the graphs (e.g., the curvature plot) and displayed information is correlated. Some of the values can be modified by editing the number in the table cell and the change will be reflected (e.g., dynamically updated) in the alignment geometry/curvature plot.
[0137] Canvas geometry preview (also referred to as alignment plot/graph 704)applications of embodiments of the invention may display a preview of the alignment geometry.
[0138] After reviewing/editing via the above graphs/plots/views, the user may commit the changes and generate the geometry for export (i.e., step 118).
Hardware Environment
[0139]
[0140] In one embodiment, the computer 902 operates by the hardware processor 904A performing instructions defined by the computer program 910 (e.g., a computer-aided design [CAD] application) under control of an operating system 908. The computer program 910 and/or the operating system 908 may be stored in the memory 906 and may interface with the user and/or other devices to accept input and commands and, based on such input and commands and the instructions defined by the computer program 910 and operating system 908, to provide output and results.
[0141] Output/results may be presented on the display 922 or provided to another device for presentation or further processing or action. In one embodiment, the display 922 comprises a liquid crystal display (LCD) having a plurality of separately addressable liquid crystals. Alternatively, the display 922 may comprise a light emitting diode (LED) display having clusters of red, green and blue diodes driven together to form full-color pixels. Each liquid crystal or pixel of the display 922 changes to an opaque or translucent state to form a part of the image on the display in response to the data or information generated by the processor 904 from the application of the instructions of the computer program 910 and/or operating system 908 to the input and commands. The image may be provided through a graphical user interface (GUI) module 918. Although the GUI module 918 is depicted as a separate module, the instructions performing the GUI functions can be resident or distributed in the operating system 908, the computer program 910, or implemented with special purpose memory and processors.
[0142] In one or more embodiments, the display 922 is integrated with/into the computer 902 and comprises a multi-touch device having a touch sensing surface (e.g., track pod, touch screen, smartwatch, smartglasses, smartphones, laptop or non-laptop personal mobile computing devices) with the ability to recognize the presence of two or more points of contact with the surface. Examples of multi-touch devices include mobile devices (e.g., IPHONE, ANDROID devices, WINDOWS phones, GOOGLE PIXEL devices, NEXUS S, etc.), tablet computers (e.g., IPAD, HP TOUCHPAD, SURFACE Devices, etc.), portable/handheld game/music/video player/console devices (e.g., IPOD TOUCH, MP3 players, NINTENDO SWITCH, PLAYSTATION PORTABLE, etc.), touch tables, and walls (e.g., where an image is projected through acrylic and/or glass, and the image is then backlit with LEDs).
[0143] Some or all of the operations performed by the computer 902 according to the computer program 910 instructions may be implemented in a special purpose processor 904B. In this embodiment, some or all of the computer program 910 instructions may be implemented via firmware instructions stored in a read only memory (ROM), a programmable read only memory (PROM) or flash memory within the special purpose processor 904B or in memory 906. The special purpose processor 904B may also be hardwired through circuit design to perform some or all of the operations to implement the present invention. Further, the special purpose processor 904B may be a hybrid processor, which includes dedicated circuitry for performing a subset of functions, and other circuits for performing more general functions such as responding to computer program 910 instructions. In one embodiment, the special purpose processor 904B is an application specific integrated circuit (ASIC).
[0144] The computer 902 may also implement a compiler 912 that allows an application or computer program 910 written in a programming language such as C, C++, Assembly, SQL, PYTHON, PROLOG, MATLAB, RUBY, RAILS, HASKELL, or other language to be translated into processor 904 readable code. Alternatively, the compiler 912 may be an interpreter that executes instructions/source code directly, translates source code into an intermediate representation that is executed, or that executes stored precompiled code. Such source code may be written in a variety of programming languages such as JAVA, JAVASCRIPT, PERL, BASIC, etc. After completion, the application or computer program 910 accesses and manipulates data accepted from I/O devices and stored in the memory 906 of the computer 902 using the relationships and logic that were generated using the compiler 912.
[0145] The computer 902 also optionally comprises an external communication device such as a modem, satellite link, Ethernet card, or other device for accepting input from, and providing output to, other computers 902.
[0146] In one embodiment, instructions implementing the operating system 908, the computer program 910, and the compiler 912 are tangibly embodied in a non-transitory computer-readable medium, e.g., data storage device 920, which could include one or more fixed or removable data storage devices, such as a zip drive, floppy disc drive 924, hard drive, CD-ROM drive, tape drive, etc. Further, the operating system 908 and the computer program 910 are comprised of computer program 910 instructions which, when accessed, read and executed by the computer 902, cause the computer 902 to perform the steps necessary to implement and/or use the present invention or to load the program of instructions into a memory 906, thus creating a special purpose data structure causing the computer 902 to operate as a specially programmed computer executing the method steps described herein. Computer program 910 and/or operating instructions may also be tangibly embodied in memory 906 and/or data communications devices 930, thereby making a computer program product or article of manufacture according to the invention. As such, the terms article of manufacture, program storage device, and computer program product, as used herein, are intended to encompass a computer program accessible from any computer readable device or media.
[0147] Of course, those skilled in the art will recognize that any combination of the above components, or any number of different components, peripherals, and other devices, may be used with the computer 902.
[0148]
[0149] A network 1004 such as the Internet connects clients 1002 to server computers 1006. Network 1004 may utilize ethernet, coaxial cable, wireless communications, radio frequency (RF), etc. to connect and provide the communication between clients 1002 and servers 1006. Further, in a cloud-based computing system, resources (e.g., storage, processors, applications, memory, infrastructure, etc.) in clients 1002 and server computers 1006 may be shared by clients 1002, server computers 1006, and users across one or more networks. Resources may be shared by multiple users and can be dynamically reallocated per demand. In this regard, cloud computing may be referred to as a model for enabling access to a shared pool of configurable computing resources.
[0150] Clients 1002 may execute a client application or web browser and communicate with server computers 1006 executing web servers 1010. Such a web browser is typically a program such as MICROSOFT INTERNET EXPLORER/EDGE, MOZILLA FIREFOX, OPERA, APPLE SAFARI, GOOGLE CHROME, etc. Further, the software executing on clients 1002 may be downloaded from server computer 1006 to client computers 1002 and installed as a plug-in or ACTIVEX control of a web browser. Accordingly, clients 1002 may utilize ACTIVEX components/component object model (COM) or distributed COM (DCOM) components to provide a user interface on a display of client 1002. The web server 1010 is typically a program such as MICROSOFT'S INTERNET INFORMATION SERVER.
[0151] Web server 1010 may host an Active Server Page (ASP) or Internet Server Application Programming Interface (ISAPI) application 1012, which may be executing scripts. The scripts invoke objects that execute business logic (referred to as business objects). The business objects then manipulate data in database 1016 through a database management system (DBMS) 1014. Alternatively, database 1016 may be part of, or connected directly to, client 1002 instead of communicating/obtaining the information from database 1016 across network 1004. When a developer encapsulates the business functionality into objects, the system may be referred to as a component object model (COM) system. Accordingly, the scripts executing on web server 1010 (and/or application 1012) invoke COM objects that implement the business logic. Further, server 1006 may utilize MICROSOFT'S TRANSACTION SERVER (MTS) to access required data stored in database 1016 via an interface such as ADO (Active Data Objects), OLE DB (Object Linking and Embedding DataBase), or ODBC (Open DataBase Connectivity).
[0152] Generally, these components 1000-1016 all comprise logic and/or data that is embodied in/or retrievable from device, medium, signal, or carrier, e.g., a data storage device, a data communications device, a remote computer or device coupled to the computer via a network or via another data communications device, etc. Moreover, this logic and/or data, when read, executed, and/or interpreted, results in the steps necessary to implement and/or use the present invention being performed.
[0153] Although the terms user computer, client computer, and/or server computer are referred to herein, it is understood that such computers 1002 and 1006 may be interchangeable and may further include thin client devices with limited or full processing capabilities, portable devices such as cell phones, notebook computers, pocket computers, multi-touch devices, and/or any other devices with suitable processing, communication, and input/output capability.
[0154] Of course, those skilled in the art will recognize that any combination of the above components, or any number of different components, peripherals, and other devices, may be used with computers 1002 and 1006. Embodiments of the invention are implemented as a software/CAD application on a client 1002 or server computer 1006. Further, as described above, the client 1002 or server computer 1006 may comprise a thin client device or a portable device that has a multi-touch-based display.
CONCLUSION
[0155] This concludes the description of the preferred embodiment of the invention. The following describes some alternative embodiments for accomplishing the present invention. For example, any type of computer, such as a mainframe, minicomputer, or personal computer, or computer configuration, such as a timesharing mainframe, local area network, or standalone personal computer, could be used with the present invention. In summary, embodiments of the invention combine automatic detection, as well as a continuous alignment that can be edited simultaneously with support of a curvature/radius graph/plot, alignment preview/graph/plot, and/or alignment table. The user may easily correlate five (5) different methods of data visualization at the same time to inspect and customize the desired output. This allows for a very high level of precision in defining the desired alignment geometry.
[0156] Embodiments of the invention may also provide seamless integration within a CAD application environment (e.g., the CIVIL 3D application) and enhances user experience through its intuitive design and high performance. Also, embodiments of the invention may provide tools that are sharable components, that can be reused in different environments, e.g., the RECAP application).
[0157] Further to the above, embodiments of the invention provide an alignment process that utilizes a sliding window that performs a segmented lease square partition, and chains the segments together into geometries, mixes a greedy-approach algorithm with dynamic programming and some statistical ideas, in a manner that is not possible in the prior art.
[0158] The foregoing description of the preferred embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto.
REFERENCES
[0159] [Bellman] R. Bellman, On the approximation of curves by line segments using dynamic programming, Communications of the ACM, 4(6):284, 1961.