Why does TF use strictly a tree?
It surprised me that it is impossible for a frame to have multiple parents. I understand that TF graphs should not contain cycles but is there a specific reason TF does not use an acyclic graphs internally?
This is limiting in the common scenario, where in a simulated environment, one may want to provide a simulated noisy odometry source, and a ground truth that both have the robot's base frame as child at the same time.
I've always considered/believed the fact that KDL (now: orocos_kinematics_dynamics) doesn't/didn't support anything but tree structures to be the main reason. If the solver you're using doesn't support it, then it makes sense for the data structure to also not have support for it.
Additionally, lookups can be very efficiently implemented in trees, while arbitrary graphs can make this quite complex.
But I'm not an authoritative source here -- so just a comment.
Perhaps @tfoote knows/remembers.