ATOM: A general calibration framework for multi-modal, multi-sensor systems