FIRST-Tech-Challenge / FIRST-Tech-Challenge/FtcRobotController

`ServoImpl#getPosition` incorrectly reversing a scaled servo.

Open
#1,470 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
1.3k
Forks
9.9k
Avg merge
18m
Merged PRs (30d)
1

Description

In `ServoImpl#getPosition`,`reverse` is called on the unscaled position in `getPosition`. While in `ServoImpl#setPosition`, `reverse` is called on scaled values. This means `Servo#getPosition` return incorrect values for reversed scaled servos.

## Example
Let's say we have a reversed servo scaled from `0` to `0.5` instead of from `0` to `1`:

Setting:
1. `setPosition(0.5)` -> sets an actual position of `0.25` for the servo.

Getting:
1. `ServoController#getServoPosition` returns `0.25` (line 178)
2. `reverse` reverses the value from `0.25` to `0.75` (line 179)
3. `Range.scale` scales the value from `0.75` to `1.5` (line 180)
4. `Range.clip` clips the value to `1`

## Result
**We expect to get 0.5, not 1**

## Code Screenshot
Image

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.