Let’s assume you are in your SLAM session directory ./slam_session_tutorial
The exwayz_map_cleaner.exe executable expects:
Its goal is to compute a classification ID among {ground, dynamic, static} for each point of each input frame.
The principle is to check, for each point, if it belongs inside or outside the free space of other neighboring frames (that’s why an input trajectory needs to be input).
To run the map cleaner, use the following command
exwayz_map_cleaner --ply ./frames -t ./traj_odometry.ply
A viewer will open, showing the frame-by-frame classification result

In red, the points classified as moving, in blue the points classified as ground and in green the static points
As an output, if you don’t use the --no-write or --no-overwrite options, you’ll just have updated frames in the frame directory you input, with an additional classid field.
<aside> 💡
For more details about the processing parameters, please refer to Map cleaning parameters
</aside>
Now that there is a classid field in for each frame of the ./frames directory, you can use exwayz_merge_cloud.exe with an option to merge only points with a static label in order to clean your point cloud.

Dense point cloud merged with all points

Same point cloud merged after map cleaning with --cls-remove dynamic option in the commandline
After you’ve completed all the basic tutorials (in particula the 6. Merge frames into a dense point cloud), you can do the following
cd ./3_merge
exwayz_merge_cloud -i ../frames -t ../2_georef/traj_fusion_gps.ply \\
-d 1.0 --r-min 3.0 --cls-remove dynamic -o ./merged_clean.las