Synchronous data collection from diverse hardware

We describe an accurate distributed timestamp service. This open-source C++ package runs on commodity PC’s. With no extra hardware, the service correlates sensor data (head- and eye-trackers, biometrics, captured video, driving simulator data) from multiple PC’s with sub-millisecond accuracy. PC-driven actuators like motion bases and audio/visual/haptic warning systems are also controlled with the same accuracy. This lets us accurately measure driver response time (brake at a stoplight, direct gaze at a hazard, answer a telephone). Hardware vendors often assume that system integration revolves around their own devices. This service synchronizes devices despite such assumptions. It is orders of magnitude more accurate than conventional clock-synchronizing methods in Microsoft Windows. A Linux master clock provides a stable NTP time base. Slave clocks, Linux or Windows, synchronize to the master clock by several mechanisms. Measuring round-trip ping times corrects for network latency. In the slave’s high-resolution clock, drift is predictively compensated for while trapping wraparound and jitter (e.g., from PCI bus contention). Performance degrades gracefully and measurably on heavily loaded networks. Several phase-locked loops, within each slave and between slave and master, guarantee performance. Resume Nous decrivons un service precis d’horodateur distribue, par C++ en source ouvert, pour les PCs ordinaires. Sans materiel supplementaire, ce service correle des donnees des senseurs (traqueurs de tete et d’oeil, biometrie, video capturee, simulateur) des PCs multiples avec exactitude de moins d’une milliseconde. Les dispositifs conduits par PC comme des bases de mouvement et des systemes d’avertissement audio/visuel/haptique sont egalement commandes avec la meme exactitude. Ceci nous laisse exactement mesurer le temps de reponse de conducteur (le frein a un feu d’arret, regard fixe direct a un risque, reponse a un telephone). Les fournisseurs de materiel supposent souvent que l’integration de systeme tourne autour de leurs propres dispositifs. Ce service synchronise des dispositifs en depit de telles pretentions. C’est des ordres de grandeur plus precis que des methodes de synchronisation conventionnelles dans Microsoft Windows. Une horloge principale dans un PC Linux fournit une base stable de temps de NTP. Les horloges esclave, Linux ou Windows, synchronisent a l’horloge principale par plusieurs mecanismes. Mesurant les periodes aller-retour des paquets corrige pour la latence de reseau. Dans l’horloge a haute resolution de l’esclave, la derive est compensee predictivement. L’exactitude degrade mesurablement et avec elegance sur les reseaux fortement charges.