RIT VEXU Core API
Loading...
Searching...
No Matches
odometry_tank.h
1#pragma once
2
3#include "core/subsystems/custom_encoder.h"
4#include "core/subsystems/odometry/odometry_base.h"
5#include "core/utils/geometry.h"
6#include "core/utils/moving_average.h"
7
8#include "core/robot_specs.h"
9
10static int background_task(void *odom_obj);
11
18class OdometryTank : public OdometryBase {
19 public:
31 vex::motor_group &left_side, vex::motor_group &right_side, robot_specs_t &config, vex::inertial *imu = NULL,
32 bool is_async = true
33 );
34
45
47 CustomEncoder &left_custom_enc, CustomEncoder &right_custom_enc, robot_specs_t &config, vex::inertial *imu = NULL,
48 bool is_async = true
49 );
50
61
63 vex::encoder &left_vex_enc, vex::encoder &right_vex_enc, robot_specs_t &config, vex::inertial *imu = NULL,
64 bool is_async = true
65 );
66
71 Pose2d update() override;
72
77 void set_position(const Pose2d &newpos = zero_pos) override;
78
79 private:
83 static Pose2d calculate_new_pos(
84 robot_specs_t &config, Pose2d &stored_info, double lside_diff, double rside_diff, 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
OdometryBase(bool is_async)
Definition odometry_base.cpp:8
void set_position(const Pose2d &newpos=zero_pos) override
Definition odometry_tank.cpp:56
Pose2d update() override
Definition odometry_tank.cpp:68
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:13
Definition pose2d.h:23
Definition robot_specs.h:11