Helios++
Helios software for LiDAR simulations
MainHelp.h
1 #pragma once
2 
3 #include <iostream>
4 
5 namespace helios { namespace main{
6 
10 void printMainHelp(){
11  std::cout << "HELIOS++ main help:\n\n"
12  << "\tSyntax: helios <survey_file_path> [OPTIONAL ARGUMENTS]\n\n"
13  << "\tOPTIONAL ARGUMENTS:\n\n"
14 
15  << "\t\t-h or --help : Show this help\n\n"
16 
17  << "\t\t--version : Show the full version of HELIOS++\n\n"
18 
19  << "\t\t--test : Run tests to check helios++ behaves as expected\n\n"
20 
21  << "\t\t--unzip <input_path> <output_path>\n"
22  << "\t\t\tDecompress the file at input path and write it decompressed "
23  << "at output path.\n"
24  << "\t\t\tFile at input path must be the compressed output of helios++"
25  << "\n\n"
26 
27  << "\t\t--assets <dir_path> : Specify the path to assets directory\n"
28  << "\t\t\tBy default: ./assets/\n\n"
29 
30  << "\t\t--output <dir_path> : Specify the path to output directory\n"
31  << "\t\t\tBy default: ./output/\n\n"
32 
33  << "\t\t--splitByChannel : Use this flag to enable the one-file-per-device"
34  "\n\t\t\twriting mode when using a multi-channel scanner.\n"
35  "\t\t\tBy default one-file-for-all writing is enabled\n\n"
36 
37  << "\t\t--writeWaveform : Use this flag to enable full waveform "
38  << "writing\n"
39  << "\t\t\tBy default waveform is NOT written to output file\n\n"
40 
41  << "\t\t--calcEchowidth : Use this flag to enable full waveform "
42  << "fitting\n"
43  << "\t\t\tBy default the full waveform is NOT fitted\n\n"
44 
45  << "\t\t--fullwaveNoise : Use this flag to add noise when computing "
46  << "full waveform\n"
47  << "\t\t\tBy default: full waveform noise is disabled\n\n"
48 
49  << "\t\t--fixedIncidenceAngle : Use this flag to use fixed incidence "
50  << "angle\n"
51  << "\t\t\tFixed incidence angle of exactly 0.0 will be considered for "
52  << "all intersections\n\n"
53 
54  << "\t\t--seed <seed>: Specify the seed for randomness generation\n"
55  << "\t\t\tIt can be an intenger, a decimal or a timestamp with format "
56  << "\n\t\t\tYYYY-mm-DD HH::MM::SS\n"
57  << "\t\t\t\tBy default: a random seed is generated\n\n"
58 
59  << "\t\t--gpsStartTime <string>: Specify a fixed start time for GPS\n"
60  << "\t\t\tIt can be either a posix timestamp or a"
61  "\"YYYY-MM-DD hh:mm:ss\" date time string\n"
62  << "\t\t\t\tBy default: An empty string \"\" is used, which leads to\n"
63  << "\t\t\t\t\tusing current system time\n\n"
64 
65  << "\t\t--lasOutput : Use this flag to generate the output point cloud "
66  "in LAS format (v 1.4)\n\n"
67  << "\t\t--las10: Use this flag to write in LAS format (v 1.0)\n\n"
68 
69  << "\t\t--zipOutput : Use this flag to generate compressed output\n\n"
70 
71  << "\t\t--lasScale : Specify the decimal scale factor for LAS output"
72  << "\n\n"
73 
74  << "\t\t--parallelization <integer> : Specify the parallelization "
75  << "strategy\n"
76  << "\t\t\t0 for a static/dynamic chunk based parallelization and 1 "
77  << "for a\n\t\t\twarehouse based one."
78  << "\n\t\t\t\tBy default: Static/dynamic chunk based strategy is used"
79  << "\n\n"
80 
81  << "\t\t-j or --njobs or --nthreads <integer> : Specify the number of"
82  << "\n\t\t\tjobs to be used to compute the simulation\n"
83  << "\t\t\t\tBy default: all available threads are used\n\n"
84 
85  << "\t\t--chunkSize <integer> : Specify the chunk size to be used for"
86  << "\n\t\t\tparallel computing. If a negative number is given, then "
87  << "its"
88  << "\n\t\t\tabsolute value is used as starting size of the dynamic "
89  << "chunk-size strategy."
90  << "\n\t\t\tPositive numbers specify the size for a static chunk-size "
91  << "strategy"
92  << "\n\t\t\t\tBy default: 32\n\n"
93 
94  << "\t\t--warehouseFactor <integer> : Specify the warehouse factor."
95  << "\n\t\t\tThe number of tasks in the warehouse would be k times the "
96  << "\n\t\t\tnumber of workers. The greater the factor, the less the "
97  << "\n\t\t\tprobability of idle cores but the greater the memory "
98  << "consumption."
99  << "\n\t\t\t\tBy default: 4\n\n"
100 
101  << "\t\t--rebuildScene : Force scene rebuild even when a previously\n"
102  << "\t\t\tbuilt scene is available\n"
103  << "\t\t\t\tBy default: previous scene is used if found\n\n"
104 
105  << "\t\t--kdt <integer> : Specify the type of KDTree to be built for "
106  << "for the scene\n"
107  << "\t\t\tUsing 1 is for the simple KDTree based on median "
108  << " balancing, 2 for \n"
109  << "\t\t\tthe SAH based KDTree, 3 for the SAH with best axis\n"
110  << "\t\t\tbased KDTree and 4 (default) for a fast SAH "
111  << "approximation\n\n"
112 
113  << "\t\t--kdtJobs <integer> : Specify the number of threads to be used"
114  " for building the KDTree.\n"
115  "\t\t\tIf 1, then the KDTree will be built in a sequential fashion"
116  "\n\t\t\tIf >1, then the KDTree will be built in a parallel fashion"
117  "\n\t\t\tIf 0, then the KDTree will be built using as many threads "
118  "as available\n\n"
119 
120  << "\t\t--kdtGeomJobs <integer> : Specify the number of threads to "
121  "be used for building the\n\t\t\t"
122  "upper nodes of the KDTree (geometry-level parallelization).\n"
123  "\t\t\tIf 1, then there is no geometry-level parallelization"
124  "\n\t\t\tIf >1, then geometry-level parallelization uses as many "
125  "threads as specified."
126  "\n\t\t\tIf 0 (default), then geometry-level parallelization uses"
127  "\n\t\t\tas many threads as node-level.\n\n"
128 
129 
130  << "\t\t--sahNodes <integer> : Specify how many nodes must be used by "
131  << "the\n"
132  << "\t\t\tSurface Area Heuristic when building a SAH based KDTree\n"
133  << "\t\t\tFor the SAH KDTree it is recommended to be 21.\n"
134  << "\t\t\tMore nodes lead to a best search process\n"
135  << "\t\t\tto find split position, at the expenses of a\n"
136  << "\t\t\tgreater computational cost. When using a fast SAH\n"
137  << "\t\t\tapproximation it is recommended to set this to 32 (default)"
138  << ".\n\n"
139 
140  << "\t\t--disablePlatformNoise : Disable platform noise, no matter\n"
141  << "\t\t\twhat is specified on XML files\n"
142  << "\t\t\t\tBy default: XML specifications are considered\n\n"
143 
144  << "\t\t--disableLegNoise : Disable leg noise, no matter what is\n"
145  << "\t\t\tspecified on XML files\n"
146  << "\t\t\t\tBy default: XML specifications are considered\n\n"
147 
148  << "\t\t--logFile : Logging will be outputted to a file, not only\n"
149  << "\t\t\tto standard output.\n"
150  << "\t\t\t\tBy default: logging will be written to standard output\n\n"
151 
152  << "\t\t--logFileOnly : Logging will be outputted ONLY to a file\n"
153  << "\t\t\tBy default: logging will be outputted to standard output\n\n"
154 
155  << "\t\t--silent : Disable logging output\n"
156  << "\t\t\tBy default: only information and errors are reported\n\n"
157 
158  << "\t\t-q or --quiet : Specify the verbosity level to errors only\n"
159  << "\t\t\tBy default: only information and errors are reported\n\n"
160 
161  << "\t\t-vt : Specify the verbosity level to time and errors only\n"
162  << "\t\t\tBy default: only information and errors are reported\n\n"
163 
164 
165  << "\t\t-v : Specify the verbosity level to errors, information and "
166  << "warnings\n"
167  << "\t\t\tBy default: only information and errors are reported\n\n"
168 
169  << "\t\t-v2 or -vv : Specify the verbosity level to report all "
170  << "messages\n"
171  << "\t\t\tBy default: only information and errors are reported\n\n"
172 
173  #ifdef PCL_BINDING
174  << "\n\n\tDEV-MODE ONLY ARGUMENTS:\n\n"
175  "\t\t--demo <demo_name>\n"
176  "\t\t\tRun demo with given name.\n"
177  "\t\t\t\tFor example: --demo simple_primitives\n\n"
178  #endif
179  << std::endl;
180 }
181 
182 }}