move IMU integration out of drivers to sensors hub to handle accel/gyro sync

- IMU integration move from drivers (PX4Accelerometer/PX4Gyroscope) to sensors/vehicle_imu 
 - sensors: voted_sensors_update now consumes vehicle_imu
 - delete sensor_accel_integrated, sensor_gyro_integrated
 - merge sensor_accel_status/sensor_gyro_status into vehicle_imu_status
 - sensors status output minor improvements (ordering, whitespace, show selected sensor device id and instance)
This commit is contained in:
Daniel Agar
2020-05-30 11:07:54 -04:00
committed by GitHub
parent 86cd1d0802
commit e34bdb4be9
74 changed files with 785 additions and 1197 deletions
+1 -4
View File
@@ -112,15 +112,11 @@ set(msg_files
satellite_info.msg
sensor_accel.msg
sensor_accel_fifo.msg
sensor_accel_integrated.msg
sensor_accel_status.msg
sensor_baro.msg
sensor_combined.msg
sensor_correction.msg
sensor_gyro.msg
sensor_gyro_fifo.msg
sensor_gyro_integrated.msg
sensor_gyro_status.msg
sensor_mag.msg
sensor_preflight.msg
sensor_selection.msg
@@ -154,6 +150,7 @@ set(msg_files
vehicle_global_position.msg
vehicle_gps_position.msg
vehicle_imu.msg
vehicle_imu_status.msg
vehicle_land_detected.msg
vehicle_local_position.msg
vehicle_local_position_setpoint.msg
+5 -1
View File
@@ -9,4 +9,8 @@ float32 z # acceleration in the NED Z board axis in m/s^2
float32 temperature # temperature in degrees celsius
uint8 ORB_QUEUE_LENGTH = 4
uint32 error_count
uint8[3] clip_counter # clip count per axis in the sample period
uint8 ORB_QUEUE_LENGTH = 8
-12
View File
@@ -1,12 +0,0 @@
uint64 timestamp # time since system start (microseconds)
uint64 timestamp_sample
uint32 device_id # unique device ID for the sensor that does not change between power cycles
uint64 error_count
float32[3] delta_velocity # delta velocity in the NED board axis in m/s over the integration time frame (dt)
uint16 dt # integration time (microseconds)
uint8 samples # number of samples integrated
uint8[3] clip_counter # clip count per axis over the integration period
-17
View File
@@ -1,17 +0,0 @@
uint64 timestamp # time since system start (microseconds)
uint32 device_id # unique device ID for the sensor that does not change between power cycles
uint64 error_count
float32 temperature
uint8 rotation
uint32[3] clipping # clipping per axis
uint16 measure_rate_hz
float32 full_scale_range
float32 vibration_metric # high frequency vibration level in the IMU delta velocity data (m/s)
+3 -1
View File
@@ -9,4 +9,6 @@ float32 z # angular velocity in the NED Z board axis in rad/s
float32 temperature # temperature in degrees celsius
uint8 ORB_QUEUE_LENGTH = 4
uint32 error_count
uint8 ORB_QUEUE_LENGTH = 8
-12
View File
@@ -1,12 +0,0 @@
uint64 timestamp # time since system start (microseconds)
uint64 timestamp_sample
uint32 device_id # unique device ID for the sensor that does not change between power cycles
uint64 error_count
float32[3] delta_angle # delta angle in the NED board axis in rad/s over the integration time frame (dt)
uint16 dt # integration time (microseconds)
uint8 samples # number of samples integrated
uint8[3] clip_counter # clip count per axis over the integration period
-19
View File
@@ -1,19 +0,0 @@
uint64 timestamp # time since system start (microseconds)
uint32 device_id # unique device ID for the sensor that does not change between power cycles
uint64 error_count
float32 temperature
uint8 rotation
uint32[3] clipping # clipping per axis
uint16 measure_rate_hz
float32 full_scale_range
float32 vibration_metric # high frequency vibration level in the IMU delta angle data (rad)
float32 coning_vibration # Level of coning vibration in the IMU delta angles (rad^2)
@@ -305,6 +305,18 @@ def print_field(field):
print("char device_id_buffer[80];")
print("device::Device::device_id_print_buffer(device_id_buffer, sizeof(device_id_buffer), message.device_id);")
print("PX4_INFO_RAW(\"\\tdevice_id: %d (%s) \\n\", message.device_id, device_id_buffer);")
elif field.name == 'accel_device_id':
print("char accel_device_id_buffer[80];")
print("device::Device::device_id_print_buffer(accel_device_id_buffer, sizeof(accel_device_id_buffer), message.accel_device_id);")
print("PX4_INFO_RAW(\"\\taccel_device_id: %d (%s) \\n\", message.accel_device_id, accel_device_id_buffer);")
elif field.name == 'gyro_device_id':
print("char gyro_device_id_buffer[80];")
print("device::Device::device_id_print_buffer(gyro_device_id_buffer, sizeof(gyro_device_id_buffer), message.gyro_device_id);")
print("PX4_INFO_RAW(\"\\tgyro_device_id: %d (%s) \\n\", message.gyro_device_id, gyro_device_id_buffer);")
elif field.name == 'baro_device_id':
print("char baro_device_id_buffer[80];")
print("device::Device::device_id_print_buffer(baro_device_id_buffer, sizeof(baro_device_id_buffer), message.baro_device_id);")
print("PX4_INFO_RAW(\"\\tbaro_device_id: %d (%s) \\n\", message.baro_device_id, baro_device_id_buffer);")
elif is_array and 'char' in field.type:
print(("PX4_INFO_RAW(\"\\t" + field.name + ": \\\"%." + str(array_length) + "s\\\" \\n\", message." + field.name + ");"))
else:
+15 -21
View File
@@ -267,40 +267,34 @@ rtps:
id: 117
- msg: sensor_accel_fifo
id: 118
- msg: sensor_accel_status
id: 119
- msg: sensor_gyro_fifo
id: 120
- msg: sensor_gyro_status
id: 121
- msg: sensor_accel_integrated
id: 122
- msg: sensor_gyro_integrated
id: 123
id: 119
- msg: vehicle_imu
id: 124
id: 120
- msg: vehicle_imu_status
id: 121
- msg: vehicle_angular_acceleration
id: 125
id: 122
- msg: logger_status
id: 126
id: 123
- msg: rpm
id: 127
id: 124
- msg: hover_thrust_estimate
id: 128
id: 125
- msg: trajectory_bezier
id: 129
id: 126
- msg: vehicle_trajectory_bezier
id: 130
id: 127
- msg: timesync_status
id: 131
id: 128
- msg: orb_test
id: 132
id: 129
- msg: orb_test_medium
id: 133
id: 130
- msg: orb_test_large
id: 134
id: 131
- msg: yaw_estimator_status
id: 135
id: 132
########## multi topics: begin ##########
- msg: actuator_controls_0
id: 150
+2 -2
View File
@@ -8,8 +8,8 @@ uint32 gyro_device_id # Gyroscope unique device ID for the sensor that
float32[3] delta_angle # delta angle in the NED board axis in rad/s over the integration time frame (dt)
float32[3] delta_velocity # delta velocity in the NED board axis in m/s over the integration time frame (dt)
uint16 dt # integration period in us
uint16 delta_angle_dt # integration period in us
uint16 delta_velocity_dt # integration period in us
uint8 CLIPPING_X = 1
uint8 CLIPPING_Y = 2
+16
View File
@@ -0,0 +1,16 @@
uint64 timestamp # time since system start (microseconds)
uint32 accel_device_id # unique device ID for the sensor that does not change between power cycles
uint32 gyro_device_id # unique device ID for the sensor that does not change between power cycles
uint32[3] accel_clipping # clipping per axis
uint32 accel_error_count
uint32 gyro_error_count
uint16 accel_rate_hz
uint16 gyro_rate_hz
float32 accel_vibration_metric # high frequency vibration level in the IMU delta velocity data (m/s)
float32 gyro_vibration_metric # high frequency vibration level in the IMU delta velocity data (m/s)
float32 gyro_coning_vibration # Level of coning vibration in the IMU delta angles (rad^2)