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/math/geometry/pose2d.h"
12#include "vex.h"
13
14#ifndef PI
15#define PI 3.141592654
16#endif
17
31 public:
37 OdometryBase(bool is_async);
38
43 virtual Pose2d get_position(void);
44
49 virtual void set_position(const Pose2d& newpos = zero_pos);
50 AutoCommand* SetPositionCmd(const Pose2d& newpos = zero_pos);
55 virtual Pose2d update() = 0;
56
64 static int background_task(void* ptr);
65
71 void end_async();
72
82 static double smallest_angle(double start_deg, double end_deg);
83
85 bool end_task = false;
86
91 virtual double get_speed();
92
97 virtual double get_accel();
98
103 double get_angular_speed_deg();
104
109 double get_angular_accel_deg();
110
111 inline static constexpr Pose2d zero_pos = Pose2d();
112
114 vex::task* handle;
115
117 vex::mutex mut;
118
121
122 double speed;
123 double accel;
126};
double ang_accel_deg
Definition odometry_base.h:125
static int background_task(void *ptr)
Definition odometry_base.cpp:21
double ang_speed_deg
Definition odometry_base.h:124
Pose2d current_pos
Current position of the robot in terms of x,y,rotation.
Definition odometry_base.h:120
virtual double get_accel()
Definition odometry_base.cpp:98
double get_angular_accel_deg()
Definition odometry_base.cpp:114
double speed
Definition odometry_base.h:122
OdometryBase(bool is_async)
Definition odometry_base.cpp:8
static double smallest_angle(double start_deg, double end_deg)
Definition odometry_base.cpp:74
vex::mutex mut
Mutex to control multithreading.
Definition odometry_base.h:117
double accel
Definition odometry_base.h:123
virtual double get_speed()
Definition odometry_base.cpp:90
virtual Pose2d update()=0
void end_async()
Definition odometry_base.cpp:39
virtual Pose2d get_position(void)
Gets the current position and rotation.
Definition odometry_base.cpp:42
vex::task * handle
handle to the vex task that is running the odometry code
Definition odometry_base.h:114
bool end_task
end_task is true if we instruct the odometry thread to shut down
Definition odometry_base.h:85
virtual void set_position(const Pose2d &newpos=zero_pos)
Sets the current position of the robot.
Definition odometry_base.cpp:54
double get_angular_speed_deg()
Definition odometry_base.cpp:106
Definition pose2d.h:24