It is more efficient to do operations on single doubles rather than on vectors. I think this line is equivalent to:
pose.translation() = percentace * rotated_target.translation() + (1 - percentage) * start_pose.translation()

Can you re-check if this works though? It sort of seems like target and pose should be the other way around .... at step 1 i should be closer to the start rather than the target, np?