LightLib
PROS library for VEX V5: EKF/MCL localization, RAMSETE path following, high-level chassis API
Loading...
Searching...
No Matches
defaultOdomChassisController.hpp
Go to the documentation of this file.
1/*
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 */
6#pragma once
7
12#include <memory>
13
14namespace okapi {
16 public:
35 std::shared_ptr<Odometry> iodometry,
36 std::shared_ptr<ChassisController> icontroller,
38 QLength imoveThreshold = 0_mm,
39 QAngle iturnThreshold = 0_deg,
40 std::shared_ptr<Logger> ilogger = Logger::getDefaultLogger());
41
46
55 void driveToPoint(const Point &ipoint,
56 bool ibackwards = false,
57 const QLength &ioffset = 0_mm) override;
58
64 void turnToPoint(const Point &ipoint) override;
65
69 std::shared_ptr<ChassisController> getChassisController();
70
75
79 void turnToAngle(const QAngle &iangle) override;
80
84 void moveDistance(QLength itarget) override;
85
89 void moveRaw(double itarget) override;
90
94 void moveDistanceAsync(QLength itarget) override;
95
99 void moveRawAsync(double itarget) override;
100
107 void turnAngle(QAngle idegTarget) override;
108
112 void turnRaw(double idegTarget) override;
113
120 void turnAngleAsync(QAngle idegTarget) override;
121
125 void turnRawAsync(double idegTarget) override;
126
130 void setTurnsMirrored(bool ishouldMirror) override;
131
135 bool isSettled() override;
136
140 void waitUntilSettled() override;
141
145 void stop() override;
146
150 void setMaxVelocity(double imaxVelocity) override;
151
155 double getMaxVelocity() const override;
156
161
166
170 std::shared_ptr<ChassisModel> getModel() override;
171
175 ChassisModel &model() override;
176
177 protected:
178 std::shared_ptr<Logger> logger;
179 std::shared_ptr<ChassisController> controller;
180
182};
183} // namespace okapi
A version of the ReadOnlyChassisModel that also supports write methods, such as setting motor speed.
std::shared_ptr< ChassisController > controller
DefaultOdomChassisController(DefaultOdomChassisController &&other)=delete
DefaultOdomChassisController & operator=(const DefaultOdomChassisController &other)=delete
void turnAngleAsync(QAngle idegTarget) override
Turns chassis to desired angle (turns in the direction of smallest angle) (ex.
void moveRaw(double itarget) override
This delegates to the input ChassisController.
void turnRaw(double idegTarget) override
This delegates to the input ChassisController.
std::shared_ptr< ChassisController > getChassisController()
void moveDistance(QLength itarget) override
This delegates to the input ChassisController.
void turnRawAsync(double idegTarget) override
This delegates to the input ChassisController.
void waitUntilSettled() override
This delegates to the input ChassisController.
void turnAngle(QAngle idegTarget) override
Turns chassis to desired angle (turns in the direction of smallest angle) (ex.
DefaultOdomChassisController(const TimeUtil &itimeUtil, std::shared_ptr< Odometry > iodometry, std::shared_ptr< ChassisController > icontroller, const StateMode &imode=StateMode::FRAME_TRANSFORMATION, QLength imoveThreshold=0_mm, QAngle iturnThreshold=0_deg, std::shared_ptr< Logger > ilogger=Logger::getDefaultLogger())
Odometry based chassis controller that moves using a separately constructed chassis controller.
void moveDistanceAsync(QLength itarget) override
This delegates to the input ChassisController.
void turnToPoint(const Point &ipoint) override
Turns the robot to face a point in the odom frame.
AbstractMotor::GearsetRatioPair getGearsetRatioPair() const override
This delegates to the input ChassisController.
DefaultOdomChassisController & operator=(DefaultOdomChassisController &&other)=delete
std::shared_ptr< ChassisModel > getModel() override
This delegates to the input ChassisController.
double getMaxVelocity() const override
This delegates to the input ChassisController.
DefaultOdomChassisController(const DefaultOdomChassisController &)=delete
ChassisModel & model() override
This delegates to the input ChassisController.
void turnToAngle(const QAngle &iangle) override
This delegates to the input ChassisController.
bool isSettled() override
This delegates to the input ChassisController.
void driveToPoint(const Point &ipoint, bool ibackwards=false, const QLength &ioffset=0_mm) override
Drives the robot straight to a point in the odom frame.
ChassisController & chassisController()
void moveRawAsync(double itarget) override
This delegates to the input ChassisController.
void setTurnsMirrored(bool ishouldMirror) override
This delegates to the input ChassisController.
void stop() override
This delegates to the input ChassisController.
ChassisScales getChassisScales() const override
This delegates to the input ChassisController.
void setMaxVelocity(double imaxVelocity) override
This delegates to the input ChassisController.
static std::shared_ptr< Logger > getDefaultLogger()
Utility class for holding an AbstractTimer, AbstractRate, and SettledUtil together in one class since...
Definition timeUtil.hpp:18
StateMode
The mode for the OdomState calculated by Odometry.
Definition stateMode.hpp:12
@ FRAME_TRANSFORMATION
+x is forward, +y is right, 0 degrees is along +x
A simple structure representing the full ratio between motor and wheel.