Program Listing for File ThreeSensorOdom.hpp

Return to documentation for file (src/LouLib/Odometry/ThreeSensorOdom.hpp)

#ifndef LOULIB_THREESENSORODOM_HPP
#define LOULIB_THREESENSORODOM_HPP

#include "AbstractOdometry.hpp"
#include "OdomMotorSensor.hpp"
#include "OdomRotationSensor.hpp"

namespace LouLib {
    namespace Odometry {

        class ThreeSensorOdom : public AbstractOdometry{
        private:

            AbstractOdomSensor &leftSensor;
            AbstractOdomSensor &rightSensor;

            Units::Length trackWidth;

            AbstractOdomSensor &backSensor;

            Units::Length backDist;

            Units::Length lastLeft = 0_in;
            Units::Length lastRight = 0_in;
            Units::Length lastBack = 0_in;

        public:

            ThreeSensorOdom(AbstractOdomSensor &leftSensor, AbstractOdomSensor &rightSensor,
                            const Units::Length &trackWidth, AbstractOdomSensor &backSensor,
                            const Units::Length &backDist);

            void setPose(Math::Pose2D newPose) override;

            void update() override;

        };

    } // LouLib
} // Odometry

#endif //LOULIB_THREESENSORODOM_HPP