# US 9,821,466 B2 · Devices and methods for encoder calibration

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,821,466 B2
- Document ID: US9821466B2
- Status: Granted
- Kind: B2
- Application number: 15/222,485
- Filed: 2016-07-28
- Published: 2016-11-17
- Granted: 2017-11-21
- Earliest claimed: 2014-12-21
- Assignees: X Development LLC
- Applicants: X Development LLC
- Inventors: Jeffrey Thomas Bingham; Rob Wilson; Advait Jain; Miguel Rivas; Lee Magnusson
- Web page: https://patentgrep.com/patent/US9821466B2

## CPC

- B25J 9/1692: {Calibration of manipulator}
- B25J 9/1697: {Vision controlled systems}
- G01D 5/2448: {Correction of gain, threshold, offset or phase control}
- G05B 2219/39058: Sensor, calibration of sensor, potentiometer
- G05B 2219/40596: Encoder in each joint
- Y10S 901/02: Arm motion controller
- Y10S 901/09: Closed loop, sensor feedback controls arm movement
- Y10S 901/47: Optical
- B25J: MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES ({manipulators specially adapted for use in surgery A61B34/70; manipulators used in cleaning hollow articles B08B9/04}; manipulators associated with rolling mills B21B39/20; manipulators associated with forging machines B21J13/10; {manipulators associated with picking-up and placing mechanisms B23P19/007}; means for holding wheels or parts thereof B60B30/00; {vehicles with ground-engaging propulsion means, e.g. walking members B62D57/02, B62D57/032; devices for picking-up and depositing articles or materials between conveyors B65G47/90, B65G47/91; manipulators with gripping or holding means for transferring packages B65H67/065}; cranes B66C; {manipulators used in the protection or supervision of pipe-line installations F17D5/00; walking equipment adapted for nuclear steam-generators F22B37/006}; manipulators specially adapted for, or associated with, nuclear reactors G21C; {apparatus used for handling wafers during manufacture or treatment of semiconductor H10P72/50})
- G01D: MEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A device is provided that comprises a hardware segment and an actuator to adjust a position of the segment within a range of positions. The device also comprises an encoder to rotate about an encoder axis responsive to the actuator adjusting the position. The device also comprises data storage that includes a dataset indicating offset angles between a reference configuration and a plurality of configurations of the encoder. The device also comprises a controller to cause the actuator to adjust the position to an end of the range of positions, responsively identify a range of encoder positions of the encoder that corresponds to the range of positions of the segment, modify the dataset such that the reference configuration corresponds to an end of the range of encoder positions, and determine a mapping between the offset angles indicated by the modified dataset and the range of positions of the hardware segment.

## Claims

### Claim 1

A device comprising:
a hardware segment;
an actuator to adjust a position of the hardware segment within a range of positions;
an encoder to provide an indication of the adjusted position of the hardware segment, wherein the encoder provides an index signal responsive to the encoder being at an index encoder position of a plurality of index encoder positions, and wherein the plurality of index encoder positions are separated by respective offsets;
data storage to store data indicating respective given offsets between a reference configuration and a plurality of configurations of the encoder, wherein the respective given offsets relate to the respective offsets between the plurality of index encoder positions; and
a controller to: cause the actuator to adjust the position of the hardware segment, detect at least two index signals from the encoder responsive to the adjustment of the position of the hardware segment, and modify, based on at least the detection of the at least two index signals, the respective given offsets of the stored data to associate the reference configuration with the hardware segment being at: (i) an end of the range of positions, (ii) another end of the range of positions, or (iii) a given position outside the range of positions.

### Claim 2 (depends on 1)

The device of claim 1, wherein the encoder is coupled, at a given orientation of the encoder, to the hardware segment, wherein a range of encoder positions is associated with the range of positions of the hardware segment based on the given orientation of the encoder, and wherein the controller:
causes the actuator to adjust the position of the hardware segment to the end of the range of positions of the hardware segment; and
responsively identifies the range of encoder positions associated with the range of positions of the hardware segment, wherein the controller modifies the stored data further based on the identification of the range of encoder positions.

### Claim 3 (depends on 1)

The device of claim 1, wherein the controller:
determines, based on information received from the encoder between the detection of the at least two index signals, an offset between index encoder positions associated with the at least two index signals; and
identifies, based on at least the determined offset, respective index encoder positions of the encoder that are associated with the at least two detected index signals, wherein the controller modifies the stored data based on at least the identification of the index encoder positions.

### Claim 4 (depends on 3)

The device of claim 3, wherein the controller:
associates the determined offset with at least one given offset indicated in the stored data, wherein the controller identifies the respective index encoder positions based on the association.

### Claim 5 (depends on 1)

The device of claim 1, wherein the controller:
receives an input indicative of a home position within the range of positions of the hardware segment; and
determines a mapping between the range of positions of the hardware segment and the respective given offsets indicated in the modified data, wherein the determining the mapping comprises: assigning a value of zero for the home position, positive values for first positions of the hardware segment at a first direction from the home position, and negative values for second positions of the hardware segment at a second direction from the home position.

### Claim 6 (depends on 5)

The device of claim 5, wherein the received input is indicative of a selection of a current position of the hardware segment as the home position, and wherein the controller:
responsive to receiving the input, detects an encoder position of the encoder, wherein determining the mapping is based on the detected encoder position.

### Claim 7 (depends on 5)

The device of claim 5, wherein the controller:
receives an indication of a request to adjust the position of the hardware segment to a particular position relative to the home position; and
causes the actuator to adjust the position of the hardware segment to the particular position based on the mapping.

### Claim 8 (depends on 1)

The device of claim 1, wherein the encoder comprises:
a sensor; and
a plurality of deformations separated by the respective offsets between the plurality of index encoder positions, wherein the encoder provides the index signal based on detection of a deformation of the plurality of deformations by the sensor.

### Claim 9 (depends on 8)

The device of claim 8, wherein the encoder comprises:
another plurality of deformations, wherein the encoder provides an indication of an encoder position of the encoder based on detection of a given deformation of the other plurality of deformations by the sensor.

### Claim 10 (depends on 9)

The device of claim 9, wherein the encoder comprises:
a first disk that includes the plurality of deformations separated by the respective offsets between the plurality of index encoder positions; and
a second disk coupled to the first disk, wherein the second disk includes the other plurality of deformations.

### Claim 11

A method comprising:
adjusting, by a robotic device that includes one or more processors, a position of a hardware segment of the robotic device within a range of positions;
receiving, from an encoder coupled to the hardware segment, an indication of the adjusted position of the hardware segment, wherein the encoder provides an index signal responsive to the encoder being at an index encoder position of a plurality of index encoder positions separated by respective offsets;
detecting at least two index signals from the encoder in response to adjusting the position of the hardware segment; and
modifying, based on the received indication, a dataset indicating respective given offsets between a reference configuration and a plurality of configurations of the encoder, wherein the respective given offsets relate to the respective offsets between the plurality of index encoder positions, and wherein modifying the dataset comprises associating, based on at least detecting the at least two index signals, the reference configuration with the hardware segment being at: (i) an end of the range of positions, (ii) another end of the range of positions, or (iii) a given position outside the range of positions.

### Claim 12 (depends on 11)

The method of claim 11, wherein associating the reference configuration of the dataset comprises:
responsive to adjusting the position of the hardware segment, identifying a range of encoder positions associated with the range of positions of the hardware segment.

### Claim 13 (depends on 11)

The method of claim 11, further comprising:
determining, based on information received from the encoder between the detection of the at least two index signals, an offset between index encoder positions associated with the at least two index signals; and
mapping, based on the determined offset, the at least two detected index signals to corresponding configurations of the plurality of configurations associated with the dataset, wherein associating the reference configuration is based on the mapping.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
associating the determined offset with at least one given offset indicated in the dataset, wherein mapping the at least two detected index signals is based on the association.

### Claim 15

A non-transitory computer readable medium storing instructions that, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising:
receiving calibration data from a robotic device indicating encoder positions of an encoder coupled to a hardware segment of the robotic device, wherein the encoder positions are associated with respective positions of the hardware segment within a range of positions, wherein the encoder provides an index signal responsive to the encoder being at an index encoder position of a plurality of index encoder positions separated by respective offsets, and wherein the calibration data relates to at least two index signals provided by the encoder in response to an adjustment of a position of the hardware segment;
modifying, based on the calibration data, a dataset indicating respective given offsets between a reference configuration and a plurality of configurations of the encoder, wherein the respective given offsets relate to the respective offsets between the plurality of index encoder positions, and wherein modifying the dataset comprises associating the reference configuration with the hardware segment being at: (i) an end of the range of positions, (ii) another end of the range of positions, or (iii) a given position outside the range of positions; and
operating the robotic device based on the modified dataset.

### Claim 16 (depends on 15)

The non-transitory computer readable medium of claim 15, the operations further comprising:
receiving an input indicative of a home position within the range of positions of the hardware segment; and
determining a mapping between the range of positions of the hardware segment and the respective given offsets indicated in the modified dataset, wherein determining the mapping comprises assigning a value of zero for the home position, positive values for first positions of the hardware segment at a first direction from the home position, and negative values for second positions of the hardware segment at a second direction from the home position.

### Claim 17 (depends on 16)

The non-transitory computer readable medium of claim 16, wherein receiving the input comprises receiving an indication of a selection of a current position of the hardware segment as the home position, the operations further comprising:
responsive to receiving the input, obtaining, from the robotic device, an indication of an encoder position of the encoder, wherein determining the mapping is based on the obtained indication.

### Claim 18 (depends on 16)

The non-transitory computer readable medium of claim 16, the operations further comprising:
receiving an input indicative of a request to adjust the position of the hardware segment to a particular position relative to the home position; and
adjusting the position of the hardware segment to the particular position based on the mapping.
