Syncronized callbacks in ROS2

@Peter9606 usually we do a port on a branch, then PR into ros2.

If you are porting, do keep in mind that some of the changes can be upstreamed, so they should be done in separate commits (package.xml migration, tf2 migration, de-boostifying, etc) and a PR likely filed upstream so that the ROS1 side of things can be improved.