Thunderbots Project
Loading...
Searching...
No Matches
euclidean_to_wheel.h
1#pragma once
2
3#include <Eigen/Dense>
4
5#include "proto/primitive.pb.h"
6#include "shared/robot_constants.h"
7#include "software/geom/angular_velocity.h"
8#include "software/geom/vector.h"
9
17typedef Eigen::Vector3d EuclideanSpace_t;
18
27typedef Eigen::Vector4d WheelSpace_t;
28
29static constexpr int FRONT_RIGHT_WHEEL_SPACE_INDEX = 0;
30static constexpr int FRONT_LEFT_WHEEL_SPACE_INDEX = 1;
31static constexpr int BACK_LEFT_WHEEL_SPACE_INDEX = 2;
32static constexpr int BACK_RIGHT_WHEEL_SPACE_INDEX = 3;
33
35{
36 public:
37 EuclideanToWheel() = delete;
38
44 explicit EuclideanToWheel(const RobotConstants_t& robot_constants);
45
52 WheelSpace_t getWheelVelocity(EuclideanSpace_t euclidean_velocity) const;
53
60 EuclideanSpace_t getEuclideanVelocity(const WheelSpace_t& wheel_velocity) const;
61
62
74 WheelSpace_t rampWheelVelocity(const WheelSpace_t& current_wheel_velocity,
75 const WheelSpace_t& target_wheel_velocity,
76 const double& time_to_ramp);
77
78 private:
82 const double robot_radius_m_{};
83 const RobotConstants_t robot_constants_;
84
90 Eigen::Matrix<double, 4, 3> euclidean_to_wheel_velocity_D_;
91
97 Eigen::Matrix<double, 3, 4> wheel_to_euclidean_velocity_D_inverse_;
98};
Definition euclidean_to_wheel.h:35
EuclideanSpace_t getEuclideanVelocity(const WheelSpace_t &wheel_velocity) const
Definition euclidean_to_wheel.cpp:69
WheelSpace_t rampWheelVelocity(const WheelSpace_t &current_wheel_velocity, const WheelSpace_t &target_wheel_velocity, const double &time_to_ramp)
Definition euclidean_to_wheel.cpp:84
WheelSpace_t getWheelVelocity(EuclideanSpace_t euclidean_velocity) const
Definition euclidean_to_wheel.cpp:59
Definition robot_constants.h:7