I am currently using the ICP to register Lidar point clouds in two frames. The problem is that the translation value calculated by the difference of average point values of utilized points in two frames seems not precise enough. Is there any alternative solutions to calculate the translation?
If you are trying to register two point clouds without a proper initial guess on the alignment (6dof) than it is a global registration problem. The simplest way is combining 3D feature matchings with ICP. Find the initial guess by 3D feature matching and refine it by point-to-point or point-to-plane ICP. Open3D has some example code on that.