@mkriesel,
For global shutter camera like AR0144, the center of exposure will happen at the time that you suggested:
int64_t center_of_exposure_ns = start_of_exposure_ns + exposure_time_ns / 2;
For rolling shutter cameras, this is not true because different lines are exposed at different times. In this case, the center of exposure, which means the center of exposure of the middle line ( 🙂 ) will be:
int64_t center_of_exposure_ns = start_of_exposure_ns + (exposure_time_ns + readout_time_ns)/2;
This means that you will need to know the readout_time (which is time it takes for the full image to be transferred from the camera). It is not currently exposed in camera server or the camera metadata.
Take a look at this resource, it should help understand the rolling shutter case if you need : https://www.1stvision.com/cameras/IDS/IDS-manuals/en/basics-shutter-mode.html , specifically:
shutter_global.png
shutter_rolling.png
Alex