Use new Vector4 class

This commit is contained in:
Matthias Grob
2023-03-21 15:01:26 +01:00
parent 08d6465ce5
commit b0189d95af
12 changed files with 32 additions and 56 deletions
@@ -250,9 +250,9 @@ float EkfWrapper::getYawAngle() const
return euler(2);
}
matrix::Vector<float, 4> EkfWrapper::getQuaternionVariance() const
matrix::Vector4f EkfWrapper::getQuaternionVariance() const
{
return matrix::Vector<float, 4>(_ekf->orientation_covariances().diag());
return matrix::Vector4f(_ekf->orientation_covariances().diag());
}
int EkfWrapper::getQuaternionResetCounter() const
@@ -111,7 +111,7 @@ public:
Eulerf getEulerAngles() const;
float getYawAngle() const;
matrix::Vector<float, 4> getQuaternionVariance() const;
matrix::Vector4f getQuaternionVariance() const;
int getQuaternionResetCounter() const;
matrix::Vector3f getDeltaVelBiasVariance() const;
+2 -2
View File
@@ -331,9 +331,9 @@ TEST_F(EkfGpsHeadingTest, stopOnGround)
_ekf_wrapper.setMagFuseTypeNone();
// WHEN: running without yaw aiding
const matrix::Vector<float, 4> quat_variance_before = _ekf_wrapper.getQuaternionVariance();
const matrix::Vector4f quat_variance_before = _ekf_wrapper.getQuaternionVariance();
_sensor_simulator.runSeconds(20.0);
const matrix::Vector<float, 4> quat_variance_after = _ekf_wrapper.getQuaternionVariance();
const matrix::Vector4f quat_variance_after = _ekf_wrapper.getQuaternionVariance();
// THEN: the yaw variance is constrained by fusing constant data
EXPECT_LT(quat_variance_after(3), quat_variance_before(3));
@@ -83,7 +83,7 @@ public:
void quaternionVarianceBigEnoughAfterOrientationInitialization()
{
const matrix::Vector<float, 4> quat_variance = _ekf_wrapper.getQuaternionVariance();
const matrix::Vector4f quat_variance = _ekf_wrapper.getQuaternionVariance();
const float quat_variance_limit = 0.0001f;
EXPECT_TRUE(quat_variance(1) > quat_variance_limit) << "quat_variance(1)" << quat_variance(1);
EXPECT_TRUE(quat_variance(2) > quat_variance_limit) << "quat_variance(2)" << quat_variance(2);
@@ -59,8 +59,8 @@ public:
bool isAvailable() { return _input_available; };
// Position : 0 : pitch, 1 : roll, 2 : throttle, 3 : yaw
const matrix::Vector<float, 4> &getPosition() { return _positions; }; // Raw stick position, no deadzone
const matrix::Vector<float, 4> &getPositionExpo() { return _positions_expo; }; // Deadzone and expo applied
const matrix::Vector4f &getPosition() { return _positions; }; // Raw stick position, no deadzone
const matrix::Vector4f &getPositionExpo() { return _positions_expo; }; // Deadzone and expo applied
// Helper functions to get stick values more intuitively
float getRoll() const { return _positions(1); }
@@ -90,8 +90,8 @@ public:
private:
bool _input_available{false};
matrix::Vector<float, 4> _positions; ///< unmodified manual stick inputs
matrix::Vector<float, 4> _positions_expo; ///< modified manual sticks using expo function
matrix::Vector4f _positions; ///< unmodified manual stick inputs
matrix::Vector4f _positions_expo; ///< modified manual sticks using expo function
uORB::Subscription _manual_control_setpoint_sub{ORB_ID(manual_control_setpoint)};
uORB::Subscription _failsafe_flags_sub{ORB_ID(failsafe_flags)};