HoloLib
High-performance holonomic (X-Drive) control library for VEX V5
Loading...
Searching...
No Matches
motions.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "hololib/chassis.hpp"
4#include "hololib/config.hpp"
8#include <cstdint>
9#include <functional>
10#include <vector>
11
12namespace hololib {
13struct MoveParams {
14 bool angleCorrection = true; /**< Whether to correct the angle during movement */
15 float maxTranslationSpeed = 127.0f; /**< Maximum speed for translation */
16 float maxRotationSpeed = 127.0f; /**< Maximum speed for rotation */
17 float minSpeed = 0.0f; /**< Minimum speed (avoid stalling) */
18 float exitRange = 0.5f; /**< Acceptable position error to consider motion complete */
19 float earlyExitRange = 0.0f; /**< Distance to exit early before the movement is fully settled */
20 uint32_t timeout = 5000; /**< Maximum time allowed for movement (ms) */
21};
35
36struct PathPoint {
37 float x;
38 float y;
39 float theta;
40};
41
42enum class HeadingMode {
46};
47
48enum class SwingSide {
49 Left,
50 Right,
51};
52
53constexpr float DEG2RAD = M_PI / 180.0f;
54constexpr float RAD2DEG = 180.0f / M_PI;
55
56/**
57 *@brief Moves the robot to a specific point using PID control.
58 *@param tx The x-coordinate of the target point.
59 *@param ty The y-coordinate of the target point.
60 *@param params The movement parameters.
61 *@param settings Shared motion dependencies.
62 *@return void
63 */
64void moveToPoint(float tx, float ty, MoveParams params = {}, MoveSettings settings = {});
65
66void followPath(const std::vector<PathPoint>& path, float lookaheadDistance, HeadingMode headingMode,
67 float holdAngleDeg, bool reversed, MoveParams params = {}, MoveSettings settings = {});
68
69void turnToHeading(float targetDeg, MoveParams params = {}, MoveSettings settings = {});
70
71void turnToPoint(float tx, float ty, MoveParams params = {}, MoveSettings settings = {});
72
73void moveRelative(float forward, float sideways, bool holdHeading = true, MoveParams params = {}, MoveSettings settings = {});
74
75void moveDistance(float distance, bool holdHeading = true, MoveParams params = {}, MoveSettings settings = {});
76
77void strafeDistance(float distance, bool holdHeading = true, MoveParams params = {}, MoveSettings settings = {});
78
79void moveToPose(float tx, float ty, float targetThetaDeg, MoveParams params = {}, MoveSettings settings = {});
80
81void swingTurn(float targetThetaDeg, SwingSide lockedSide, MoveParams params = {}, MoveSettings settings = {});
82
83}; // namespace hololib
A scheduler that interpolates and selects PID gains based on the current error.
Manages a collection of obstacles and provides avoidance computations.
constexpr float RAD2DEG
Definition motions.hpp:54
void swingTurn(float targetThetaDeg, SwingSide lockedSide, MoveParams params={}, MoveSettings settings={})
void turnToPoint(float tx, float ty, MoveParams params={}, MoveSettings settings={})
constexpr float DEG2RAD
Definition motions.hpp:53
void followPath(const std::vector< PathPoint > &path, float lookaheadDistance, HeadingMode headingMode, float holdAngleDeg, bool reversed, MoveParams params={}, MoveSettings settings={})
void moveDistance(float distance, bool holdHeading=true, MoveParams params={}, MoveSettings settings={})
void turnToHeading(float targetDeg, MoveParams params={}, MoveSettings settings={})
void moveToPoint(float tx, float ty, MoveParams params={}, MoveSettings settings={})
Moves the robot to a specific point using PID control.
void moveRelative(float forward, float sideways, bool holdHeading=true, MoveParams params={}, MoveSettings settings={})
void moveToPose(float tx, float ty, float targetThetaDeg, MoveParams params={}, MoveSettings settings={})
void strafeDistance(float distance, bool holdHeading=true, MoveParams params={}, MoveSettings settings={})
float minSpeed
Minimum speed (avoid stalling)
Definition motions.hpp:17
float exitRange
Acceptable position error to consider motion complete.
Definition motions.hpp:18
float maxTranslationSpeed
Maximum speed for translation.
Definition motions.hpp:15
float earlyExitRange
Distance to exit early before the movement is fully settled.
Definition motions.hpp:19
uint32_t timeout
Maximum time allowed for movement (ms)
Definition motions.hpp:20
bool angleCorrection
Whether to correct the angle during movement.
Definition motions.hpp:14
float maxRotationSpeed
Maximum speed for rotation.
Definition motions.hpp:16
ObstacleManager & obstacles
Definition motions.hpp:31
GainScheduler ySched
Definition motions.hpp:30
pros::Motor & backRight
Definition motions.hpp:26
pros::Motor & frontRight
Definition motions.hpp:24
GainScheduler & xSched
Definition motions.hpp:30
std::function< hololib::Pose(bool)> poseGetter
Definition motions.hpp:33
EncoderEKFOdometry & odom
Definition motions.hpp:29
GainScheduler thetaSched
Definition motions.hpp:30
pros::Motor & backLeft
Definition motions.hpp:25
pros::Motor & frontLeft
Definition motions.hpp:23