RIT VEXU Core API
Loading...
Searching...
No Matches
odometry_base.h
1#pragma once
2
3// These are required for Eigen to compile
4// https://www.vexforum.com/t/eigen-integration-issue/61474/5
5#undef __ARM_NEON__
6#undef __ARM_NEON
7#include <Eigen/Dense>
8
9#include "core/robot_specs.h"
10#include "core/utils/command_structure/auto_command.h"
11#include "core/utils/geometry.h"
12#include "core/utils/math/geometry/pose2d.h"
13#include "vex.h"
14
15#ifndef PI
16#define PI 3.141592654
17#endif
18
32 public:
38 OdometryBase(bool is_async);
39
44 virtual Pose2d get_position(void);
45
50 virtual void set_position(const Pose2d &newpos = zero_pos);
51 AutoCommand *SetPositionCmd(const Pose2d &newpos = zero_pos);
56 virtual Pose2d update() = 0;
57
65 static int background_task(void *ptr);
66
72 void end_async();
73
83 static double smallest_angle(double start_deg, double end_deg);
84
86 bool end_task = false;
87
92 virtual double get_speed();
93
98 virtual double get_accel();
99
104 double get_angular_speed_deg();
105
110 double get_angular_accel_deg();
111
112 inline static constexpr Pose2d zero_pos = Pose2d();
113
117 vex::task *handle;
118
122 vex::mutex mut;
123
128
129 double speed;
130 double accel;
133};
double ang_accel_deg
Definition odometry_base.h:132
static int background_task(void *ptr)
Definition odometry_base.cpp:21
double ang_speed_deg
Definition odometry_base.h:131
Pose2d current_pos
Definition odometry_base.h:127
virtual double get_accel()
Definition odometry_base.cpp:102
double get_angular_accel_deg()
Definition odometry_base.cpp:118
double speed
Definition odometry_base.h:129
OdometryBase(bool is_async)
Definition odometry_base.cpp:8
static double smallest_angle(double start_deg, double end_deg)
Definition odometry_base.cpp:78
vex::mutex mut
Definition odometry_base.h:122
double accel
Definition odometry_base.h:130
virtual double get_speed()
Definition odometry_base.cpp:94
virtual Pose2d update()=0
void end_async()
Definition odometry_base.cpp:39
virtual Pose2d get_position(void)
Definition odometry_base.cpp:44
vex::task * handle
Definition odometry_base.h:117
bool end_task
end_task is true if we instruct the odometry thread to shut down
Definition odometry_base.h:86
virtual void set_position(const Pose2d &newpos=zero_pos)
Definition odometry_base.cpp:58
double get_angular_speed_deg()
Definition odometry_base.cpp:110
Definition pose2d.h:23