Fix the configuration documentation script. (#679)

Fixes #652.
Now also includes documentation for one option that was "repeated"
and not "optional".
master
Wolfgang Hess 2017-11-15 14:17:33 +01:00 committed by Wally B. Feed
parent c25379cd20
commit c866707013
2 changed files with 89 additions and 80 deletions

View File

@ -33,70 +33,8 @@ int32 num_threads
Not yet documented. Not yet documented.
cartographer.mapping.proto.MapBuilderOptions cartographer.mapping.pose_graph.proto.ConstraintBuilderOptions
============================================ ==============================================================
bool use_trajectory_builder_2d
Not yet documented.
bool use_trajectory_builder_3d
Not yet documented.
int32 num_background_threads
Number of threads to use for background computations.
cartographer.mapping.proto.SparsePoseGraphOptions sparse_pose_graph_options
Not yet documented.
cartographer.mapping.proto.SparsePoseGraphOptions
=================================================
int32 optimize_every_n_scans
Online loop closure: If positive, will run the loop closure while the map
is built.
cartographer.mapping.sparse_pose_graph.proto.ConstraintBuilderOptions constraint_builder_options
Options for the constraint builder.
double matcher_translation_weight
Weight used in the optimization problem for the translational component of
non-loop-closure scan matcher constraints.
double matcher_rotation_weight
Weight used in the optimization problem for the rotational component of
non-loop-closure scan matcher constraints.
cartographer.mapping.sparse_pose_graph.proto.OptimizationProblemOptions optimization_problem_options
Options for the optimization problem.
int32 max_num_final_iterations
Number of iterations to use in 'optimization_problem_options' for the final
optimization.
double global_sampling_ratio
Rate at which we sample a single trajectory's scans for global
localization.
bool log_residual_histograms
Whether to output histograms for the pose residuals.
cartographer.mapping.proto.TrajectoryBuilderOptions
===================================================
cartographer.mapping_2d.proto.LocalTrajectoryBuilderOptions trajectory_builder_2d_options
Not yet documented.
cartographer.mapping_3d.proto.LocalTrajectoryBuilderOptions trajectory_builder_3d_options
Not yet documented.
bool pure_localization
Not yet documented.
cartographer.mapping.sparse_pose_graph.proto.ConstraintBuilderOptions
=====================================================================
double sampling_ratio double sampling_ratio
A constraint will be added if the proportion of added constraints to A constraint will be added if the proportion of added constraints to
@ -136,8 +74,8 @@ cartographer.mapping_3d.scan_matching.proto.CeresScanMatcherOptions ceres_scan_m
Not yet documented. Not yet documented.
cartographer.mapping.sparse_pose_graph.proto.OptimizationProblemOptions cartographer.mapping.pose_graph.proto.OptimizationProblemOptions
======================================================================= ================================================================
double huber_scale double huber_scale
Scaling parameter for Huber loss function. Scaling parameter for Huber loss function.
@ -167,6 +105,73 @@ cartographer.common.proto.CeresSolverOptions ceres_solver_options
Not yet documented. Not yet documented.
cartographer.mapping.proto.MapBuilderOptions
============================================
bool use_trajectory_builder_2d
Not yet documented.
bool use_trajectory_builder_3d
Not yet documented.
int32 num_background_threads
Number of threads to use for background computations.
cartographer.mapping.proto.SparsePoseGraphOptions sparse_pose_graph_options
Not yet documented.
cartographer.mapping.proto.SparsePoseGraphOptions
=================================================
int32 optimize_every_n_scans
Online loop closure: If positive, will run the loop closure while the map
is built.
cartographer.mapping.pose_graph.proto.ConstraintBuilderOptions constraint_builder_options
Options for the constraint builder.
double matcher_translation_weight
Weight used in the optimization problem for the translational component of
non-loop-closure scan matcher constraints.
double matcher_rotation_weight
Weight used in the optimization problem for the rotational component of
non-loop-closure scan matcher constraints.
cartographer.mapping.pose_graph.proto.OptimizationProblemOptions optimization_problem_options
Options for the optimization problem.
int32 max_num_final_iterations
Number of iterations to use in 'optimization_problem_options' for the final
optimization.
double global_sampling_ratio
Rate at which we sample a single trajectory's scans for global
localization.
bool log_residual_histograms
Whether to output histograms for the pose residuals.
double global_constraint_search_after_n_seconds
If for the duration specified by this option no global contraint has been
added between two trajectories, loop closure searches will be performed
globally rather than in a smaller search window.
cartographer.mapping.proto.TrajectoryBuilderOptions
===================================================
cartographer.mapping_2d.proto.LocalTrajectoryBuilderOptions trajectory_builder_2d_options
Not yet documented.
cartographer.mapping_3d.proto.LocalTrajectoryBuilderOptions trajectory_builder_3d_options
Not yet documented.
bool pure_localization
Not yet documented.
cartographer.mapping_2d.proto.LocalTrajectoryBuilderOptions cartographer.mapping_2d.proto.LocalTrajectoryBuilderOptions
=========================================================== ===========================================================
@ -353,6 +358,9 @@ double imu_gravity_time_constant
2. from integration of angular velocities (which gets worse when the 2. from integration of angular velocities (which gets worse when the
constant is increased) is balanced. constant is increased) is balanced.
int32 rotational_histogram_size
Number of histogram buckets for the rotational scan matcher.
cartographer.mapping_3d.proto.SubmapsOptions submaps_options cartographer.mapping_3d.proto.SubmapsOptions submaps_options
Not yet documented. Not yet documented.
@ -413,9 +421,12 @@ cartographer.mapping_3d.proto.RangeDataInserterOptions range_data_inserter_optio
cartographer.mapping_3d.scan_matching.proto.CeresScanMatcherOptions cartographer.mapping_3d.scan_matching.proto.CeresScanMatcherOptions
=================================================================== ===================================================================
double translation_weight double occupied_space_weight
Scaling parameters for each cost functor. Scaling parameters for each cost functor.
double translation_weight
Not yet documented.
double rotation_weight double rotation_weight
Not yet documented. Not yet documented.
@ -437,9 +448,6 @@ int32 full_resolution_depth
Number of full resolution grids to use, additional grids will reduce the Number of full resolution grids to use, additional grids will reduce the
resolution by half each. resolution by half each.
int32 rotational_histogram_size
Number of histogram buckets for the rotational scan matcher.
double min_rotational_score double min_rotational_score
Minimum score for the rotational scan matcher. Minimum score for the rotational scan matcher.

View File

@ -103,7 +103,7 @@ def ParseProtoFile(proto_file):
# We capture the contents of this message. # We capture the contents of this message.
option_comments = [] option_comments = []
multiline = None multiline = ''
for line in line_iter: for line in line_iter:
line = line.strip() line = line.strip()
if '}' in line: if '}' in line:
@ -116,21 +116,17 @@ def ParseProtoFile(proto_file):
option_comments.append(comment) option_comments.append(comment)
else: else:
assert not line.startswith('required') assert not line.startswith('required')
if multiline is None: multiline += ' ' + line
if line.startswith('optional'):
multiline = line
else:
continue
else:
multiline += ' ' + line
if not multiline.endswith(';'): if not multiline.endswith(';'):
continue continue
assert len(multiline) < 200 assert len(multiline) < 200
option = multiline[8:-1].strip().rstrip('0123456789').strip() option = multiline[:-1].strip().rstrip('0123456789').strip()
assert option.endswith('=') assert option.endswith('=')
if option.startswith('repeated'):
option = option[8:]
option_type, option_name = option[:-1].strip().split(); option_type, option_name = option[:-1].strip().split();
print(" Option '%s'." % option_name) print(" Option '%s'." % option_name)
multiline = None multiline = ''
message.AddOption(option_type, option_name, option_comments) message.AddOption(option_type, option_name, option_comments)
option_comments = [] option_comments = []
@ -186,6 +182,11 @@ def GenerateDocumentation(output_file, root):
content.extend(preceding_comments) content.extend(preceding_comments)
content.append('') content.append('')
for option_type, option_name, option_comments in message.options: for option_type, option_name, option_comments in message.options:
# TODO(whess): For now we exclude InitialTrajectoryPose from the
# documentation. It is documented itself (since it has no Options suffix)
# and is not parsed from the Lua files.
if option_type in ('InitialTrajectoryPose',):
continue
content.append( content.append(
resolver.Resolve(option_type, message.package) + ' ' + option_name) resolver.Resolve(option_type, message.package) + ' ' + option_name)
if not option_comments: if not option_comments: