Hardware
package com.arcrobotics.ftclib.hardware
Each hardware device in FTCLib is based on the HardwareDevice
interface. This comes with two methods inherited by every device:
disable()
: disables the devicegetDeviceType()
: returns a String characterization of the device
FTCLib offers a lot of hardware devices that can be implemented or customized into your program. The best advice we can give to users is to take a look at the hardware package in the FTCLib repository. Here is the list of devices we currently have available (not including motors):
Gyro Extensions
The GyroEx
class is an extended gyro that allows users to add more configurable methods and possible control to their gyro. An example would be creating a ModernRoboticsGyro
class. The abstract class has the following methods:
init()
: initializes the gyro and sets the current direction to the 0 headinggetHeading()
: returns the heading of the robot compared to the last resetgetAbsoluteHeading()
: returns the absolute heading relative to the initial directiongetAngles()
: returns the x, y, and z orientation of the gyro. This is functionally the same as yaw, pitch, and roll.getRotation2d()
: transforms the heading into aRotation2d
objectreset()
: applies an offset so thatgetHeading()
returns the 0 position
A useful implementation of this is the RevIMU class for the built-in imu on your REV hub.
Sensors
There are a few sensors that are offered in FTCLib:
The SensorColor
class is just an extension for the ColorSensor
class that is in the SDK.
SensorDistance
and SensorDistanceEx
are interfaces for creating custom distance sensors if desired. An implementation of the SensorDistanceEx
interface is SensorRevTOFDistance
which utilizes the time-of-flight mechanic to track distance.
Servos
The ServoEx interface allows for more methods and actions than the normal servo class in the SDK. You can change the position of the servo relative to the last position or set it to an absolute position. You can either specify a position within the range of the servo's motion or have it rotate a certain number of specified angle units.
An example implementation of this can be found in the SimpleServo class. You can create a simple servo like this:
MIN_ANGLE
and MAX_ANGLE
are the minimum and maximum angle positions in degrees you would like to set the servo. This functionally serves as the servo's effective range. If you want to change the effective range at any point, you can do the following:
You can invert the servo's direction as well:
To turn to positions and angles, utilize the following methods:
rotateByAngle
: turns the servo a number of angle units relative to the current angleturnToAngle
: sets the absolute angle of the servorotateBy
: turns the servo a relative positional distance from the current positionsetPosition
: set the absolute position of the servo (from 0 to 1)
Last updated