RIT VEXU Core API
Loading...
Searching...
No Matches
odometry_base.h
1#pragma once
2
3#include "../core/include/robot_specs.h"
4#include "../core/include/utils/command_structure/auto_command.h"
5#include "../core/include/utils/geometry.h"
6#include "vex.h"
7
8#ifndef PI
9#define PI 3.141592654
10#endif
11
25public:
31 OdometryBase(bool is_async);
32
37 pose_t get_position(void);
38
43 virtual void set_position(const pose_t &newpos = zero_pos);
44 AutoCommand *SetPositionCmd(const pose_t &newpos = zero_pos);
49 virtual pose_t update() = 0;
50
58 static int background_task(void *ptr);
59
65 void end_async();
66
73 static double pos_diff(pose_t start_pos, pose_t end_pos);
74
81 static double rot_diff(pose_t pos1, pose_t pos2);
82
92 static double smallest_angle(double start_deg, double end_deg);
93
95 bool end_task = false;
96
101 double get_speed();
102
107 double get_accel();
108
113 double get_angular_speed_deg();
114
119 double get_angular_accel_deg();
120
124 inline static constexpr pose_t zero_pos = {.x = 0.0L, .y = 0.0L, .rot = 90.0L};
125
126protected:
130 vex::task *handle;
131
135 vex::mutex mut;
136
141
142 double speed;
143 double accel;
146};
Definition odometry_base.h:24
double ang_accel_deg
Definition odometry_base.h:145
virtual void set_position(const pose_t &newpos=zero_pos)
Definition odometry_base.cpp:58
static int background_task(void *ptr)
Definition odometry_base.cpp:22
double ang_speed_deg
Definition odometry_base.h:144
double get_accel()
Definition odometry_base.cpp:120
virtual pose_t update()=0
pose_t get_position(void)
Definition odometry_base.cpp:44
double get_angular_accel_deg()
Definition odometry_base.cpp:136
static double pos_diff(pose_t start_pos, pose_t end_pos)
Definition odometry_base.cpp:79
static constexpr pose_t zero_pos
Definition odometry_base.h:124
double speed
Definition odometry_base.h:142
OdometryBase(bool is_async)
Definition odometry_base.cpp:9
pose_t current_pos
Definition odometry_base.h:140
static double smallest_angle(double start_deg, double end_deg)
Definition odometry_base.cpp:96
vex::mutex mut
Definition odometry_base.h:135
double accel
Definition odometry_base.h:143
double get_speed()
Definition odometry_base.cpp:112
void end_async()
Definition odometry_base.cpp:39
vex::task * handle
Definition odometry_base.h:130
bool end_task
end_task is true if we instruct the odometry thread to shut down
Definition odometry_base.h:95
static double rot_diff(pose_t pos1, pose_t pos2)
Definition odometry_base.cpp:89
double get_angular_speed_deg()
Definition odometry_base.cpp:128
Definition geometry.h:52
double x
x position in the world
Definition geometry.h:53