ICP can poorly register in the z direction, this might be because the z distance threshold is too high, so two spots are matched incorrectly.
In 0.9.3, the default distance threshold is 10 in x, y, and z.
Suggestion
Allow the z direction distance threshold to be different compared to the x and y directions using a config variable called icp_dist_thresh_z for the z direction, and icp_dist_thresh_yx for the x and y directions.
When icp_dist_thresh_yx is not set by the user, then it is set as icp_dist_thresh_yx * pixel_size_xy / pixel_size_z to account for the z pixels having typically larger size to the x and y pixels.
Suggestion
icp_dist_thresh_z
for the z direction, andicp_dist_thresh_yx
for the x and y directions.icp_dist_thresh_yx
is not set by the user, then it is set asicp_dist_thresh_yx * pixel_size_xy / pixel_size_z
to account for the z pixels having typically larger size to the x and y pixels.