Difference between revisions of "Encoders"

(Reading an Encoder)
(Redirected page to Encoder Support)
(Tags: New redirect, 2017 source edit)
 
(24 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Rotary encoders are devices that generate electrical pulses as they rotate. The angle or rate of rotation that the encoder is experiencing can be measured by monitoring the number or frequency of the pulses. In robotics, encoders are most commonly attached to the robot's drive motors and used to measure the robot's linear speed, angular speed, and distance traveled. More generally, encoders can be attached to any of the robot's joints to track its speed and/or angle, such as a rotating joint in a robotic arm.
+
#REDIRECT [[Encoder Support]]
 +
 
 +
[[File:TD-044-078 ig42 motor encoders.jpg|thumb|191x191px|The encoder is inside the black end cap. Extra wires are present that connect with the encoder.]]
 +
Rotary encoders are devices that generate electrical pulses as they rotate. The angle or rate of rotation that the encoder is experiencing can be measured by monitoring the number or frequency of the pulses. In robotics, encoders are most commonly attached to the robot's drive motors and used to measure the robot's linear speed, angular speed, and distance traveled. Drive motor encoders can also be used to perform [[Speed Control#Closed Loop|closed loop speed control]] on the wheels. More generally, encoders can be attached to any of the robot's joints to track its speed and/or angle, such as a rotating joint in a robotic arm.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
<br />
 +
 
 +
 
 +
 
 +
<br />
 +
 
  
 
==Sensor Overview==
 
==Sensor Overview==
'''Measurement:''' Motor rotation distance. When attached to the drive motors, can be used to generate position and heading estimates. In most practical applications encoders are best used to track linear and angular velocities instead.
+
'''Measurement:''' Motor rotation distance. When attached to the drive motors, used to measure wheel speed and distance.
  
 
'''Ideal operating conditions:''' Robot operating on smooth/even ground where wheels maintain constant rolling contact with no slip.
 
'''Ideal operating conditions:''' Robot operating on smooth/even ground where wheels maintain constant rolling contact with no slip.
Line 10: Line 24:
 
*Quite accurate over short time periods/distances
 
*Quite accurate over short time periods/distances
 
*Works indoors and outdoors, day or night
 
*Works indoors and outdoors, day or night
*Good for mitigating discrete jumps in position and orientation estimates when fused with other sensors
+
*Good for mitigating discrete jumps in [[Positioning System|position]] and orientation estimates when [[Data Filtering|fused]] with other sensors
 
*Great fallback sensor when things go wrong
 
*Great fallback sensor when things go wrong
*Can be used for speed control of the wheels
+
*Can be used for [[Speed Control#Closed Loop|closed loop speed control]] of the wheels
  
 
'''Sensor Cons:'''
 
'''Sensor Cons:'''
Line 18: Line 32:
 
*Requires initial calibration between encoder counts and amount of robot movement
 
*Requires initial calibration between encoder counts and amount of robot movement
 
*Assumes no slip between robot wheel and ground. An unstable or inconsistent surface beneath the robot can lead to wheel slippage. Skid-steer robots also experience wheel slippage while turning. This causes error in the estimated robot speed and position because the wheel moves but the robot doesn’t.
 
*Assumes no slip between robot wheel and ground. An unstable or inconsistent surface beneath the robot can lead to wheel slippage. Skid-steer robots also experience wheel slippage while turning. This causes error in the estimated robot speed and position because the wheel moves but the robot doesn’t.
*Position errors from wheel slippage and imperfect calibration accumulate over time/distance to give a progressively worse position estimate. *When used to measure speed instead of position this is less of an issue.
+
*[[Positioning System|Position]] errors from wheel slippage and imperfect calibration accumulate over time/distance to give a progressively worse position estimate. When used to measure speed instead of position this is less of an issue.
 
*Additional hardware is often needed to keep track of the encoder counts. However, some motor controllers (such as Roboteq models) have this functionality built-in.
 
*Additional hardware is often needed to keep track of the encoder counts. However, some motor controllers (such as Roboteq models) have this functionality built-in.
  
 
==Encoder Output==
 
==Encoder Output==
 +
[[File:quadrature encoder pulses.jpg|thumb|Quadrature Encoder Pulses]]
 
Encoders typically output what is known as a quadrature signal. A quadrature signal is comprised of two channels (Channel A and Channel B). Channel B is 90 degrees out of phase from channel A. This allows the circuitry watching the output signal to know what direction you are traveling. If B trails A then your motor is moving clockwise, if A trails B then your motor is moving counter clockwise.
 
Encoders typically output what is known as a quadrature signal. A quadrature signal is comprised of two channels (Channel A and Channel B). Channel B is 90 degrees out of phase from channel A. This allows the circuitry watching the output signal to know what direction you are traveling. If B trails A then your motor is moving clockwise, if A trails B then your motor is moving counter clockwise.
  
Picture
+
<br />
 
 
==Reading Encoders==
 
We have two preferred ways for tracking and reading encoder values.
 
 
 
===Quadrature Encoder Buffer Board===
 
This device uses the LS3766R chip and connects directly to the encoders, maintains a count of the encoder pulses, and provides a SPI interface to read the counts from a microcontroller. We sell this board in 1-, 2-, 3-, and 4-channel variants. The board provides optional pullup resistors for the encoder A and B signals so no additional circuitry is required.<br />[##ITEM2397## Single LS7366R Quadrature Encoder Buffer (TE-183-001)]
 
  
[##ITEM1523## Dual LS7366R Quadrature Encoder Buffer (TE-183-002)]
+
==Adding Encoders to a Robot==
 +
We have written a practical guide on this topic [[How to Add Encoders to a Robot|here]].
  
[##ITEM1523## Triple LS7366R Quadrature Encoder Buffer (TE-183-003)]
 
[##ITEM1523## Quadruple LS7366R Quadrature Encoder Buffer (TE-183-004)]
 
===Roboteq Motor Controller===
 
 
==Quick Links to our Encoders and Accessories:==
 
==Quick Links to our Encoders and Accessories:==
 
'''Encoder Buffer and Pull-up Boards:'''
 
'''Encoder Buffer and Pull-up Boards:'''
  
*[##ITEM1523## Dual LS7366R Quadrature Encoder Buffer Breakout Board (TE-183-002)]
+
*<sdr item id=1523> Dual LS7366R Quadrature Encoder Buffer Breakout Board (TE-183-002)</sdr item>
*[##ITEM1514## Kangaroo x2 motion controller (TE-180-000)]
+
*<sdr item id=1514> Kangaroo x2 motion controller (TE-180-000)</sdr item>
*[##ITEM1512## IG32, IG42, and IG52 Gear Motor Encoder Pull-up Board (TE-179-000)]
+
*<sdr item id=1512> IG32, IG42, and IG52 Gear Motor Encoder Pull-up Board (TE-179-000)</sdr item>
  
 
'''Motors with Encoders:'''
 
'''Motors with Encoders:'''
  
*[##ITEM1238## IG42 24VDC 013 RPM Gear Motor with Encoder (TD-044-013)]
+
*<sdr item id=1238> IG42 24VDC 013 RPM Gear Motor with Encoder (TD-044-013)</sdr item>
*[##ITEM1181## IG52-04 24VDC 082 RPM Gear Motor with Encoder (TD-045-082)]
+
*<sdr item id=1181> IG52-04 24VDC 082 RPM Gear Motor with Encoder (TD-045-082)</sdr item>
*[##ITEM1134## IG32P 24VDC 075 RPM Gear Motor with Encoder (TD-055-075)]
+
*<sdr item id=1134> IG32P 24VDC 075 RPM Gear Motor with Encoder (TD-055-075)</sdr item>
*[##ITEM1099## IG32 24VDC 074 RPM Gear Motor with Encoder (TD-054-074)]
+
*<sdr item id=1099> IG32 24VDC 074 RPM Gear Motor with Encoder (TD-054-074)</sdr item>
*[##ITEM1036## IG42 24VDC 078 RPM Gear Motor with Encoder (TD-044-078)]
+
*<sdr item id=1036> IG42 24VDC 078 RPM Gear Motor with Encoder (TD-044-078)</sdr item>
*[##ITEM998## IG32P 24VDC 265 RPM Gear Motor with Encoder (TD-055-265)]
+
*<sdr item id=998> IG32P 24VDC 265 RPM Gear Motor with Encoder (TD-055-265)</sdr item>
*[##ITEM997## IG32P 24VDC 190 RPM Gear Motor with Encoder (TD-055-190)]
+
*<sdr item id=997> IG32P 24VDC 190 RPM Gear Motor with Encoder (TD-055-190)</sdr item>
*[##ITEM996## IG32 24VDC 191 RPM Gear Motor with Encoder (TD-054-191)]
+
*<sdr item id=996> IG32 24VDC 191 RPM Gear Motor with Encoder (TD-054-191)</sdr item>
*[##ITEM937## IG52-04 24VDC 010 RPM Gear Motor with Encoder (TD-045-010)]
+
*<sdr item id=937> IG52-04 24VDC 010 RPM Gear Motor with Encoder (TD-045-010)</sdr item>
*[##ITEM873## IG52-04 24VDC 136 RPM Gear Motor with Encoder (TD-045-136)]
+
*<sdr item id=873> IG52-04 24VDC 136 RPM Gear Motor with Encoder (TD-045-136)</sdr item>
*[##ITEM849## IG42 24VDC 122 RPM Gear Motor with Encoder (TD-044-122)]
+
*<sdr item id=849> IG42 24VDC 122 RPM Gear Motor with Encoder (TD-044-122)</sdr item>
*[##ITEM843## IG52-04 24VDC 285 RPM Gear Motor with Encoder (TD-045-285)]
+
*<sdr item id=843> IG52-04 24VDC 285 RPM Gear Motor with Encoder (TD-045-285)</sdr item>
*[##ITEM840## IG42 24VDC 240 RPM Gear Motor with Encoder (TD-044-240)]
+
*<sdr item id=840> IG42 24VDC 240 RPM Gear Motor with Encoder (TD-044-240)</sdr item>
  
 
'''Motor Controllers with direct encoder feedback:'''
 
'''Motor Controllers with direct encoder feedback:'''
  
*[##ITEM1197## SyRen 50A Regenerative Motor Driver (TE-098-150)] with [##ITEM1514## Kangaroo Option]
+
*<sdr item id=1197> SyRen 50A Regenerative Motor Driver (TE-098-150)</sdr item> with <sdr item id=1514> Kangaroo Option</sdr item>
*[##ITEM1169## RoboteQ SDC2150 - 2x20A 50V Motor Controller with Encoder Input (TE-144-050)]
+
*<sdr item id=1169> RoboteQ SDC2150 - 2x20A 50V Motor Controller with Encoder Input (TE-144-050)</sdr item>
*[##ITEM1168## RoboteQ SDC2130 - 2x20A 30V Motor Controller with Encoder Input (TE-144-030)]
+
*<sdr item id=1168> RoboteQ SDC2130 - 2x20A 30V Motor Controller with Encoder Input (TE-144-030)</sdr item>
*[##ITEM2233## RoboteQ XDC2460 - 2x150A 60V Motor Controller with Encoder Input (TE-286-150)]
+
*<sdr item id=2233> RoboteQ XDC2460 - 2x150A 60V Motor Controller with Encoder Input (TE-286-150)</sdr item>
*[##ITEM1834## RoboteQ MDC2460 - 2x60A 60V Motor Controller with Encoder Input (TE-240-060)]
+
*<sdr item id=1834> RoboteQ MDC2460 - 2x60A 60V Motor Controller with Encoder Input (TE-240-060)</sdr item>
*[##ITEM1833## RoboteQ MDC2230 - 2x60A 30V Motor Controller with Encoder Input (TE-240-030)]
+
*<sdr item id=1833> RoboteQ MDC2230 - 2x60A 30V Motor Controller with Encoder Input (TE-240-030)</sdr item>
*[##ITEM848## SyRen 25A Regenerative Motor Driver (TE-098-125)] with [##ITEM1514## Kangaroo Option]
+
*<sdr item id=848> SyRen 25A Regenerative Motor Driver (TE-098-125)</sdr item> with <sdr item id=1514> Kangaroo Option</sdr item>
*[##ITEM847## SyRen 10A Regenerative Motor Driver (TE-098-110)] with [##ITEM1514## Kangaroo Option]
+
*<sdr item id=847> SyRen 10A Regenerative Motor Driver (TE-098-110)</sdr item> with <sdr item id=1514> Kangaroo Option</sdr item>
*[##ITEM822## Sabertooth Dual 25A Motor Driver (TE-091-225)] with [##ITEM1514## Kangaroo Option]
+
*<sdr item id=822> Sabertooth Dual 25A Motor Driver (TE-091-225)</sdr item> with <sdr item id=1514> Kangaroo Option</sdr item>
*[##ITEM1225## Sabertooth Dual 60A motor driver (TE-091-260)] with [##ITEM1514## Kangaroo Option]
+
*<sdr item id=1225> Sabertooth Dual 60A motor driver (TE-091-260)</sdr item> with <sdr item id=1514> Kangaroo Option</sdr item>
  
 
'''Encoder support:'''
 
'''Encoder support:'''
Line 81: Line 88:
  
 
[[Category:Sensors]]
 
[[Category:Sensors]]
 +
[[Category:Encoders]]
 +
[[Category:Electrical Components]]

Latest revision as of 15:25, 16 April 2021

Redirect to:

The encoder is inside the black end cap. Extra wires are present that connect with the encoder.

Rotary encoders are devices that generate electrical pulses as they rotate. The angle or rate of rotation that the encoder is experiencing can be measured by monitoring the number or frequency of the pulses. In robotics, encoders are most commonly attached to the robot's drive motors and used to measure the robot's linear speed, angular speed, and distance traveled. Drive motor encoders can also be used to perform closed loop speed control on the wheels. More generally, encoders can be attached to any of the robot's joints to track its speed and/or angle, such as a rotating joint in a robotic arm.







Sensor Overview

Measurement: Motor rotation distance. When attached to the drive motors, used to measure wheel speed and distance.

Ideal operating conditions: Robot operating on smooth/even ground where wheels maintain constant rolling contact with no slip.

Sensor Pros:

  • Quite accurate over short time periods/distances
  • Works indoors and outdoors, day or night
  • Good for mitigating discrete jumps in position and orientation estimates when fused with other sensors
  • Great fallback sensor when things go wrong
  • Can be used for closed loop speed control of the wheels

Sensor Cons:

  • Requires initial calibration between encoder counts and amount of robot movement
  • Assumes no slip between robot wheel and ground. An unstable or inconsistent surface beneath the robot can lead to wheel slippage. Skid-steer robots also experience wheel slippage while turning. This causes error in the estimated robot speed and position because the wheel moves but the robot doesn’t.
  • Position errors from wheel slippage and imperfect calibration accumulate over time/distance to give a progressively worse position estimate. When used to measure speed instead of position this is less of an issue.
  • Additional hardware is often needed to keep track of the encoder counts. However, some motor controllers (such as Roboteq models) have this functionality built-in.

Encoder Output

Quadrature Encoder Pulses

Encoders typically output what is known as a quadrature signal. A quadrature signal is comprised of two channels (Channel A and Channel B). Channel B is 90 degrees out of phase from channel A. This allows the circuitry watching the output signal to know what direction you are traveling. If B trails A then your motor is moving clockwise, if A trails B then your motor is moving counter clockwise.


Adding Encoders to a Robot

We have written a practical guide on this topic here.

Quick Links to our Encoders and Accessories:

Encoder Buffer and Pull-up Boards:

Motors with Encoders:

Motor Controllers with direct encoder feedback:

Encoder support: