In my view, all timer and spinners need to be stopped. In the code for the destructor of the AerialRobotBase class only the main timer and spinner is stopped but not the callback spinner. Shouldn't it be added here like this?
AerialRobotBase::~AerialRobotBase()
{
main_timer_.stop();
main_loop_spinner_.stop();
callback_spinner_.stop(); // added
}