Out of curiosity (and not an answer): any particular reason that you are trying to directly publish TF frames in this way? Typical setups publish JointState msgs, and the robot_state_publisher then does all the hard work. That would seem to make things much easier (but adds a node).