I hadn’t followed up on this for a while, but it no longer seems to be the case! The timestamps from the color camera come from the middle of the camera’s exposure.
My initial tests were fairly un-scientific, so it’s entirely possible that I was wrong and this has always been how Tango works. Either way this is great news for 99% of Tango developers. Objects in augmented reality will appear to “stick” better and feel a lot more solid in low light.
In the video below there are two computer generated lights overlaid on Tango footage. The green light uses the camera pose taken directly from the camera’s timestamp. The red light is shifted half a frame and shows what a pose taken from the start of the exposure would look like.
However, this does mean that the difference between color timestamps may vary. If the exposure time of each frame is the same, then the difference between the timestamps will be consistent. However if exposure time increases or decreases, the timestamps between frames will change.
This only happens during the transition and is only a few milliseconds. I did a test with logcat and during exposure changes the time between frames would vary between 28 and 36 milliseconds (I forced the exposure to change with the extremely professional technique of sticking a flashlight right in front of the camera).
Again this will not affect 99% of developers. But if someone is doing work that is relies on a constant timestamp between color frames, this is something to be aware of.
Also! If I am right and the timestamps are being changed depending on camera exposure, someone could use the difference in timestamps to find the relative change in exposure time between frames. It wouldn’t be the absolute exposure time, and wouldn’t account for ISO changes, but it could be helpful to those trying to get consistent exposure values.
TL;DR color timestamps are not always constant and it’s a good thing for AR