RIT VEXU Core API
Loading...
Searching...
No Matches
odometry_serial.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/subsystems/custom_encoder.h"
10#include "core/subsystems/odometry/odometry_base.h"
11#include "core/utils/math_util.h"
12
13#include "core/utils/math/geometry/pose2d.h"
14
33 public:
38 bool is_async, bool calc_vel_acc_on_brain, Pose2d initial_pose, Pose2d sensor_offset, int32_t port,
39 int32_t baudrate
40 );
41
42 void send_config(const Pose2d &initial_pose, const Pose2d &sensor_offset, const bool &calc_vel_acc_on_brain);
43
44 int background_task(void *ptr);
45
51 Pose2d update() override;
52
56 void set_position(const Pose2d &new_pose) override;
57
58 int receive_cobs_packet(uint32_t port, uint8_t *buffer, size_t buffer_size);
59
60 Pose2d get_position(void) override;
61
62 Pose2d get_pose2d(void);
63
64 size_t cobs_decode(const uint8_t *buffer, size_t length, void *data);
65
66 size_t cobs_encode(const void *data, size_t length, uint8_t *buffer);
67
68 double get_speed() override;
69
70 double get_accel() override;
71
72 private:
73 int32_t _port;
74
75 bool calc_vel_acc_on_brain;
76
77 Pose2d pose;
78
79 Pose2d pose_offset;
80
81 double speed;
82 double accel;
83 double ang_speed_deg;
84 double ang_accel_deg;
85};
OdometryBase(bool is_async)
Definition odometry_base.cpp:8
void send_config(const Pose2d &initial_pose, const Pose2d &sensor_offset, const bool &calc_vel_acc_on_brain)
Definition odometry_serial.cpp:48
Pose2d get_pose2d(void)
Definition odometry_serial.cpp:171
OdometrySerial(bool is_async, bool calc_vel_acc_on_brain, Pose2d initial_pose, Pose2d sensor_offset, int32_t port, int32_t baudrate)
Definition odometry_serial.cpp:35
void set_position(const Pose2d &new_pose) override
Definition odometry_serial.cpp:154
size_t cobs_decode(const uint8_t *buffer, size_t length, void *data)
Definition odometry_serial.cpp:213
Pose2d update() override
Definition odometry_serial.cpp:115
Pose2d get_position(void) override
Definition odometry_serial.cpp:161
int receive_cobs_packet(uint32_t port, uint8_t *buffer, size_t buffer_size)
Definition odometry_serial.cpp:83
size_t cobs_encode(const void *data, size_t length, uint8_t *buffer)
Definition odometry_serial.cpp:182
Definition pose2d.h:24