simulator: support accel/gyro instances and stuck failure

- expand simulator to 3 accels and gyros
 - PX4Accelerometer/PX4Gyroscope switch to old param usage due to copy constructor issues with ModuleParams
This commit is contained in:
Daniel Agar
2020-10-07 13:20:13 -04:00
committed by GitHub
parent c01fabaf11
commit 378cb155d6
10 changed files with 201 additions and 78 deletions
+2 -2
View File
@@ -35,6 +35,7 @@
#include "PX4Gyroscope.hpp"
#include <lib/drivers/device/Device.hpp>
#include <lib/parameters/param.h>
using namespace time_literals;
using matrix::Vector3f;
@@ -51,7 +52,6 @@ static constexpr int32_t sum(const int16_t samples[16], uint8_t len)
}
PX4Gyroscope::PX4Gyroscope(uint32_t device_id, enum Rotation rotation) :
ModuleParams(nullptr),
_sensor_pub{ORB_ID(sensor_gyro)},
_sensor_fifo_pub{ORB_ID(sensor_gyro_fifo)},
_device_id{device_id},
@@ -60,7 +60,7 @@ PX4Gyroscope::PX4Gyroscope(uint32_t device_id, enum Rotation rotation) :
// advertise immediately to keep instance numbering in sync
_sensor_pub.advertise();
updateParams();
param_get(param_find("IMU_GYRO_RATEMAX"), &_imu_gyro_rate_max);
}
PX4Gyroscope::~PX4Gyroscope()
+5 -8
View File
@@ -35,20 +35,19 @@
#include <drivers/drv_hrt.h>
#include <lib/conversion/rotation.h>
#include <px4_platform_common/module_params.h>
#include <uORB/PublicationMulti.hpp>
#include <uORB/topics/sensor_gyro.h>
#include <uORB/topics/sensor_gyro_fifo.h>
class PX4Gyroscope : public ModuleParams
class PX4Gyroscope
{
public:
PX4Gyroscope(uint32_t device_id, enum Rotation rotation = ROTATION_NONE);
~PX4Gyroscope() override;
~PX4Gyroscope();
uint32_t get_device_id() const { return _device_id; }
float get_max_rate_hz() const { return _param_imu_gyro_rate_max.get(); }
int32_t get_max_rate_hz() const { return _imu_gyro_rate_max; }
void set_device_id(uint32_t device_id) { _device_id = device_id; }
void set_device_type(uint8_t devtype);
@@ -71,6 +70,8 @@ private:
uint32_t _device_id{0};
const enum Rotation _rotation;
int32_t _imu_gyro_rate_max{0};
float _range{math::radians(2000.f)};
float _scale{1.f};
float _temperature{NAN};
@@ -78,8 +79,4 @@ private:
uint32_t _error_count{0};
int16_t _last_sample[3] {};
DEFINE_PARAMETERS(
(ParamInt<px4::params::IMU_GYRO_RATEMAX>) _param_imu_gyro_rate_max
)
};