[wpilib] Add Gyro::GetRotation2d() (#2555)

This commit is contained in:
Tyler Veness
2020-06-29 19:10:07 -07:00
committed by GitHub
parent d9c7bbd046
commit e50dbe0c43
25 changed files with 130 additions and 188 deletions

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2018 FIRST. All Rights Reserved. */
/* Copyright (c) 2014-2020 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
@@ -7,6 +7,10 @@
#pragma once
#include <units/units.h>
#include "frc/geometry/Rotation2d.h"
namespace frc {
/**
@@ -38,7 +42,7 @@ class Gyro {
virtual void Reset() = 0;
/**
* Return the actual angle in degrees that the robot is currently facing.
* Return the heading of the robot in degrees.
*
* The angle is based on the current accumulator value corrected by the
* oversampling rate, the gyro type and the A/D calibration values. The angle
@@ -47,8 +51,7 @@ class Gyro {
* output as it sweeps past from 360 to 0 on the second time around.
*
* The angle is expected to increase as the gyro turns clockwise when looked
* at from the top. It needs to follow NED axis conventions in order to work
* properly with dependent control loops.
* at from the top. It needs to follow the NED axis convention.
*
* @return the current heading of the robot in degrees. This heading is based
* on integration of the returned rate from the gyro.
@@ -61,12 +64,30 @@ class Gyro {
* The rate is based on the most recent reading of the gyro analog value.
*
* The rate is expected to be positive as the gyro turns clockwise when looked
* at from the top. It needs to follow NED axis conventions in order to work
* properly with dependent control loops.
* at from the top. It needs to follow the NED axis convention.
*
* @return the current rate in degrees per second
*/
virtual double GetRate() const = 0;
/**
* Return the heading of the robot as a Rotation2d.
*
* The angle is based on the current accumulator value corrected by the
* oversampling rate, the gyro type and the A/D calibration values. The angle
* is continuous, that is it will continue from 360 to 361 degrees. This
* allows algorithms that wouldn't want to see a discontinuity in the gyro
* output as it sweeps past from 360 to 0 on the second time around.
*
* The angle is expected to increase as the gyro turns counterclockwise when
* looked at from the top. It needs to follow the NWU axis convention.
*
* @return the current heading of the robot as a Rotation2d. This heading is
* based on integration of the returned rate from the gyro.
*/
virtual Rotation2d GetRotation2d() const {
return Rotation2d{units::degree_t{-GetAngle()}};
}
};
} // namespace frc