mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-24 03:13:34 +08:00
simulator move to PX4Accelerometer, PX4Gyroscope, PX4Magnetometer, PX4Barometer helpers (#12081)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user