I found a solution using normals to align the object to ground variation
normalBack = normalBack.linear_interpolate( rayBack.get_collision_normal(), 0.5)
normalFront = normalFront.linear_interpolate( rayFront.get_collision_normal() , 0.5)
normalBAckL = normalBAckL.linear_interpolate( rayBackL.get_collision_normal(),0.5)
normalFrontL = normalFrontL.linear_interpolate( rayFrontL.get_collision_normal(),0.5)
var normalMedium = (normalBack + normalFront + normalBAckL + normalFrontL).normalized()
var oldTranform = transform
look_at(transform.basis.z, normalMedium)
var newTransform = transform
transform = oldTranform.interpolate_with(newTransform,0.8)