What is the difference between the gazebo differential drive plugin and a differential drive controller spawned by controller_spawner?
What's the difference between
a controller specified by <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so"> in a <gazebo> tag, in an URDF file, and
a controller spawned by a controller_manager spawner node of type "diff_drive_controller/DiffDriveController" ?