simulator move to PX4Accelerometer, PX4Gyroscope, PX4Magnetometer, PX4Barometer helpers (#12081)

This commit is contained in:
Daniel Agar
2019-05-30 21:07:26 -04:00
committed by GitHub
parent 4a4d323a97
commit 43e3fc707d
30 changed files with 156 additions and 4460 deletions
+1
View File
@@ -33,6 +33,7 @@
add_subdirectory(accelerometer)
add_subdirectory(airspeed)
add_subdirectory(barometer)
add_subdirectory(device)
add_subdirectory(gyroscope)
add_subdirectory(led)
@@ -32,3 +32,4 @@
############################################################################
px4_add_library(drivers_accelerometer PX4Accelerometer.cpp)
target_link_libraries(drivers_accelerometer PRIVATE drivers__device)
@@ -98,6 +98,12 @@ void PX4Accelerometer::set_device_type(uint8_t devtype)
_sensor_accel_pub.get().device_id = device_id.devid;
}
void PX4Accelerometer::set_sample_rate(unsigned rate)
{
_sample_rate = rate;
_filter.set_cutoff_frequency(_sample_rate, _filter.get_cutoff_freq());
}
void PX4Accelerometer::update(hrt_abstime timestamp, int16_t x, int16_t y, int16_t z)
{
sensor_accel_s &report = _sensor_accel_pub.get();
@@ -47,7 +47,7 @@ class PX4Accelerometer : public cdev::CDev, public ModuleParams
{
public:
PX4Accelerometer(uint32_t device_id, uint8_t priority, enum Rotation rotation);
PX4Accelerometer(uint32_t device_id, uint8_t priority = ORB_PRIO_DEFAULT, enum Rotation rotation = ROTATION_NONE);
~PX4Accelerometer() override;
int ioctl(cdev::file_t *filp, int cmd, unsigned long arg) override;
@@ -57,9 +57,7 @@ public:
void set_scale(float scale) { _sensor_accel_pub.get().scaling = scale; }
void set_temperature(float temperature) { _sensor_accel_pub.get().temperature = temperature; }
void set_sample_rate(unsigned rate) { _sample_rate = rate; _filter.set_cutoff_frequency(_sample_rate, _filter.get_cutoff_freq()); }
void configure_filter(float cutoff_freq) { _filter.set_cutoff_frequency(_sample_rate, cutoff_freq); }
void set_sample_rate(unsigned rate);
void update(hrt_abstime timestamp, int16_t x, int16_t y, int16_t z);
@@ -67,6 +65,8 @@ public:
private:
void configure_filter(float cutoff_freq) { _filter.set_cutoff_frequency(_sample_rate, cutoff_freq); }
uORB::Publication<sensor_accel_s> _sensor_accel_pub;
math::LowPassFilter2pVector3f _filter{1000, 100};
@@ -79,7 +79,7 @@ private:
int _class_device_instance{-1};
unsigned _sample_rate{1000};
unsigned _sample_rate{1000};
DEFINE_PARAMETERS(
(ParamFloat<px4::params::IMU_ACCEL_CUTOFF>) _param_imu_accel_cutoff
+4
View File
@@ -130,6 +130,7 @@ public:
DeviceBusType_I2C = 1,
DeviceBusType_SPI = 2,
DeviceBusType_UAVCAN = 3,
DeviceBusType_SIMULATION = 4,
};
/**
@@ -160,6 +161,9 @@ public:
case DeviceBusType_UAVCAN:
return "UAVCAN";
case DeviceBusType_SIMULATION:
return "SIMULATION";
case DeviceBusType_UNKNOWN:
default:
return "UNKNOWN";
+1
View File
@@ -32,3 +32,4 @@
############################################################################
px4_add_library(drivers_gyroscope PX4Gyroscope.cpp)
target_link_libraries(drivers_gyroscope PRIVATE drivers__device)
@@ -98,6 +98,12 @@ void PX4Gyroscope::set_device_type(uint8_t devtype)
_sensor_gyro_pub.get().device_id = device_id.devid;
}
void PX4Gyroscope::set_sample_rate(unsigned rate)
{
_sample_rate = rate;
_filter.set_cutoff_frequency(_sample_rate, _filter.get_cutoff_freq());
}
void PX4Gyroscope::update(hrt_abstime timestamp, int16_t x, int16_t y, int16_t z)
{
sensor_gyro_s &report = _sensor_gyro_pub.get();
+5 -5
View File
@@ -47,7 +47,7 @@ class PX4Gyroscope : public cdev::CDev, public ModuleParams
{
public:
PX4Gyroscope(uint32_t device_id, uint8_t priority, enum Rotation rotation);
PX4Gyroscope(uint32_t device_id, uint8_t priority = ORB_PRIO_DEFAULT, enum Rotation rotation = ROTATION_NONE);
~PX4Gyroscope() override;
int ioctl(cdev::file_t *filp, int cmd, unsigned long arg) override;
@@ -57,9 +57,7 @@ public:
void set_scale(float scale) { _sensor_gyro_pub.get().scaling = scale; }
void set_temperature(float temperature) { _sensor_gyro_pub.get().temperature = temperature; }
void set_sample_rate(unsigned rate) { _sample_rate = rate; _filter.set_cutoff_frequency(_sample_rate, _filter.get_cutoff_freq()); }
void configure_filter(float cutoff_freq) { _filter.set_cutoff_frequency(_sample_rate, cutoff_freq); }
void set_sample_rate(unsigned rate);
void update(hrt_abstime timestamp, int16_t x, int16_t y, int16_t z);
@@ -67,6 +65,8 @@ public:
private:
void configure_filter(float cutoff_freq) { _filter.set_cutoff_frequency(_sample_rate, cutoff_freq); }
uORB::Publication<sensor_gyro_s> _sensor_gyro_pub;
math::LowPassFilter2pVector3f _filter{1000, 100};
@@ -79,7 +79,7 @@ private:
int _class_device_instance{-1};
unsigned _sample_rate{1000};
unsigned _sample_rate{1000};
DEFINE_PARAMETERS(
(ParamFloat<px4::params::IMU_GYRO_CUTOFF>) _param_imu_gyro_cutoff