All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Configuration parameter
_ng_version
that defines allowed versions of 'ng_trajectory'.
- Criterions
- Profile, Profile2
- When first time of reference is not zero, use it as lap time.
- Profile, Profile2
- Criterions
- Profile, Profile2
- Do not estimate lap time of the reference when the first time is not zero.
- Profile, Profile2
- 'plot'
rectanglePlot()
now actually displays rectangles.
- Criterions
- Profile2
- Parameters
reference_obtain_start
andreference_obtain_start_td
to prepare the criterion and whole pipeline to generate overtaking maneuvers. Using this generates following parameters that overwrite values in the configuration:v_0
,fixed_points
andfixed_segments
.
- Parameters
- Profile2
- Selectors
- Uniform_distance
- Parameter
fixed_points
can be now set fromselector_args
as well.
- Parameter
- Uniform_time
- Parameter
fixed_points
can be now set fromselector_args
as well.
- Parameter
- Uniform_distance
- Initialization (
init()
) of all algorithms may now return an optional dictionary. When returned, it is fused together with the configuration of the current cascade step (except penalizers as they are handled by the optimizers).
- Criterions
- Profile2
- Properly save npy data without raising ragged array 'VisibleDeprecationWarning'.
- Profile2
- 'ng_generate_data'
- Another file, 'start_points.csv' is generated. It contains positions of the centerline along with the distances to the walls.
- Criterions
- Profile
saveState()
now also saves backward nad maximum speeds that are computed within the speed profiler.
- Profile2
- Remove majority of flake8 warnings.
- Profile
- 'ng_generate_data'
- Generated
start_points.npy
contains additional two columns with distances to the walls.
- Generated
- 'plot'
- Support older matplotlib versions in
rectanglePlot()
.
- Support older matplotlib versions in
- Criterions
- Profile
- Properly construct conditional-based dictionary is
saveState()
.
- Properly construct conditional-based dictionary is
- Profile2
- Properly obtain logfile name.
- Load first four columns of the reference instead of just three.
- Add missing import of
pointToMap()
. - Properly construct conditional-based dictionary is
saveState()
.
- Profile
- Optimizers
- Braghin
- When logging into a file, display progress bar (similarly to Matryoshka).
- Braghin
- 'ng_generate_data': Argument
--scale
to change the resolution of the output data.
- Optimizers
- Braghin
- Use sequential executor when number of workers is set to 1.
- Braghin
- Criterions
- [NEW] Profile2
- Modified criterion to create overtaking heat maps.
- [NEW] Profile2
- Optimizers
- Matryoshka
- Parameter 'force_load_matryoshka' to load the saved transformation every time.
- Matryoshka
- Segmentators
- Function
validChecks
to validate multiple map points at once.
- Function
- 'plot'
- Functions
imgPlotMetric
,circlePlot
andrectanglePlot
used byprofile2
.
- Functions
- Optimizers
- Matryoshka
- When not optimizing, a plot is produced even for unsuccessful attempts.
- Transformation is loaded when the current one is not usable.
- Matryoshka
- Criterions
- [NEW] Manual
- Criterion 'manual' requests user to specify fitness value for each candidate.
- [NEW] Manual
- Interpolators
- [NEW] None
- Dummy interpolator that forwards given points.
- [NEW] None
- Penalizers
- [NEW] None
- Dummy penalizer that allows any candidate.
- [NEW] None
- Segmentators
- Function
filterPoints
to filter points outside of the map.
- Function
- 'ng_generate_data': Save image of generated friction map when verbosity is higher.
- 'ng_generate_data': Arguments
--prefix
and--suffix
to change the output files' filenames.
- Use sequential executor when only one worker is requested.
- Criterions
- Profile
- Filter out points that are outside of the map when building the friction map.
- Profile
- Interpolators
trajectoryClosestIndex()
now returns only positive indices.
- Optimizers
- Matryoshka
- Add argument 'allow_no_filter' to 'groupsBorderBeautify()' to use unfitered border data when filtration removes all of them.
- Add parameter 'border_allow_no_filter' to set 'allow_no_filter' from the configuration.
- Matryoshka
- Criterions
- Profile
- Reference trajectory can have more fields, but only first three (x, y, k) are used.
- Profile
- Criterions
- Profile
- Initial velocity should not be changed when computing the profile in the not closed paths.
- Profile
- Optimizers
- Braghin
- Run the segmentator before creating the transformation.
- Braghin
- Selectors
- Uniform distance
trajectoryResample()
: Increase the number of points when concatenating parts of the trajectory.
- Uniform distance
- Interpolators
- Resolve zero divison and index overflow problems in
trajectoryClosestIndex()
.
- Resolve zero divison and index overflow problems in
- Install only
pandas<2.1
as newer ones are not compatible with oldernumpy
.
- Criterions
- Profile
- Parameter 'friction_map_yaml' to specify the configuration of the original map.
- When 'friction_map_yaml' is passed, a friction map is also saved in the ROS-compatible (map_server) format.
- Parameter 'friction_map_plot' to plot the friction map (currently, both this and 'friction_map_save' have to be set).
- Profile
- Segmentators
- Functions
getMapOrigin
andgetMapGrid
to obtain parameters of the current internal map.
- Functions
- 'ng_generate_data': When using verbose logging, colors identified as wall/unkn/free and shown.
- 'ng_generate_data': Parameter '--clean' that throws away track points that are outside of the track.
- 'ng_plot': Parameters '--vmin' and '--vmax' to set the bounds of the velocity colormap.
- 'ng_plot': Allow reversed colormaps.
- 'ng_plot': Plotting of the friction map when 'friction_map_plot' is True.
- Criterions
- Profile
- Saved friction map plot has fixed colormap range.
- Profile
- Optimizers
- "solution" and "final" values are logged with lower verbosity level.
- Criterions
- Profile
- Obtain friction from the map using correct index.
- Profile
- 'ng_generate_data': Copy the map to avoid read-only errors.
- 'ng_plot': Generate segmentator map to support friction map for the profiler.
- Criterions
- Profile
- Parameter 'friction_map_expand' to fill the map with given friction map.
- Parameter 'friction_map_plot' to plot the used friction map.
- Profile
- File
.flake8
that describes flake8 error ignored in the repository.
- Global logging utility to maintain printing/logging from one place.
- Git changes are stashed before building a wheel to avoid packing untested content.
- Display progress bar when running the optimization while logging into a file.
- Tweaked logging verbosity at various places.
- 'ng_generate_data': Use inflated map for the creation of friction map.
- Plot documentation should display properly now.
- Some lines that should be printed out only once are no longer repeated in the logfile.
- Criterions
- Profile
- Parameter 'friction_map' to load a friction map from '.npy' file.
- Use friction for computing maximum velocity from the friction map if available.
- Parameter 'friction_map_inverse' to invert the values in the friction map.
- Support for zero friction (impassable area).
- CSV file contains progress along the centerline [m].
- Profile
- Segmentators
- Function
getMap
to obtain current internal map used by the segmentators.
- Function
- 'ng_generate_data'
- Parameter
--friction-map
to create a friction map from an image. - Parameter
--fonly/--friction-map-only
to skip generating map data and generate only friction map data. - Parameter
--friction-map-inverse
to inverse the colors in the friction map image.
- Parameter
- Criterions
- Profile
- Time difference between points is constrained to 10s.
- Generated CSV file holds lap time and path length with the first trajectory point.
- Profile
- Criterions
- Profile
- Avoid crashing when logfile is not given.
- Profile
- Segmentators
- Catch and handle OverflowError when identifying invalid points.
- Update all files to mitigate majority of the flake8 errors.
- Plot documentation is now properly formatted.
- Criterions
- Profile
- Parameter
favor_overtaking
that is added as a penalty to the lap time when overtaking does not occur. - Parameter
reference_laptime
to set the lap time of the reference instead of estimating it.
- Parameter
- Profile
- Optimizers
- Matryoshka
- Experimental parameter '_experimental_mm_max' that limits mapping to only first 'n' segments.
- Matryoshka
- Segmentators
- Function
pointsToWorld
to convert coordinates of multiple cells at once.
- Function
- Expose all parameters in plotter for
figureSave
,trackPlot
,bordersPlot
andindicesPlot
.
- Criterions
- Profile
- Non-closed paths display more points when
plot_timelines
is set to True.
- Non-closed paths display more points when
- Profile
- Criterions
- Profile
- Properly detect overtaking points when crossing "0" progress.
- Return correct lap time on non-closed path.
- Reference is properly rotated, so the virtual car does not slow down at wrong places.
- Properly compute delta in the saved trajectory.
- Properly compute heading in the saved trajectory.
- Profile
- Bound version of
bayesian-optimization<=1.4.0
to resolve import errors.
- Criterions
- Profile
- Parameter
plot_overtaking
to plot the places where an overtaking occurred during the optimization.
- Parameter
- Profile
- Optimizers
- Matryoshka
- Skip segments fixed by points that are outside of the valid area.
- Save all overtaking points into a file at the end of the cascade step.
- Matryoshka
- GitHub URL to the package manifest.
- Criterions
- Profile
- Solutions are saved as CSV by default. Pass empty string /
None
tosave_solution_csv
to disable it.
- Solutions are saved as CSV by default. Pass empty string /
- Profile
- Criterions
- Profile
- Properly use Queue to display the overtaking points.
- Profile
- Criterions
- Profile
- Parameter
save_solution_csv
treates$
as name of the current log. - Check for overlap consistency, as short overlaps might not smoothen the velocity enough.
- Display points that invalid because of the distance to the reference.
- Show points where overtaking occurs (across whole budget).
- Parameter
- Profile
- 'ng_plot'
- Parameter
-O
is now optional. When not given, plots are displayed directly in a sequence.
- Parameter
- 'ng_generate_data'
- Parameter
--inflate
that inflates the walls before processing the map.
- Parameter
- 'ng_generate_data'
- Function for filtering points is no longer imported from the package.
- Generated image is not in grayscale; centerline points are shown green, start points are red.
- Criterions
- Profile
- Parameter
overlap
is properly handled via ParameterList.
- Parameter
- Profile
- 'ng_generate_data'
- Centerline is properly filtered when more then one is present.
- Duplicit points are removed before filtering to avoid unfilterable path sections.
- Criterions
- Profile
- Parameter
reference_rotate
no longer flips axes.
- Parameter
- Profile
- 'ng_generate_data'
- Points of the centerline are not duplicated anymore.
- Require numpy versions
<1.24
as newer ones are not compatible withnevergrad==0.3.0
.
- Criterions
- Profile
- Argument
lap_time
forprofileCompute()
to obtain lap time of the trajectory. - Parameter
reference
to set file for loading reference trajectory that needs to be avoided in time. - Parameter
reference_dist
to set the minimum allowed distance from the reference trajectory. - Parameter
reference_rotate
to set the rotation of reference trajectory. - Parameters
plot_reference
,plot_reference_width
to control plotting of reference trajectory. - Parameter
plot_solution
to control plotting of optimized solution. - Parameters
plot_timelines
,plot_timelines_size
,plot_timelines_width
to control plotting of lines between points of the same time. - Parameter
save_solution_csv
to save final solution to a CSV file. - Parameters
_lf
and_lr
to set the car wheelbase for the saved trajectory.
- Argument
- Parameter
optimization
(default to True) that when True indicates that the criterion is run during optimization sequence (similarly to penalizer). - Parameter
penalty
is passed to criterion during optimization. - When enabled, final trajectory is saved to a csv file.
- Profile
- Interpolators
- Cubic_spline
- Parameter
closed_loop
to set interpolator to create closed/unclosed lines.
- Parameter
- Cubic_spline
- Optimizers
- Matryoshka
- Function
indicesToRealCoordinatesInt()
to convert indices using slice. - Parameter
load_matryoshka
to set file for loading Matryoshka instead of creating it. - Parameter
save_matryoshka
to set file for saving Matryoshka after it is created. - Parameter
plot_group_indices
(default to True) to turn off group indices in the plot. - Parameter
plot_group_borders
(default to True) to turn off group borders in the plot. - Parameter
fixed_segments
to determine points (and their segments) that are not optimized.
- Function
- Matryoshka
- Penalizers
- Function
eInvalidPoints()
to iterate over invalid points obtained by segmentated map.
- Function
- Segmentators
- Flood_fill
- Parameter
parallel_flood
to run the segmentation with a ProcessPool.
- Parameter
- Function
pointInBounds()
along with globalMAP_BOUNDS
to check whether point lies inside the map bounds.
- Flood_fill
- 'ng_generate_data'
- Repeatable parameter
-v
to increase verbosity. - Centerline is generated between all walls, but only the section without dead-ends is returned. If this fails, centerline for the largest wall is returned instead.
- Inflated map is saved when verbosity is set to at least 2.
- Repeatable parameter
- 'ng_run'
- Parameter
--help
to show help for the command. - Support for
+[PARAMETER]
parameters that modifies the loaded configuration. - Support for
+[PARAMETER]/[PARAMETER]
to modify subdictionaries.
- Parameter
- Documentation for package plotter.
- Function
configurationMerge()
to merge another configuration to self. - Variate run can properly handle floats when generating a name of the log file.
- Criterions
- Profile
- Criterion is using the true
lap_time
. - Overlap is upper bound by the number of points.
- Criterion is using the true
- Profile
- Optimizers
- Matryoshka
- Use list comprehension in
groupsCenterCompute()
. - Force new transformation when number of segments does not correspond to the current mapping.
- Matryoshka is plotted even with held transformation.
- Use list comprehension in
- Matryoshka
- Penalizers
- Count
- Use segmentated map for getting the invalid points instead of numpy vectors.
- Use
eInvalidPoints()
where applicable.
- Count
- 'ng_generate_data'
- Arguments are parsed by argparse instead of getopt.
- Map inflation is much faster because of helper array.
- Centerline points are filtered by Matryoshka's
pointsFilter()
. - Quantization
PIL.quantize()
uses median cut method instead of maximum coverage.
- Criterions
- Profile
- Profiling uses curvature that is not modified for straight sections.
- Profile
- Optimizers
- Matryoshka
- ParameterList is updated with keyword arguments.
- Set
optimization
parameter of criterions/penalizers to True during optimizer initialization.
- Matryoshka
- 'ng_help' no longer requires an argument for
-h
. - Matplotlib internal variables should not be longer garbage collected from different thread.
- Criterions
- [NEW] Jazar_model
- Criterion 'Jazar_model' computes speed profile using model from Jazar's book.
- [NEW] Jazar_model
- 'ng_graph'
- Parameter
--show-legend
to display figure legend. - Parameter
--loc-legend
to set position of shown legend. - Parameter
--label
to set legend labels for each dataset. - Parameter
--title
to set the title of generated figure. - Parameter
-j %d
to enable parallel processing of log files. - Parameters
--width
and--height
to set the size of the generated figure. - Parameter
--tight
to adjust figure padding. - Parameter
--variates
to select which 'x' values should be displayed in the figure. - Parameter
--datasets
to determine dataset indices for configuration files. - Parameter
--no-header
to skip header when using-p
. - When using
--merged-min
with-l
logs are merged together (and output new "merged-min" statistics). - Show segment value when using
--segments
together with-lp
. - Parameter
--marker-avg
to set the marker style of dataset averages.
- Parameter
- Field
_label
in a configuration file is used when--label
not given.
- 'ng_graph'
- Logs described by JSON files are looked for inside the folder of configuration file instead of the current folder.
- Data loading with '--merged-min' skips some steps to make the process faster.
- Input files are not opened right away, but only when actually used.
- Progress is shown when processing logs with
-g
. - When using
--merged-min
, statistics of a merged log show:- Rate: Success rate of individual runs (% of finding a solution).
- Length: Number of successful runs.
- 'ng_graph'
- Parameter
-r
is now shown in the correct group. - Parameters are now set properly and should not "eat" more values than expected.
- Parameter
--segments
is now properly handled. - Standard deviation is not computed when only one log is obtained.
- Success rate of a log is not computed when empty.
- Parameter
- Interpolators
- Argument
from_left
is properly handled insidetrajectoryClosest()
.
- Argument
- Selectors
- Uniform_time
- A proper exception is raised when passing negative
remain
value.
- A proper exception is raised when passing negative
- Uniform_time
- Parameter
-r
for 'ng_graph' to recursively dig through the subfolders when looking for the log files. - Parameter
-g
for 'ng_graph' to show a graph for log files. - Parameter
--segments
for 'ng_graph' to set number of segments for used log files. - Multiple log files can be processed at once in 'ng_graph'.
- Parameters for 'ng_graph' are now grouped.
- Log's filename is properly shown in 'ng_graph' with '-l'.
- Interpolators
- Arguments
from_left
fortrajectoryClosest*()
to get closest point from the path beginning.
- Arguments
- Penalizers
- Variable
INVALID_POINTS
to store invalid points so that they are not computed multiple times. - [NEW] Curvature
- Penalizer 'Curvature' operates on the curvature of feasible paths.
- Variable
- Selectors
- Uniform_distance
- Parameter
rotate
for rotating the selection. - Parameter
fixed_points
to fix some points during selection, and to split the selection into multiple parts.
- Parameter
- Uniform_distance
- Script 'ng_plot' for generating maps and GIFs from log files.
- Parameter '-p' for 'ng_graph' to show log statistics in plot-friendly csv format.
- Selectors
- Curvature2
- Parameters of the selector are not reset to default state every
select()
.
- Parameters of the selector are not reset to default state every
- Curvature2
- Optimizers
- Braghin
- Invalid points plotting is hidden behind
plot
parameter.
- Invalid points plotting is hidden behind
- Braghin
- Properly compute quantiles in 'ng_graph'.
- Interpolators
- Function
trajectoryRotate()
for rotating the trajectory points along the line. Used by selectors. - Function
trajectoryClosestIndex()
to receive index of the closest point. - Functions
trajectoryFarthest()
andtrajectoryFarthestIndex()
to receive the most distant points.
- Function
- Penalizers
- Parameter
optimization
(default to True) that when True indicates that the Penalizer is run during optimization sequence. - Penalizer
utils
with optimization methods. - Centerline
- Methods
sum
andavg
for computing the resulting penalty. - Parameters
huber_loss
andhuber_delta
for using a Huber loss function when computing the penalty.
- Methods
- [NEW] Segment
- Penalizer 'Segment' operates on the distance of the invalid points from the valid area.
- Parameter
- Segmentators
- Functions
hood4Obtain()
andhood8Obtain()
for obtaining the neighbour cells in the grid map. - Function
borderCheck()
to check whether cell point is on valid area border. - Function
pointToWorld()
as a approximate inverse function ofpointToMap()
. - Function
validCheck()
to find whether cell point is valid.
- Functions
- Selectors
- [NEW] Uniform_time
- Selector 'Uniform_time' equidistantly samples the path with respect to the time estimated by 'profile' criterion.
- [NEW] Uniform_time
- New dependency
tqdm
. - Script 'ng_graph' for generating graphs from configuration files and log files.
- Selectors
- Uniform
- Use
trajectoryRotate()
instead of the current implementation.
- Use
- Uniform
- Penalizer
init()
now receives the full combined keywords dictionary. Therefore, e.g.,method
forcenterline
penalizer can be varied. - Target
build-wagon
is not run when usingbuild
target.
- Script 'ng_generate_data' now properly handles images with alpha channel and images without unknown area.
- Generated documentation is automatically commited on new release.
- Target
build-wagon
for creating wagons for 'x86_64' and 'aarch64'.
- Target
uninstall
is generic. - Renamed original
build
tobuild-wheel
. - Target
build
now runsbuild-wheel
andbuild-wagon
.
- Sorting bug while obtaining borders of the segments.
- Citation file should now contain correct fields and values to be properly parsed by GitHub.
- Argument
-y
for 'ng_generate_data' to obtain map information from a YAML file (used in ROS maps). - Citation (cff) file.
- Reference to the original paper.
- License file.
- Interpolators
- Function
pointsDistance()
for computing distances between points in a set. - Parameter
verify_sort
fortrajectorySort()
that removes outliers from the trajectory.
- Function
- Optimizers
- Matryoshka
- Use
verify_sort
when obtaining borders. Support for penalizing the optimization results using borderlines. The algorithm returnsPENALTY * d
, whered
is the distance to the nearest borderline point that the candidate point belongs to.Parameteruse_borderlines
that activates borderline-based penalization.- Parameter
plot_mapping
that shows the transformation by mapping a grid onto the track. (Use only for demonstration.)
- Use
- Matryoshka
- [NEW] Penalizers
- New group of algorithms which are used for evaluating whether the candidate is incorrect. In that case penalty is computed.
- In constrast to other algorithms,
init()
of penalizers should be executed duringinit()
of optimizers. - Count
- Penalizer 'Count' is the basic penalizer used in ng_trajectory. It counts number of points outside the valid area.
- Borderlines
- Penalizer 'Borderlines' calculates minimum of maximum of the distances between misplaced points and their associated borderline (sets of points on the borders between two adjacent segments).
Warning Currently, this works only for Matryoshka.- Warning Currently, this works only for Flood Fill segmentator.
- Centerline
- Penalizer 'Centerline' finds the minimum of maximum of the distances between misplaced points and their associated part of the centerline.
- Parameter
method
that allows selecting whether the penalty is minimum or maximum of all found distances.
- Segmentators
- Flood Fill
- Function
segmentDistance()
that computes distance from a point to a segment. - Parameter
reserve_width
that creates a reserved region for each segment in order to touch both (outer and inner) walls. - Parameter
reserve_selected
with list of segments that should use the reservation method. When unset, all are used. - Parameter
reserve_distance
that sets the distance from the wall-segment connector that is reserved for the segment. Parametercreate_borderlines
that creates a nested dict of borderlines between segments.- Parameter
plot_flood
to plot the flooded areas into the figure. (Only for demonstration.)
- Function
- Flood Fill
- Selectors
- Curvature
- Parameter
downsample_factor
that controls downsampling prior to the interpolation. - Option
show_plot
that hides the plot even though it is saved to file. - Parameter
split_peaks
that was used for some time that adds +-1 points around the peaks.
- Parameter
- [NEW] Fixed
- Selector 'Fixed' returns preset list of points.
- [NEW] Curvature2
- Selector 'Curvature2' uses metric units for peaks identification and operates more automatically than 'Curvature'.
- [NEW] Uniform_distance
- Selector 'Uniform_distance' equidistantly samples the path.
- Curvature
- Intermediate results are stored inside logs, allowing to pause the experiments. (Only at the loop end.)
- Checking for already present logs and resuming the experiment at the loop it has ended.
- Variable
__version__
to be used for scripts. - Current version is reported on every 'ng_run' start and at the beginning of every log (when logging enabled).
- Script 'ng_curvature_gui' for testing the Curvature selector parameters.
- Function
figureClose()
for closing the figures. It should be called after saving the figure to free used memory. - Parameter
--gendoc
for 'ng_help' to generate the README in the repository. - Script 'release.sh' as a guideline for successful creating of a new release.
- Segmentators
- Flood Fill
- Remove empty segments caused mostly by a selected group center outside of the valid area. This will probably change in the future.
- Flood Fill
- Track is plotted using lighter gray that is not in the standard palette. Therefore the colors should not overlap anymore.
- Algorithms are passed to the optimizer as modules not callables. Therefore it is possible to call other functions of the module as well.
- Figures created during the optimization are closed after saving.
- Selectors
- Curvature
- Track with identified turns is plotted with equal axes.
- Curvature
- Un-nested plot functions return created objects.
- Selectors: Resolve missing peaks for Curvature selector.
- Optimizers: Plot in Matryoshka only when it is allowed.
- Add PHONY target to Makefile to get around 'target is up-to-date'.
- Figure/pyplot wrappers are protected by
plot_only
decorator.
- Makefile for building/installing/removing the package.
- Functions
reset()
andresetAll()
to restore default states of parameters. - Parameter 'reset' for
updateAll()
to automatically reset all parameters. - Documentation exported from 'ng_help' to README.
- Segmentators: Flood_fill is no longer using old parameters when restarting the cascade.
- Selectors: Curvature selector no longer imports
pyplot
directly. - 'ng_generate_data': Numpy is using Python builtin data types.
- Running the scripts without
matplotlib
no longer raises an exception.
- Optimizers: Matryoshka does not sort centerline before the selection (for segmentation).
- Script 'ng_help' for showing help for the algorithms and their parameters.
- Utilizy 'parameter' for documented usage of parameters within the algorithms.
- Use newly introduced ParameterList inside the algorithms, at least for the documentation.
- Selectors: Curvature_sample selector (based on the Botta, 2012 article) by Ondra Benedikt.
- Optimizers: Default number of workers is set to the number of logical processors.
- 'ng_generate_data': Resampling method used when resizing the image is now explicitly set to 'PIL.Image.BILINEAR' as it was changed in an older version of Pillow package.
- 'ng_generate_data': Add
Pillow>=4.2.0
dependency to the setup file.
- Optimizers: Final graph now contains invalid points as well (if present).
- Selectors: When using negative selection, leave the number of points on the selector.
- Selectors: Curvature selector by Ondra Benedikt.
- Script 'ng_generate_data' for generating numpy files for the algorithm from an image of the map.
- Optimizers: Individual plotting is now forced on the main figure, instead of the global one.
- Segmentators/Utils:
gridCompute()
to obtain square grid size of the points. - Substitute not selected algorithms with a stub.
- Parameter
silent_stub
that suppresses errors when calling stub.
- Selectors: Uniform selector now treats rotate as factor between two consecutive points, instead of rotating the whole path.
- Optimizers: Invalidity of points is compared to the specified or computed square grid size instead of a fixed value.
- Optimizers: Constant for penalty is no longer fixed and can be set via parameter
penalty
.
- Automatic versioning of the package.
- Optimizers: Braghin supports parameter
path_reduction
for reducing the path prior to the interpolation. - Selectors as a class of methods used for retrieving group centers from the centerline.
- Selectors: Uniform selector that supports selection rotation.
- Script 'ng_run' for invoking the algorithm directly from Terminal.
- Optimizers: Braghin's parameters
endpoint_distance
andendpoint_accuracy
are modifiable. - Optimizers: Braghin during its transformation works with the full length of the centerline instead of a subset.
- Exception message is shown when parsing JSON fails.
- Variate run is using string formatting to properly display non-int variables.
- Reimplementation of
ng_trajectory
as a standalone Python package.