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/competition/command_structure/auto_command.h"
10#include "core/math/geometry/pose2d.h"
11#include "vex/vex.h"
12#include "core/math/kinematics/chassis_velocities.h"
13#include "core/math/kinematics/chassis_accelerations.h"
14
28 public:
34 OdometryBase(bool is_async);
35
40 virtual Pose2d get_position(void);
41
46 virtual void set_position(const Pose2d& newpos = zero_pos);
47 AutoCommand* SetPositionCmd(const Pose2d& newpos = zero_pos);
52 virtual Pose2d update() = 0;
53
61 static int background_task(void* ptr);
62
68 void end_async();
69
79 static double smallest_angle(double start_deg, double end_deg);
80
82 bool end_task = false;
83
88 virtual double get_speed();
89
94 virtual double get_accel();
95
100 double get_angular_speed_deg();
101
106 double get_angular_accel_deg();
107
113
119
120 inline static constexpr Pose2d zero_pos = Pose2d();
121
123 vex::task* handle;
124
126 vex::mutex mut;
127
130
131 double speed;
132 double accel;
135};
double ang_accel_deg
Definition odometry_base.h:134
static int background_task(void *ptr)
Definition odometry_base.cpp:25
double ang_speed_deg
Definition odometry_base.h:133
Pose2d current_pos
Current position of the robot in terms of x,y,rotation.
Definition odometry_base.h:129
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:131
OdometryBase(bool is_async)
Definition odometry_base.cpp:12
static double smallest_angle(double start_deg, double end_deg)
Definition odometry_base.cpp:78
vex::mutex mut
Mutex to control multithreading.
Definition odometry_base.h:126
double accel
Definition odometry_base.h:132
virtual double get_speed()
Definition odometry_base.cpp:94
ChassisVelocities get_chassis_velocity()
Definition odometry_base.cpp:131
virtual Pose2d update()=0
void end_async()
Definition odometry_base.cpp:43
ChassisAccelerations get_chassis_accel()
Definition odometry_base.cpp:151
virtual Pose2d get_position(void)
Gets the current position and rotation.
Definition odometry_base.cpp:46
vex::task * handle
handle to the vex task that is running the odometry code
Definition odometry_base.h:123
bool end_task
end_task is true if we instruct the odometry thread to shut down
Definition odometry_base.h:82
virtual void set_position(const Pose2d &newpos=zero_pos)
Sets the current position of the robot.
Definition odometry_base.cpp:58
double get_angular_speed_deg()
Definition odometry_base.cpp:110
Definition pose2d.h:21
constexpr Pose2d()
Default Constructor for Pose2d.
Definition pose2d.h:28
Represents robot chassis accelerations.
Definition chassis_accelerations.h:12
Represents robot chassis velocities.
Definition chassis_velocities.h:14