diff --git a/src/drivers/uavcan/sensors/accel.cpp b/src/drivers/uavcan/sensors/accel.cpp index 0efa5c5e6e..9f3d6a20ca 100644 --- a/src/drivers/uavcan/sensors/accel.cpp +++ b/src/drivers/uavcan/sensors/accel.cpp @@ -63,7 +63,7 @@ void UavcanAccelBridge::imu_sub_cb(const uavcan::ReceivedDataStructure 0) ? msg.timestamp.usec : hrt_absolute_time(); if (channel == nullptr) { // Something went wrong - no channel to publish on; return diff --git a/src/drivers/uavcan/sensors/gyro.cpp b/src/drivers/uavcan/sensors/gyro.cpp index ab72693866..fca4ba7b4f 100644 --- a/src/drivers/uavcan/sensors/gyro.cpp +++ b/src/drivers/uavcan/sensors/gyro.cpp @@ -75,7 +75,8 @@ void UavcanGyroBridge::imu_sub_cb(const uavcan::ReceivedDataStructureupdate(hrt_absolute_time(), + const hrt_abstime timestamp_sample = (msg.timestamp.usec > 0) ? msg.timestamp.usec : hrt_absolute_time(); + gyro->update(timestamp_sample, msg.rate_gyro_latest[0], msg.rate_gyro_latest[1], msg.rate_gyro_latest[2]); diff --git a/src/drivers/uavcan/sensors/rangefinder.cpp b/src/drivers/uavcan/sensors/rangefinder.cpp index b476c66947..f66fd65442 100644 --- a/src/drivers/uavcan/sensors/rangefinder.cpp +++ b/src/drivers/uavcan/sensors/rangefinder.cpp @@ -116,7 +116,8 @@ void UavcanRangefinderBridge::range_sub_cb(const quality = 100; } - rangefinder->update(hrt_absolute_time(), msg.range, quality); + const hrt_abstime timestamp_sample = (msg.timestamp.usec > 0) ? msg.timestamp.usec : hrt_absolute_time(); + rangefinder->update(timestamp_sample, msg.range, quality); // Register device capability if not already done if (_node_info_publisher != nullptr) { diff --git a/src/drivers/uavcannode/Publishers/RangeSensorMeasurement.hpp b/src/drivers/uavcannode/Publishers/RangeSensorMeasurement.hpp index 134caea21a..ca8226b15a 100644 --- a/src/drivers/uavcannode/Publishers/RangeSensorMeasurement.hpp +++ b/src/drivers/uavcannode/Publishers/RangeSensorMeasurement.hpp @@ -75,6 +75,7 @@ public: if (uORB::SubscriptionCallbackWorkItem::update(&dist)) { uavcan::equipment::range_sensor::Measurement range_sensor{}; + range_sensor.timestamp.usec = getNode().getUtcTime().toUSec() - (hrt_absolute_time() - dist.timestamp); range_sensor.sensor_id = get_instance(); range_sensor.range = dist.current_distance; range_sensor.field_of_view = dist.h_fov;