RIT VEXU Core API
Loading...
Searching...
No Matches
odometry_tank.h
1#pragma once
2
3#include "core/robot_specs.h"
4#include "core/subsystems/custom_encoder.h"
5#include "core/subsystems/odometry/odometry_base.h"
6#include "core/utils/moving_average.h"
7
8// static int background_task(void *odom_obj);
15class OdometryTank : public OdometryBase {
16 public:
29 vex::motor_group& left_side, vex::motor_group& right_side, robot_specs_t& config,
30 vex::inertial* imu = NULL, bool is_async = true
31 );
32
44
46 CustomEncoder& left_custom_enc, CustomEncoder& right_custom_enc, robot_specs_t& config,
47 vex::inertial* imu = NULL, bool is_async = true
48 );
49
61
63 vex::encoder& left_vex_enc, vex::encoder& right_vex_enc, robot_specs_t& config,
64 vex::inertial* imu = NULL, bool is_async = true
65 );
66
71 Pose2d update() override;
72
77 void set_position(const Pose2d& newpos = zero_pos) override;
78
79 private:
82 static Pose2d calculate_new_pos(
83 robot_specs_t& config, Pose2d& stored_info, double lside_diff, double rside_diff,
84 double angle_deg
85 );
86
87 vex::motor_group *left_side, *right_side;
88 CustomEncoder *left_custom_enc, *right_custom_enc;
89 vex::encoder *left_vex_enc, *right_vex_enc;
90 vex::inertial* imu;
91 robot_specs_t& config;
92
93 double rotation_offset = 0;
95};
Definition custom_encoder.h:8
Definition moving_average.h:87
ExponentialMovingAverage(int buffer_size)
Definition moving_average.cpp:75
OdometryBase(bool is_async)
Definition odometry_base.cpp:8
void set_position(const Pose2d &newpos=zero_pos) override
Resets the position and rotational data to the input.
Definition odometry_tank.cpp:79
Pose2d update() override
Definition odometry_tank.cpp:92
OdometryTank(vex::motor_group &left_side, vex::motor_group &right_side, robot_specs_t &config, vex::inertial *imu=NULL, bool is_async=true)
Definition odometry_tank.cpp:14
Definition pose2d.h:21
Definition robot_specs.h:11