Straightening perpendicular planes
I suggest to distribute the error between normals.
You have to types of normals: to one group of planes (parallel) or to the other group (perpendicular to the first group).
Normals can be weighted-averaged by the number of points in each plane and/or by the error you get for each plane.
Now you have only two "main" normals, 'A' and 'B'. After normalizing them (divide by its length) their dot product allows to know the angle between both.
The difference between the result of the dot product and a 90-degrees angle can be distributed, again with some number-of-points or total-error criteria.
 The two normals form a plane and the difference is applied in this plane, you end rotating the normals a bit around the normal to this plane, each normal with its distributed angle.
I have a pointcloud of which I have calculated all present planes. I have the mathematical formula that best describes the planes that contain the points in the point cloud like this: ax+by+cz+d=0. In this formula, a, b, c describe the normal vector of those planes. I know that all planes that I have calculated are either perpendicular to each other or parallel to each other. But due to noise in the point cloud, the resulting normal vectors are not perfectly parallel and perpendicular.
How would I calculate the best normal vectors for these planes so they still fit the points as best as possible, but that they are also perfectly perpendicular or parallel to each other? I have some ideas for this that would provide a suboptimal solution, however, I was wondering if there is a method to find the best possible solution to this problem.