An open-source toolbox for users to have easy access to Hardware Synchronization on multi-sensors. The toolbox has a GUI based on QT (RQT). Users can record a ROS bag or have a new topic reflector (reconstructed timestamp) as they want. Furthermore, the hardware-level IMU data process is also embedded in Microcontroller.
The project aims to provide an open-source solution to the online sensor data collection & timestamp reconstruction problem. We will be using a microcontroller to send hardware sync triggers to each sensor and collecting & reconstructing the data.
The final product could be like A solution that can help everyone quickly get data with accurate time. For example, one can easily sync a stereo camera with imu and GPS using the toolbox. He can choose an online algorithm or record it as a bag. A bunch of microcontrollers is on the support list.
Because the dataset work previously let me realize that the hardware sync is not an easy work which can bring taught problems when one first doing it. I want to expand my work to different platforms and situations to help others.
This is the GUI in RQT on the host. We can set external trigger types and parameters in the GUI. All things are intuitive and easy to change. The host will use ASCII protocol to control the microcontroller.
Users can also use reconstruct tools to get original data with the correct (rectified) timestamp.
As shown in the picture, we can assign the topic name input with the native sensor ROS driver. And get rectified data in topic output or ROS bag.
NU 32
STM 32F103
Speed: 72MHz
Baud rate: 115200
calibration with April Tag Board
Kaliba Test
Calibrate result
cam0:
T_cam_imu:
- [0.017248643674008135, -0.9998037138739959, 0.009747718459772736, 0.07733078169916466]
- [0.012834636469124028, -0.009526963092989282, -0.999872246379971, -0.016637889364465353]
- [0.9997688514842376, 0.017371548520172697, 0.01266779001636642, -0.14481844113148515]
- [0.0, 0.0, 0.0, 1.0]
camera_model: pinhole
distortion_coeffs: [-0.31576, 0.104955, 0.00032, -0.000156]
distortion_model: radtan
intrinsics: [886.191073, 886.591633, 610.578911, 514.59271]
resolution: [1224, 1024]
rostopic: /stereo/left/image_mono
timeshift_cam_imu: 0.005375665182111344
cam1:
T_cam_imu:
- [0.014447870885660574, -0.9997787221387724, -0.015289401081614196, -0.09375829054484337]
- [0.01108843210124949, 0.015450259055501236, -0.9998191517312787, -0.015076213124111792]
- [0.9998341390952836, 0.014275722527461954, 0.011309201824693582, -0.14050229888646543]
- [0.0, 0.0, 0.0, 1.0]
camera_model: pinhole
distortion_coeffs: [-0.311523, 0.09641, 0.000623, -0.000375]
distortion_model: radtan
intrinsics: [887.804282, 888.04815, 616.177573, 514.712952]
resolution: [1224, 1024]
rostopic: /stereo/right/image_mono
timeshift_cam_imu: 0.005415704144667583
The timeshift from camera and imu is near 5ms which is in line with our expectations. Because we set start point aligned and the exposure time is 10ms.