2015:Robot IO Map: Difference between revisions

From 1511Wookiee
Jump to navigationJump to search
No edit summary
(remove useless column; update controls to match state of code and driver whim)
 
(43 intermediate revisions by 3 users not shown)
Line 3: Line 3:
== CAN ID Assignments ==
== CAN ID Assignments ==


{| border="1" cellpadding="2" cellspacing="1" style="width: 908px;"
{| style="width: 908px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| style="text-align: center;" | '''ID'''
| style="text-align: center" | '''ID'''
| style="text-align: center;" | '''Subsystem'''
| style="text-align: center" | '''Subsystem'''
| <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="text-align: center;" | '''Model #'''
| style="text-align: center" | '''Model #'''
| style="width: 210px; text-align: center;" | '''Description'''<br/>(brief)
| style="width: 210px; text-align: center" | '''Description'''<br/>(brief)
| style="width: 105px; text-align: center;" | '''Controlled By'''
| style="width: 224px; text-align: center" | '''Operation'''<br/>
| style="width: 224px; text-align: center;" | '''Operation'''
| style="width: 115px; text-align: center" | '''Notes'''
| style="width: 115px; text-align: center;" | '''Notes'''
|-
|-
| style="text-align: center;" | 0
| style="text-align: center" | 0
| style="text-align: center;" | '''RESERVED'''
| style="text-align: center" | '''RESERVED'''
| <p style="text-align: center;">n/a</p>
| <p style="text-align: center">n/a</p>
| style="text-align: center;" | <br/>
| style="text-align: center" | <br/>
| style="width: 210px; text-align: center;" | Factory-default<br/>allows for adding CTRE devices quickly and re-assign its ID
| style="width: 210px; text-align: center" | Factory-default<br/>allows for adding CTRE devices quickly and re-assign its ID
| style="width: 105px; text-align: center;" | <br/>
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <br/>
| style="width: 115px" | <p style="text-align: center">don't use</p>
| style="width: 115px;" | <p style="text-align: center;">don't use</p>
|-
|-
| style="text-align: center;" | 1
| style="text-align: center" | 1
| style="text-align: center;" | '''RESERVED'''
| style="text-align: center" | '''RESERVED'''
| style="text-align: center;" | n/a
| style="text-align: center" | n/a
| style="text-align: center;" | <br/>
| style="text-align: center" | <br/>
| style="width: 210px; text-align: center;" | Factory-default<br/>allows for adding Jaguar quickly and re-assign its ID
| style="width: 210px; text-align: center" | Factory-default<br/>allows for adding Jaguar quickly and re-assign its ID
| style="width: 105px; text-align: center;" | <br/>
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <br/>
| style="width: 115px; text-align: center" | don't use
| style="width: 115px; text-align: center;" | don't use
|-
|-
| style="text-align: center;" | 2
| style="text-align: center" | 2
| style="text-align: center;" | drivetrain
| style="text-align: center" | drivetrain
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | CIM
| style="text-align: center" | CIM
| style="width: 210px; text-align: center;" | Left Front Drive
| style="width: 210px; text-align: center" | Left Front Drive
| style="width: 105px; text-align: center;" | driver1 joystick
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | y axis
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 3
| style="text-align: center" | 3
| style="text-align: center;" | drivetrain
| style="text-align: center" | drivetrain
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | CIM
| style="text-align: center" | CIM
| style="width: 210px; text-align: center;" | Left Rear Drive
| style="width: 210px; text-align: center" | Left Rear Drive
| style="width: 105px; text-align: center;" | <span style="line-height: 20.7999992370605px;">driver1 joystick</span><br/>
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <span style="line-height: 20.7999992370605px;">y axis</span><br/>
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 4
| style="text-align: center" | 4
| style="text-align: center;" | drivetrain
| style="text-align: center" | drivetrain
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | CIM
| style="text-align: center" | CIM
| style="width: 210px; text-align: center;" | Right Front Drive
| style="width: 210px; text-align: center" | Right Front Drive
| style="width: 105px; text-align: center;" | <span style="line-height: 20.7999992370605px;">driver1 joystick</span><br/>
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <span style="line-height: 20.7999992370605px;">y axis</span><br/>
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 5
| style="text-align: center" | 5
| style="text-align: center;" | drivetrain
| style="text-align: center" | drivetrain
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | CIM
| style="text-align: center" | CIM
| style="width: 210px; text-align: center;" | Right Rear Drive
| style="width: 210px; text-align: center" | Right Rear Drive
| style="width: 105px; text-align: center;" | <span style="line-height: 20.7999992370605px;">driver1 joystick</span><br/>
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <span style="line-height: 20.7999992370605px;">y axis</span><br/>
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 6
| style="text-align: center" | 6
| style="text-align: center;" | drivetrain
| style="text-align: center" | drivetrain
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | CIM
| style="text-align: center" | CIM
| style="width: 210px; text-align: center;" | Strafe
| style="width: 210px; text-align: center" | Strafe
| style="width: 105px; text-align: center;" | driver1 joystick
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | x axis
| style="width: 115px; text-align: center" | unclear on how to activate this motor
| style="width: 115px; text-align: center;" | unclear on how to activate this motor
|-
|-
| style="text-align: center;" | 7
| style="text-align: center" | 7
| style="text-align: center;" | lifter
| style="text-align: center" | lifter
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | RS775
| style="text-align: center" | RS775
| style="width: 210px; text-align: center;" | Left lifter
| style="width: 210px; text-align: center" | Left lifter
| style="width: 105px; text-align: center;" | driver2 joystick
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | y axis
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 8
| style="text-align: center" | 8
| style="text-align: center;" | lifter
| style="text-align: center" | lifter
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | RS775
| style="text-align: center" | RS775
| style="width: 210px; text-align: center;" | Right lifter
| style="width: 210px; text-align: center" | Right lifter
| style="width: 105px; text-align: center;" | driver2 joystick
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <span style="line-height: 20.7999992370605px;">y axis</span><br/>
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 9
| style="text-align: center" | 9
| style="text-align: center;" | gripper
| style="text-align: center" | gripper
| style="text-align: center;" | motor
| style="text-align: center" | motor
| style="text-align: center;" | RS550
| style="text-align: center" | RS550
| style="width: 210px; text-align: center;" | Gripper/Motor
| style="width: 210px; text-align: center" | Gripper/Motor
| style="width: 105px; text-align: center;" | driver2 joystick
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | trigger button (depressed trigger = gripper closed)
| style="width: 115px; text-align: center" | <br/>
| style="width: 115px; text-align: center;" | <br/>
|-
|-
| style="text-align: center;" | 10
| style="text-align: center" | 10
| style="text-align: center;" | pnuematics
| style="text-align: center" | <br/>
| style="text-align: center;" | PCM module
| style="text-align: center" | <br/>
| style="text-align: center;" | N/A
| style="text-align: center" | <br/>
| style="width: 210px; text-align: center;" | Stabilizer, Shifter, Strafing
| style="width: 210px; text-align: center" | <br/>
| style="width: 105px; text-align: center;" | roborio
| style="width: 224px; text-align: center" | <br/>
| style="width: 224px; text-align: center;" | <br/>
| style="width: 115px; text-align: center" |  
| style="width: 115px; text-align: center;" |  
|-
|-
| style="text-align: center;" | 11
| style="text-align: center" | 11
| style="text-align: center;" | power dist.
| style="text-align: center" | <br/>
| style="text-align: center;" | PD module
| style="text-align: center" | <br/>
| style="text-align: center;" | N/A
| style="text-align: center" | <br/>
| style="width: 210px; text-align: center;" | Power Distribution Readback
| style="width: 210px; text-align: center" | <br/>
| style="width: 105px; text-align: center;" | roborio
| style="width: 224px" | <br/>
| style="width: 224px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |  
|-
|-
| 12
| 12
Line 126: Line 113:
| <br/>
| <br/>
| <br/>
| <br/>
| style="width: 210px;" |  
| style="width: 210px" |  
| style="width: 105px;" | <br/>
| style="width: 224px" | <br/>
| style="width: 224px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |  
|-
|-
| 13
| 13
Line 135: Line 121:
| <br/>
| <br/>
| <br/>
| <br/>
| style="width: 210px;" |  
| style="width: 210px" |  
| style="width: 105px;" | <br/>
| style="width: 224px" | <br/>
| style="width: 224px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |  
|-
|-
| 14
| 14
Line 144: Line 129:
| <br/>
| <br/>
| <br/>
| <br/>
| style="width: 210px;" |  
| style="width: 210px" |  
| style="width: 105px;" | <br/>
| style="width: 224px" | <br/>
| style="width: 224px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |  
|-
|-
| 15
| 15
|  
| <span style="text-align: center">pnuematics</span>
| <br/>
| <span style="text-align: center">PCM module</span><br/>
| <br/>
| <span style="text-align: center">N/A</span><br/>
| style="width: 210px;" |  
| style="width: 210px" | <span style="text-align: center">Stabilizer, Shifter, Strafing</span>
| style="width: 105px;" | <br/>
| style="width: 224px" | <br/>
| style="width: 224px;" | <br/>
| style="width: 115px" | address spaces for Jaguars, SRXs, PCM, and PDP are all separate. We are limited to one PDP, and will need only one PCM
| style="width: 115px;" |  
|-
|-
| 16
| 0
|  
| <span style="text-align: center">power dist.</span>
| <br/>
| <span style="text-align: center">PD module</span><br/>
| <br/>
| <span style="text-align: center">N/A</span><br/>
| style="width: 210px;" |  
| style="width: 210px" | <span style="text-align: center">Power Distribution Readback</span>
| style="width: 105px;" | <br/>
| style="width: 224px" | <br/>
| style="width: 224px;" | <br/>
| style="width: 115px" | Must be 0 (WPILib has no easy way to use another ID). We'll only ever have one
| style="width: 115px;" |  
|}
|}


== PWM Outputs ==
== PWM Outputs ==


{| border="1" cellpadding="2" cellspacing="1" style="width: 941px;"
{| style="width: 941px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| style="width: 82px; text-align: center;" | '''Subsystem'''
| style="width: 82px; text-align: center" | '''Subsystem'''
| style="width: 76px;" | <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| style="width: 76px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="text-align: center; width: 54px;" | '''Model #'''
| style="text-align: center; width: 54px" | '''Model #'''
| style="text-align: center; width: 170px;" | '''Description<br/>(brief)'''
| style="text-align: center; width: 170px" | '''Description<br/>(brief)'''
| style="text-align: center; width: 86px;" | '''Controlled By'''
| style="text-align: center; width: 280px" |  
| style="text-align: center; width: 280px;" |  
'''Operation'''
'''Operation'''






| style="width: 125px; text-align: center;" | '''Notes'''
| style="width: 125px; text-align: center" | '''Notes'''
|-
| 0
| style="width: 82px" |
| style="width: 76px" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px" |
| style="width: 280px" | <br/>
| style="width: 125px" | <br/>
|-
|-
| 1
| 1
| style="width: 82px;" |  
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |  
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" | <br/>
|-
|-
| 2
| 2
| style="width: 82px;" |  
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |  
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" |  
|-
|-
| 3
| 3
| style="width: 82px;" |  
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |  
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" |  
|-
|-
| 4
| 4
| style="width: 82px;" |  
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |  
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" |  
|-
|-
| 5
| 5
| style="width: 82px;" |  
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |  
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" |  
|-
|-
| 6
| 6
| style="width: 82px;" |  
| style="width: 82px" | <br/>
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |
| style="width: 170px" | <br/>
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" | <br/>
| style="width: 125px;" |  
|-
|-
| 7<br/>
| 7
| style="width: 82px;" | <br/>
| style="width: 82px" | <br/>
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" | <br/>
| style="width: 170px" | <br/>
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" | <br/>
| style="width: 125px;" | <br/>
|-
|-
| 8<br/>
| 8
| style="width: 82px;" | <br/>
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" | <br/>
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" | <br/>
|-
|-
| 9<br/>
| 9
| style="width: 82px;" |
| style="width: 82px" |  
| style="width: 76px;" | <br/>
| style="width: 76px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px;" |
| style="width: 170px" |  
| style="width: 86px;" | <br/>
| style="width: 280px" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px" |  
| style="width: 125px;" |
|-
| 10<br/>
| style="width: 82px;" |  
| style="width: 76px;" | <br/>
| style="width: 54px;" | <br/>
| style="width: 170px;" |  
| style="width: 86px;" | <br/>
| style="width: 280px;" | <br/>
| style="width: 125px;" |  
|}
|}


Line 280: Line 251:
== Relay Outputs ==
== Relay Outputs ==


{| border="1" cellpadding="2" cellspacing="1" style="width: 927px;"
{| style="width: 927px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| style="text-align: center;" | '''Subsystem'''
| style="text-align: center" | '''Subsystem'''
| style="width: 69px;" | <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| style="width: 69px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 54px; text-align: center;" | '''Model #'''
| style="width: 54px; text-align: center" | '''Model #'''
| style="width: 192px; text-align: center;" | '''Description<br/>(brief)'''
| style="width: 192px; text-align: center" | '''Description<br/>(brief)'''
| style="width: 95px; text-align: center;" | '''Controlled By'''
| style="width: 259px; text-align: center" | '''Operation'''<br/>
| style="width: 259px; text-align: center;" | '''Operation'''
| style="width: 115px; text-align: center" | '''Notes'''
| style="width: 115px; text-align: center;" | '''Notes'''
|-
| 0
|
| style="width: 69px" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px" |
| style="width: 259px" | <br/>
| style="width: 115px" |  
|-
|-
| 1
| 1
|  
|  
| style="width: 69px;" | <br/>
| style="width: 69px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px;" |  
| style="width: 192px" |  
| style="width: 95px;" | <br/>
| style="width: 259px" | <br/>
| style="width: 259px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |  
|-
|-
| 2
| 2
|  
|  
| style="width: 69px;" | <br/>
| style="width: 69px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px;" |  
| style="width: 192px" |  
| style="width: 95px;" | <br/>
| style="width: 259px" | <br/>
| style="width: 259px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |  
|-
|-
| 3
| 3
|  
|  
| style="width: 69px;" | <br/>
| style="width: 69px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px;" |  
| style="width: 192px" |  
| style="width: 95px;" | <br/>
| style="width: 259px" | <br/>
| style="width: 259px;" | <br/>
| style="width: 115px" |  
| style="width: 115px;" |
|}
 
== Analog IO ==
 
=== <u>RoboRIO Analog Inputs</u> ===
 
{| style="width: 1030px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| 4
| ID
| style="text-align: center" | Subsystem
| style="width: 70px" | <p style="text-align: center">Component</p><p style="text-align: center">Type</p>
| style="width: 54px;  text-align: center" | Model #
| style="width: 227px;  text-align: center" | Description<br/>(brief)
| style="width: 262px;  text-align: center" | Operation<br/>
| style="width: 132px;  text-align: center" |
Voltage
 
Range
 
| style="width: 91px;  text-align: center" | Notes
|-
| 0
| drivetrain
| style="width: 70px" | gyro
| style="width: 54px" | ADW22307
| style="width: 227px" | drivetrain gyro rot feedback
| style="width: 262px" |
X & Y orientation used in Autonomous.
 
(no temp correction needed within our bounds)
 
| style="width: 132px" | 2.5 V center (σ, 0.007 V/deg/sec (0.0069 to 0.0074 within ± 1σ)
| style="width: 91px" | [http://www.analog.com/static/imported-files/data_sheets/ADXRS652.pdf New Part Number: Datasheet]
|-
| 1
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" | <br/>
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|-
| 2
|
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|-
| 3
|  
|  
| style="width: 69px;" | <br/>
| style="width: 70px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px;" |  
| style="width: 227px" |  
| style="width: 95px;" | <br/>
| style="width: 262px" | <br/>
| style="width: 259px;" | <br/>
| style="width: 132px" | <br/>
| style="width: 115px;" |  
| style="width: 91px" |  
|}
|}


== Analog Inputs ==
=== <u>Rev Robotics More Board Analog IO</u> ===


{| border="1" cellpadding="2" cellspacing="1" style="width: 1030px;"
{| style="width: 1030px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| style="text-align: center;" | '''Subsystem'''
| style="text-align: center" | '''Subsystem'''
| style="width: 70px;" | <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| style="width: 70px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 54px; text-align: center;" | '''Model #'''
| style="width: 54px; text-align: center" | '''Model #'''
| style="width: 227px; text-align: center;" | '''Description<br/>(brief)'''
| style="width: 227px; text-align: center" | '''Description<br/>(brief)'''
| style="width: 92px; text-align: center;" | '''Controlled By'''
| style="width: 262px; text-align: center" | '''Operation'''<br/>
| style="width: 262px; text-align: center;" | '''Operation'''
| style="width: 132px; text-align: center" |  
| style="width: 132px; text-align: center;" |  
'''Voltage'''
'''Voltage'''


'''Range'''
'''Range'''


| style="width: 91px; text-align: center;" | '''Notes'''
| style="width: 91px; text-align: center" | '''Notes'''
|-
|-
| 1
| AIN0
| drivetrain
| <br/>
| style="width: 70px;" | gyro
| style="width: 70px" | <br/>
| style="width: 54px;" | ?
| style="width: 54px" | &nbsp;
| style="width: 227px;" | drivetrain gyro
| style="width: 227px" | <br/>
| style="width: 92px;" | <br/>
| style="width: 262px" | <br/>
| style="width: 262px;" | Used in Autonomous
| style="width: 132px" | &nbsp;
| style="width: 132px;" | ?
| style="width: 91px" |
| style="width: 91px;" |  
|-
| AIN1
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |  
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|-
| AIN2
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |  
|-
|-
| 2
| AIN3
|  
| <br/>
| style="width: 70px;" | <br/>
| style="width: 70px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px;" |
| style="width: 227px" | <br/>
| style="width: 92px;" | <br/>
| style="width: 262px" | <br/>
| style="width: 262px;" | <br/>
| style="width: 132px" | <br/>
| style="width: 132px;" | <br/>
| style="width: 91px" | <br/>
| style="width: 91px;" |  
|-
|-
| 3
| AOUT0
|  
| <br/>
| style="width: 70px;" | <br/>
| style="width: 70px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px;" |
| style="width: 227px" | <br/>
| style="width: 92px;" | <br/>
| style="width: 262px" | <br/>
| style="width: 262px;" | <br/>
| style="width: 132px" | <br/>
| style="width: 132px;" | <br/>
| style="width: 91px" | <br/>
| style="width: 91px;" |  
|-
|-
| 4
| AOUT1
|  
| <br/>
| style="width: 70px;" | <br/>
| style="width: 70px" | <br/>
| style="width: 54px;" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px;" |  
| style="width: 227px" |  
| style="width: 92px;" | <br/>
| style="width: 262px" | <br/>
| style="width: 262px;" | <br/>
| style="width: 132px" | <br/>
| style="width: 132px;" | <br/>
| style="width: 91px" |  
| style="width: 91px;" |  
|}
|}


== Digital IO (GPIO) ==
== Digital IO (GPIO) ==


{| border="1" cellpadding="2" cellspacing="1" style="width: 998px;"
=== <u>RoboRio IO</u> ===
 
{| style="width: 998px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| '''Direction'''<br/>(IN/OUT)
| '''Direction'''<br/>(IN/OUT)
| style="text-align: center;" | '''Subsystem'''
| style="text-align: center; width: 69px" | '''Subsystem'''
| style="width: 74px;" | <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| style="width: 73px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 52px; text-align: center;" | '''Model #'''
| style="width: 52px; text-align: center" | '''Model #'''
| style="width: 194px; text-align: center;" | '''Description<br/>(brief)'''
| style="width: 194px; text-align: center" | '''Description<br/>(brief)'''
| style="width: 102px; text-align: center;" | '''Controlled By'''
| style="width: 253px; text-align: center" | '''Operation'''<br/>
| style="width: 253px; text-align: center;" | '''Operation'''
| style="width: 118px; text-align: center" | '''Notes'''
| style="width: 118px; text-align: center;" | '''Notes'''
|-
| 0
| IN
| style="width: 69px" | drivetrain
| style="width: 73px" | Encoder
| style="width: 52px" | &nbsp;63R256
| style="width: 194px" | Left Encoder, Phase A
| style="width: 253px" | Drivetrain rotation - calculate Position measurement
| style="width: 118px" | <br/>
|-
|-
| 1
| 1
| IN
| <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| drivetrain
| style="width: 69px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">-</span><br/>
| style="width: 74px;" | Encoder
| style="width: 73px" | -
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | -
| style="width: 194px;" | Left Encoder, Phase A
| style="width: 194px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">Left Encoder, Phase B</span><br/>
| style="width: 102px;" | <br/>
| style="width: 253px" | B-channel
| style="width: 253px;" | Drivetrain rotation - calculate Position measurement
| style="width: 118px" | May not be present
| style="width: 118px;" |  
|-
|-
| 2
| 2
| IN
| IN
| drivetrain
| style="width: 69px" | drivetrain
| style="width: 74px;" | Encoder
| style="width: 73px" | Encoder
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | &nbsp;<span style="line-height: 20.7999992370605px">63R256</span>
| style="width: 194px;" | Right Encoder, Phase A
| style="width: 194px" | Right Encoder, Phase A
| style="width: 102px;" | <br/>
| style="width: 253px" | <span style="line-height: 20.7999992370605px">Drivetrain rotation - calculate Position measurement</span><br/>
| style="width: 253px;" | <span style="line-height: 20.7999992370605px;">Drivetrain rotation - calculate Position measurement</span><br/>
| style="width: 118px" |  
| style="width: 118px;" |  
|-
|-
| 3
| 3
| IN
| IN
| gripper
| style="width: 69px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">-</span><br/>
| style="width: 74px;" | Banner Sensor
| style="width: 73px" | -
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | &nbsp;-
| style="width: 194px;" | Gripper Wide Tote Config.
| style="width: 194px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">Right Encoder, Phase B</span><br/>
| style="width: 102px;" | N/A
| style="width: 253px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">B-channel</span><br/>
| style="width: 253px;" | <span style="line-height: 20.7999992370605px;">Outward Wide Position</span><br/>
| style="width: 118px" |  
| style="width: 118px;" |  
<span style="line-height: 20.7999992370605px">May not be present</span>
 
|-
|-
| 4
| 4
| IN
| IN
| lifter
| style="width: 69px" | lifter
| style="width: 74px;" | Encoder
| style="width: 73px" | Encoder
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | &nbsp;63R256
| style="width: 194px;" | Lifter Height&nbsp;
| style="width: 194px" | Lifter Encoder, Phase A
| style="width: 102px;" | N/A
| style="width: 253px" | Lifter drive rotation - &nbsp;calculate Height Zeroed with Lifter Flag Sensor. Channel A
| style="width: 253px;" | Lifter drive rotation - &nbsp;calculate Height Zeroed with Lifter Flag Sensor
| style="width: 118px" |  
| style="width: 118px;" |  
|-
|-
| 5
| 5
| IN
| <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| lifter
| style="width: 69px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">-</span><br/>
| style="width: 74px;" | Flag Sensor
| style="width: 73px" | -
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | -
| style="width: 194px;" | Home Position Height Level
| style="width: 194px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">Lifter Encoder, Phase B</span><br/>
| style="width: 102px;" | N/A
| style="width: 253px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">B-channel</span><br/>
| style="width: 253px;" | Lower position
| style="width: 118px" | <br/>
| style="width: 118px;" |  
|-
|-
| 6
| 6
| IN
| IN
| gripper
| style="width: 69px" | lifter
| style="width: 74px;" | Encoder
| style="width: 73px" | Flag Sensor
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | &nbsp;OPB815
| style="width: 194px;" | Encoder Phase A
| style="width: 194px" | Home Position At Bottom
| style="width: 102px;" | N/A
| style="width: 253px" | Lower position
| style="width: 253px;" | Gripper drive rotation - calculate Position
| style="width: 118px" |  
| style="width: 118px;" |  
|-
|-
| 7
| 7
| IN
| IN
| gripper
| style="width: 69px" | gripper
| style="width: 74px;" | Encoder
| style="width: 73px" | Encoder
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | &nbsp;63R256
| style="width: 194px;" | Encoder Phase B
| style="width: 194px" | Gripper Encoder, Phase A
| style="width: 102px;" | N/A
| style="width: 253px" | Gripper drive rotation - calculate Position
| style="width: 253px;" | Gripper drive rotartion - calculate Position
| style="width: 118px" |  
| style="width: 118px;" |  
|-
|-
| 8<br/>
| 8
| IN
| IN
| gripper
| style="width: 69px" | -
| style="width: 74px;" | Flag Sensor
| style="width: 73px" | -
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | -
| style="width: 194px;" | Home Gripper Position
| style="width: 194px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">Gripper&nbsp;</span>Encoder, Phase B
| style="width: 102px;" | N/A
| style="width: 253px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">B-channel</span>
| style="width: 253px;" | Inner position
| style="width: 118px" |  
| style="width: 118px;" |  
|-
|-
| 9<br/>
| 9
| IN
| IN
| gripper
| style="width: 69px" | gripper
| style="width: 74px;" | Ultrasonic Sensor
| style="width: 73px" | Flag Sensor
| style="width: 52px;" | &nbsp;?
| style="width: 52px" | &nbsp;OPB815
| style="width: 194px;" | <span style="line-height: 20.7999992370605px;">Right&nbsp;</span>Gripper Proximity
| style="width: 194px" | Home Gripper Position A
| style="width: 102px;" | N/A
| style="width: 253px" | Inner position home flag (Primary)
| style="width: 253px;" | Distance Between Gripper Arm and Tote
| style="width: 118px" | <br/>
| style="width: 118px;" | replace with optical banner sensor?
|}
 
=== <u>Rev Robotics More Board IO</u> ===
 
{| style="width: 1022px" border="1" cellpadding="1" cellspacing="1"
|-
| style="width: 16px;  text-align: center" | '''ID'''
| style="width: 56px;  text-align: center" | '''Direction (IN/OUT)'''
| style="width: 74px;  text-align: center" | '''Subsystem'''
| style="width: 74px;  text-align: center" | '''Component Type'''
| style="width: 56px;  text-align: center" | '''Model #'''
| style="width: 197px;  text-align: center" | '''Description (brief)'''
| style="width: 254px;  text-align: center" | '''Operation'''<br/>
| style="width: 141px;  text-align: center" | '''Notes'''
|-
| style="width: 16px" | 0
| style="width: 56px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">gripper</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Banner</span><br/>
| style="width: 56px" | Q10AN6R
| style="width: 197px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Gripper Tote Detection</span><br/>
| style="width: 254px" | <span style="font-size: 13.3333339691162px;  line-height: 20.7999992370605px">Beam break sensor to check for tote presence</span><br/>
| style="width: 141px" | sensor open collector output. &nbsp;pullup in roborio
|-
| style="width: 16px" | 1
| style="width: 56px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">lifter</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Flag</span><br/>
| style="width: 56px" | OPB815
| style="width: 197px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Lift encoder high flag</span><br/>
| style="width: 254px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Lifter upper flag, for safety and to help calibration</span><br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 2
| style="width: 56px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">IN</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">gripper</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">Flag Sensor</span><br/>
| style="width: 56px" | OPB815
| style="width: 197px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Home Gripper Position B</span><br/>
| style="width: 254px" | <span style="font-size: 13.3333339691162px; line-height: 23.1111106872559px">Inner position Backup</span><br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 3
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 4
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 5
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 6
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 7
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 8
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 9
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 10
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 11
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 12
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
|-
| 10
| style="width: 16px" | 13
| IN
| style="width: 56px" | <br/>
| gripper
| style="width: 74px" | <br/>
| style="width: 74px;" | Ultrasonic Sensor
| style="width: 74px" | <br/>
| style="width: 52px;" | &nbsp;?
| style="width: 56px" | <br/>
| style="width: 194px;" | Left Gripper Proximity
| style="width: 197px" | <br/>
| style="width: 102px;" | N/A
| style="width: 254px" | <br/>
| style="width: 253px;" | <span style="line-height: 20.7999992370605px;">Distance Between Gripper Arm and Tote</span><br/>
| style="width: 141px" | <br/>
| style="width: 118px;" | replace with optical banner sensor?
|-
| style="width: 16px" | 14
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 15
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|}
|}


== I2C Registers ==
== I2C Registers ==


{| border="1" cellpadding="2" cellspacing="1" style="width: 1007px;"
{| style="width: 1007px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| style="text-align: center;" | '''Address'''<br/>(e.g. 0100111X)
| style="text-align: center" | '''Address'''<br/>(e.g. 0100111X)
| style="width: 37px; text-align: center;" | '''Pin'''<br/>(e.g. GP0)
| style="width: 37px; text-align: center" | '''Pin'''<br/>(e.g. GP0)
| style="width: 76px; text-align: center;" | '''Subsystem'''
| style="width: 76px; text-align: center" | '''Subsystem'''
| style="width: 75px;" | <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| style="width: 75px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 53px; text-align: center;" | '''Model #'''
| style="width: 53px; text-align: center" | '''Model #'''
| style="width: 205px; text-align: center;" | '''Description<br/>(brief)'''
| style="width: 205px; text-align: center" | '''Description<br/>(brief)'''
| style="width: 89px; text-align: center;" | '''Controlled By'''
| style="width: 241px; text-align: center" | '''Operation'''<br/>
| style="width: 241px; text-align: center;" | '''Operation'''
| style="width: 112px; text-align: center" | '''Notes'''
| style="width: 112px; text-align: center;" | '''Notes'''
|-
|-
| 0
| 0
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|-
|-
| 1
| 1
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|-
|-
| 2
| 2
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|-
|-
| 3
| 3
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|-
|-
| 4
| 4
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|-
|-
| 5
| 5
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|-
|-
| 6
| 6
| style="width: 37px;" |  
| style="width: 37px" |  
| style="width: 76px;" |  
| style="width: 76px" |  
| style="width: 75px;" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px;" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px;" |  
| style="width: 205px" |  
| style="width: 89px;" | <br/>
| style="width: 241px" | <br/>
| style="width: 241px;" | <br/>
| style="width: 112px" |  
| style="width: 112px;" |  
|}
|}


== SPI Devices ==


{| style="width: 1007px" border="1" cellpadding="2" cellspacing="1"
|-
| style="text-align: center" | '''#'''<br/>
| style="width: 76px;  text-align: center" | '''Subsystem'''
| style="width: 75px" | <p style="text-align: center">'''Component&nbsp;Type'''</p>
| style="width: 53px;  text-align: center" | '''Model #'''
| style="width: 205px;  text-align: center" | '''Description&nbsp;(brief)'''
| style="width: 241px;  text-align: center" | '''Operation'''<br/>
| style="width: 112px;  text-align: center" | '''Notes'''<br/>
|-
| kOnBoardCS0
| style="width: 76px" | drivetrain
| style="width: 75px" | accelerometer
| style="width: 53px" | <span style="font-size:small"><span style="color: rgb(0, 0, 0);  font-family: sans-serif;  line-height: 28.4444px">ADXL345</span></span><br/>
| style="width: 205px" | <span style="font-size:small"><span style="color: rgb(0, 0, 0);  font-family: sans-serif;  line-height: 28.4444px">accelerometer, right by the gyro</span></span><br/>
| style="width: 241px" | to improve autonomous drive code<br/>
| style="width: 112px" | <br/>
|-
| <br/>
| style="width: 76px" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px" | &nbsp;
| style="width: 205px" | <br/>
| style="width: 241px" | <br/>
|}
== USB Host Ports ==
{| style="width: 1007px" border="1" cellpadding="2" cellspacing="1"
|-
| style="text-align: center" | '''Address'''<br/>
| style="width: 76px;  text-align: center" | '''Subsystem'''
| style="width: 75px" | <p style="text-align: center">'''Component&nbsp;Type'''</p>
| style="width: 53px;  text-align: center" | '''Model #'''
| style="width: 205px;  text-align: center" | '''Description&nbsp;(brief)'''
| style="width: 241px;  text-align: center" | '''Operation'''<br/>
| style="width: 112px;  text-align: center" | '''Notes'''
|-
| 0
| style="width: 76px" | Camera
| style="width: 75px" | Camera
| style="width: 53px" | HD-3000
| style="width: 205px" | USB camera
| style="width: 241px" | Facing down from top of lifter.&nbsp;Helps with tote + alignment in auto, driver, maybe for semiauto
| style="width: 112px" |
|-
| 1
| style="width: 76px" | Logging
| style="width: 75px" | USB Stick
| style="width: 53px" | &nbsp;?
| style="width: 205px" | USB Stick to log info
| style="width: 241px" | record match and state information at high rate, for postmortem match analysis
| style="width: 112px" |
|}


== Pneumatics Control Module ==
== Pneumatics Control Module ==


{| border="1" cellpadding="2" cellspacing="1" style="width: 931px;"
{| style="width: 931px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| style="text-align: center;" | '''Subsystem'''
| style="text-align: center" | '''Subsystem'''
| style="width: 75px;" | <p style="text-align: center;">'''Component'''</p><p style="text-align: center;">'''Type'''</p>
| style="width: 75px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 51px;" | <p style="text-align: center;">'''Model #'''</p>
| style="width: 51px" | <p style="text-align: center">'''Model #'''</p>
| style="width: 197px;" | <p style="text-align: center;">'''Description'''</p><p style="text-align: center;">'''(brief)'''</p>
| style="width: 211px" | <p style="text-align: center">'''Description'''</p><p style="text-align: center">'''(brief)'''</p>
| style="width: 86px; text-align: center;" | '''Controlled By'''
| style="width: 290px; text-align: center" | '''Operation'''<br/>
| style="width: 290px; text-align: center;" | '''Operation'''
| style="width: 118px; text-align: center" | '''Notes'''
| style="width: 118px; text-align: center;" | '''Notes'''
| style="width: 118px; text-align: center" | '''Pressure Circuit'''
|-
| 0
| Drivetrain
| style="width: 75px" | Single Solenoid
| style="width: 51px" | SY3140-6LZ
| style="width: 211px" | shifter LOW (default high)
| style="width: 290px" | shifts down
| style="width: 118px" | double action cylinder (vented no action)
| style="width: 118px" | A (4 total, 40-60 psi tbd)
|-
|-
| 1
| 1
| drivetrain
| Drivetrain<br/>
| style="width: 75px;" | Valve
| style="width: 75px" | Single Solenoid<br/>
| style="width: 51px;" | &nbsp;?
| style="width: 51px" | SY3140-6LZ<br/>
| style="width: 197px;" | shifter UP
| style="width: 211px" | strafing wheel DOWN (default up)<br/>
| style="width: 86px;" | driver1 joystick
| style="width: 290px" | lowers strafing wheel<br/>
| style="width: 290px;" | shifts up
| style="width: 118px" | single action, spring retract cylinder (vented up)
| style="width: 118px;" |  
| style="width: 118px" | B (3 total, 20-60 psi tbd)
|-
|-
| 2
| 2
| drivetrain
| Stabilizer<br/>
| style="width: 75px;" | Valve
| style="width: 75px" | Single Solenoid<br/>
| style="width: 51px;" | &nbsp;?
| style="width: 51px" | &nbsp;SY3140-6LZ
| style="width: 197px;" | shifter DOWN
| style="width: 211px" | Stabilizer Gripper IN (default out)<br/>
| style="width: 86px;" | driver1 joystick
| style="width: 290px" | closes stabilizer<br/>
| style="width: 290px;" | shifts down
| style="width: 118px" | double action cylinder&nbsp;(vented no action)<br/>
| style="width: 118px;" |  
| style="width: 118px" | A
|-
|-
| 3
| 3
| drivetrain
| Lifter<br/>
| style="width: 75px;" | Valve
| style="width: 75px" | Single Solenoid<br/>
| style="width: 51px;" | &nbsp;?
| style="width: 51px" | SY3140-6LZ<br/>
| style="width: 197px;" | strafing wheel DOWN
| style="width: 211px" | Lifter brake OPEN (default locked)<br/>
| style="width: 86px;" | <span style="line-height: 20.7999992370605px;">driver1 joystick</span><br/>
| style="width: 290px" | pnuematic cylinder engages bicycle brake to lock lift elevator<br/>
| style="width: 290px;" | <span style="line-height: 20.7999992370605px;">lowers strafing wheel</span><br/>
| style="width: 118px" | double action cylinder&nbsp;(vented open, spring on brake)<br/>
| style="width: 118px;" |  
| style="width: 118px" | A
|-
|-
| 4
| 4
| <span style="color:#D3D3D3;">drivetrain</span>
| <br/>
| style="width: 75px;" | <span style="color:#D3D3D3;">Valve</span>
| style="width: 75px" | <br/>
| style="width: 51px;" | <span style="color:#D3D3D3;">&nbsp;?</span>
| style="width: 51px" | &nbsp;
| style="width: 197px;" | <span style="color:#D3D3D3;">strafing wheel UP</span>
| style="width: 211px" | <br/>
| style="width: 86px;" | <span style="color:#D3D3D3;">driver1 joystick</span>
| style="width: 290px" | <br/>
| style="width: 290px;" | <span style="color:#D3D3D3;">raises strafing wheel</span>
| style="width: 118px" | <br/>
| style="width: 118px;" | Optional (the UP position is supposed to be spring returned)
| style="width: 118px" | <br/>
|-
|-
| 5
| 5
| stabilizer
| <br/>
| style="width: 75px;" | Valve
| style="width: 75px" | <br/>
| style="width: 51px;" | &nbsp;?
| style="width: 51px" | <br/>
| style="width: 197px;" | Stabilizer Gripper IN
| style="width: 211px" | <br/>
| style="width: 86px;" | <span style="line-height: 20.7999992370605px;">driver2 joystick</span><br/>
| style="width: 290px" | <br/>
| style="width: 290px;" | closes stabilizer
| style="width: 118px" | <br/>
| style="width: 118px;" |  
| style="width: 118px" | <br/>
|-
|-
| 6
| 6
| <span style="color:#D3D3D3;">stabilizer</span>
| <br/>
| style="width: 75px;" | <span style="color:#D3D3D3;">Valve</span>
| style="width: 75px" | <br/>
| style="width: 51px;" | <span style="color:#D3D3D3;">&nbsp;?</span>
| style="width: 51px" | &nbsp;
| style="width: 197px;" | <span style="color:#D3D3D3;">Stabilizer Gripper OUT</span>
| style="width: 211px" | <br/>
| style="width: 86px;" | <span style="color:#D3D3D3;"><span style="line-height: 20.7999992370605px;">driver2 joystick</span><br/></span>
| style="width: 290px" | <br/>
| style="width: 290px;" | <span style="color:#D3D3D3;">opens stabilizer</span>
| style="width: 118px" | <br/>
| style="width: 118px;" | Optional (the OUT position is supposed to be spring return)
| style="width: 118px" | <br/>
|-
|-
| 7
| 7
|  
|  
| style="width: 75px;" |  
| style="width: 75px" |  
| style="width: 51px;" | <br/>
| style="width: 51px" | <br/>
| style="width: 197px;" | <br/>
| style="width: 211px" | <br/>
| style="width: 86px;" | <br/>
| style="width: 290px" | <br/>
| style="width: 290px;" | <br/>
| style="width: 118px" |  
| style="width: 118px;" |
| style="width: 118px" | <br/>
|-
| 8
|  
| style="width: 75px;" |
| style="width: 51px;" | <br/>
| style="width: 197px;" | <br/>
| style="width: 86px;" | <br/>
| style="width: 290px;" | <br/>
| style="width: 118px;" |
|}
|}


= Operator Controls =
= Operator Controls =
There are two drive modes:
*'''Porcupine'''
*'''Arcade'''


== Joystick 1/Left ==
== Joystick 1/Left ==


{| cellpadding="2" cellspacing="1" border="1" style="width: 661px;"
{| style="width: 661px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''Button/Axis'''
| '''Button/Axis'''
| style="width: 158px; text-align: center;" | '''Description'''<br/>(brief)
| style="width: 158px; text-align: center" | '''Description'''<br/>(brief)
| style="width: 281px; text-align: center;" | '''Operation'''
| style="width: 281px; text-align: center" | '''Operation '''(Porcupine)<br/>
| style="width: 119px; text-align: center;" | '''Notes'''
| style="width: 281px; text-align: center" | '''Operation''' (Arcade)<br/>
| style="width: 119px; text-align: center" | '''Notes'''
|-
|-
| Y-Axis
| Y-Axis
| style="width: 158px;" | Move Forward/Backward
| style="width: 158px" | 6Move Forward/Backward
| style="width: 281px;" |  
| style="width: 281px" |  
<span style="line-height: 20.79px;">In '''Left/Right mode''', this moves boths sides of the drivetrain; otherwise this moves just the left side of the drivetrain.</span>
<span style="line-height: 20.79px">Corresponds to forward motion of left side</span> (unless #3 is pressed)


| style="width: 119px;" |  
| style="width: 281px" | Moves whole robot forward<br/>
| style="width: 119px" |  
|-
|-
| X-Axis&nbsp;
| X-Axis&nbsp;
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" | Corresponds to 1/2 of lateral robot motion<br/>
| style="width: 119px;" |  
| style="width: 281px" | Moves whole robot sideways (right is right)<br/>
| style="width: 119px" |  
|-
|-
| 1/trigger
| 1/trigger
| style="width: 158px;" |  
| style="width: 158px" | Shift
| style="width: 281px;" |  
| colspan="2" rowspan="1" style="width: 281px" | On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed.&nbsp;<br/>
| style="width: 119px;" |  
| style="width: 119px" |  
|-
|-
| 2
| 2
| style="width: 158px;" | Raise center wheel<br/>
| style="width: 158px" | Raise center wheel<br/>
| style="width: 281px;" | .Wheel remains rasied while button is being pressed (or button 2 on right joystick is being pressed). Wheel lowers when both button 2s are released.<br/>
| colspan="2" rowspan="1" style="width: 281px" |  
| style="width: 119px;" |  
On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.
 
| style="width: 119px" |  
|-
|-
| 3
| 3
| style="width: 158px;" | Left/Right mode<br/>
| style="width: 158px" | Straight<br/>
| style="width: 281px;" | In '''Left/Right mode''' while this button is being pressed (or button 3 on right joystick is being pressed).
| style="width: 281px" | Drive straight forward and back with ''only Y axis of left joystick''<br/>
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 4
| 4
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" |  
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 5
| 5
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" |  
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 6
| 6
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" |  
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 7
| 7
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" | <br/>
| style="width: 281px" | <br/>
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 8
| 8
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" | <br/>
| style="width: 281px" | <br/>
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 9
| 9
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" | <br/>
| style="width: 281px" | <br/>
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 10
| 10
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" | <br/>
| style="width: 281px" | <br/>
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 11
| 11
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" |  
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| 12
| 12
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" |  
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
|-
| Z-axis
| Z-axis
| style="width: 158px;" |  
| style="width: 158px" |  
| style="width: 281px;" |  
| style="width: 281px" |  
| style="width: 119px;" |  
| style="width: 281px" | <br/>
| style="width: 119px" |  
|}
|}


== Joystick 2/Right ==
== Joystick 2/Right ==


{| cellpadding="2" cellspacing="1" border="1" style="width: 666px;"
{| style="width: 666px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''Button/Axis'''
| '''Button/Axis'''
| style="width: 141px; text-align: center;" | '''Description'''<br/>(brief)
| style="width: 141px; text-align: center" | '''Description'''<br/>(brief)
| style="width: 280px; text-align: center;" | '''Operation'''
| style="width: 280px; text-align: center" | '''Operation''' (Porcupine)<br/>
| style="width: 142px; text-align: center;" | '''Notes'''
| style="width: 280px; text-align: center" | '''Operation''' (Arcade)<br/>
| style="width: 142px; text-align: center" | '''Notes'''
|-
|-
| X-axis
| Y-axis
| style="width: 141px;" | Move Forward/Backward
| style="width: 141px" | Move Forward/Backward
| style="width: 280px;" |  
| style="width: 280px" |  
<span style="line-height: 20.79px;">In '''Left/Right mode''', this moves nothing; otherwise this moves just the right side of the drivetrain.</span>
<span style="line-height: 20.79px">Corresponds to forward motion of right side</span> (unless #3 is on left Joystick is pressed)


| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| Y-axis
| X-axis
| style="width: 141px;" | Move Left/Right
| style="width: 141px" | Move Left/Right
| style="width: 280px;" | <span style="line-height: 20.79px;">In '''Left/Right mode''', this moves </span>the center wheel left/right; otherwise this move nothing.
| style="width: 280px" | Corresponds to 1/2 of lateral robot motion<br/>
| style="width: 142px;" |  
| style="width: 280px" | X axis determines rotation (around robot center, unless #4,#5 are pressed)<br/>
| style="width: 142px" |  
|-
|-
| 1
| 1
| style="width: 141px;" | <br/>
| style="width: 141px" | Shift
| style="width: 280px;" | <br/>
| colspan="2" rowspan="1" style="width: 280px" | <span style="line-height: 20.7999992370605px">On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed.</span><br/>
| style="width: 142px;" |  
| style="width: 142px" |  
|-
|-
| 2
| 2
| style="width: 141px;" | &nbsp;Raise center wheel
| style="width: 141px" | &nbsp;Raise center wheel
| style="width: 280px;" | Wheel remains rasied while button is being pressed (or button 2 on left joystick is being pressed). Wheel lowers when both button 2s are released.<br/>
| colspan="2" rowspan="1" style="width: 280px" | On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.<br/>
| style="width: 142px;" |  
| style="width: 142px" |  
|-
|-
| 3
| 3
| style="width: 141px;" | Left/Right mode<br/>
| style="width: 141px" | Signal<br/>
| style="width: 280px;" | <br/>In '''Left/Right mode''' while this button is being pressed (or button 3 on left joystick is being pressed).
| style="width: 280px" | <br/>When pressed, make the lights blink to signal to the human player<br/>
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 4
| 4
| style="width: 141px;" |  
| style="width: 141px" | Pivot over left<br/>
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | While pressed, center of rotation is halfway on left side<br/>
| style="width: 142px" | <br/>
|-
|-
| 5
| 5
| style="width: 141px;" |  
| style="width: 141px" | Pivot over right<br/>
| style="width: 280px;" |  
| style="width: 280px" | <br/>
| style="width: 142px;" |  
| style="width: 280px" | While pressed, center of rotation is halfway on right side<br/>
| style="width: 142px" |  
|-
|-
| 6
| 6
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 7
| 7
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 8
| 8
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 9
| 9
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 10
| 10
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 11
| 11
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| 12
| 12
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|-
|-
| Z-axis
| Z-axis
| style="width: 141px;" |  
| style="width: 141px" |  
| style="width: 280px;" |  
| style="width: 280px" |  
| style="width: 142px;" |  
| style="width: 280px" | <br/>
| style="width: 142px" |  
|}
|}


== Joystick 3 ==
== Joystick 3 ==


{| cellpadding="2" cellspacing="1" border="1" style="width: 666px;"
{| style="width: 666px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''Button/Axis'''
| '''Button/Axis'''
| style="width: 140px; text-align: center;" | '''Description'''<br/>(brief)
| style="width: 140px; text-align: center" | '''Description'''<br/>(brief)
| style="width: 292px; text-align: center;" | '''Operation'''<br/>
| style="width: 292px; text-align: center" | '''Operation'''<br/>
| style="width: 131px; text-align: center;" | '''Notes'''<br/>
| style="width: 131px; text-align: center" | '''Notes'''<br/>
|-
|-
| X-axis
| X-axis
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" | <br/>
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| Y-axis
| Y-axis
| style="width: 140px;" | Move up/down
| style="width: 140px" | Move up/down
| style="width: 292px;" | Raise/lower grips, if '''Level 3 Preset''' not being pressed. This controls speed of movement.
| style="width: 292px" | Raise/lower grips, if '''Level 3 Preset''' not being pressed. This controls speed of movement.<br/>
| style="width: 131px;" |  
| style="width: 131px" | Forward is down, back pulls up
|-
|-
| 1/trigger
| 1/trigger
| style="width: 140px;" | Close lower grips
| style="width: 140px" | Close lower grips
| style="width: 292px;" |  
| style="width: 292px" |  
Closes the grips while this button is being pressed. Grips stop moving when this button and button #2 are both released.
Closes the grips while this button is being pressed. Grips stop moving when this button and button #2 are both released.


| style="width: 131px;" | <br/>
| style="width: 131px" | <br/>
|-
|-
| 2
| 2
| style="width: 140px;" | Open lower grips
| style="width: 140px" | Open lower grips
| style="width: 292px;" | Opens the grips while this button is being pressed (and button #1 is released). Grips stop moving when this button and button #1 are both released.
| style="width: 292px" | Opens the grips while this button is being pressed (and button #1 is released). Grips stop moving when this button and button #1 are both released.
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 3
| 3
| style="width: 140px;" | Level 3 Preset
| style="width: 140px" | Level 3 Preset
| style="width: 292px;" | Raise grips high enough to be above 2 totes (i.e. 2 tote stack created by human player at human player station). Grips raise and stay raised while the button is being pressed. While being pressed, the Y-axis is ignored. When button is released, Y-axis controls grip height.
| style="width: 292px" | Raise grips high enough to be above 2 totes (i.e. 2 tote stack created by human player at human player station). Grips raise and stay raised while the button is being pressed. While being pressed, the Y-axis is ignored. When button is released, Y-axis controls grip height.
| style="width: 131px;" | <br/>
| style="width: 131px" | <br/>
|-
|-
| 4
| 4
| style="width: 140px;" | <br/>TBD - RC gripper
| style="width: 140px" | <br/>TBD - RC gripper<br/>
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 5
| 5
| style="width: 140px;" | TBD - RC gripper
| style="width: 140px" | TBD - RC gripper
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 6
| 6
| style="width: 140px;" | Close/open uper grips
| style="width: 140px" | Opens Stabilizer Arms
| style="width: 292px;" | Closes the grips while this button is being pressed. Open the grips when button is released.
| style="width: 292px" | compress pistons to open arms when pressed
| style="width: 131px;" |  
| style="width: 131px" |  
 
 
|-
|-
| 7
| 7
| style="width: 140px;" |  
| style="width: 140px" | Closes Stabilizer Arms
| style="width: 292px;" | Release RC grabber to get can
| style="width: 292px" | extend pistons to close arms when pressed
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 8
| 8
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 9
| 9
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 10
| 10
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 11
| 11
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|-
|-
| 12
| 12
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" | <br/>
| style="width: 131px" | <br/>
|-
|-
| Z-axis
| Z-axis
| style="width: 140px;" |  
| style="width: 140px" |  
| style="width: 292px;" |  
| style="width: 292px" |  
| style="width: 131px;" |  
| style="width: 131px" |  
|}
|}


== Joystick 4/LaunchPad ==
== Joystick 4/LaunchPad ==


{| cellpadding="2" cellspacing="1" border="1" style="width: 671px;"
{| style="width: 671px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''Button/Axis'''
| '''Button/Axis'''<br/>
| style="width: 172px; text-align: center;" | '''Description'''<br/>(brief)
| style="width: 172px; text-align: center" | '''Description'''<br/>(brief)
| style="width: 277px; text-align: center;" | '''Operation'''
| style="width: 277px; text-align: center" | '''Operation'''
| style="width: 119px; text-align: center;" | '''Notes'''
| style="width: 119px; text-align: center" | '''Notes'''
|-
|-
| 1
| 1
| style="width: 172px;" | Auto 'main'
| style="width: 172px" | Auto 'main'<br/>
| style="width: 277px;" | Active when 3-way Auto switch is 'up'. This will pick the hard coded/defined auto mode.
| style="width: 277px" | Active when 3-way Auto switch is 'up'. This will pick the hard coded/defined auto mode.
| style="width: 119px;" |  
| style="width: 119px" |  
|-
|-
| 2
| 2
| style="width: 172px;" | Auto 'dashboard'
| style="width: 172px" | Auto 'dashboard'
| style="width: 277px;" | Active when 3-way Auto switch is 'down'. This will indicate that the auto mode selected in the Dashboard is to be used.
| style="width: 277px" | Active when 3-way Auto switch is 'down'. This will indicate that the auto mode selected in the Dashboard is to be used.
| style="width: 119px;" |  
| style="width: 119px" |  
|-
|-
| 3
| 3
| style="width: 172px;" | Broken #1
| style="width: 172px" | Broken #1
| style="width: 277px;" |  
| style="width: 277px" |  
future
Lift position sensors broken


| style="width: 119px;" | left-most switch on top row
| style="width: 119px" | left-most switch on top row
|-
|-
| 4
| 4
| style="width: 172px;" | Broken #2
| style="width: 172px" | Broken #2
| style="width: 277px;" | future
| style="width: 277px" | Gripper position sensors broken<br/>
| style="width: 119px;" | located to the right of Broken #1
| style="width: 119px" | located to the right of Broken #1
|-
|-
| 5
| 5
| style="width: 172px;" | Broken #3
| style="width: 172px" | Broken #3
| style="width: 277px;" | future
| style="width: 277px" | enable arcade drive (has priority over #4)<br/>
| style="width: 119px;" | located to the left of Broken #4
| style="width: 119px" | located to the left of Broken #4
|-
|-
| 6
| 6
| style="width: 172px;" | Broken #4
| style="width: 172px" | Broken #4
| style="width: 277px;" | future
| style="width: 277px" | future<br/>
| style="width: 119px;" | right-most switch on top row
| style="width: 119px" | right-most switch on top row<br/>
|-
|-
| 7
| 7
| style="width: 172px;" | Broken #5
| style="width: 172px" | Broken #5
| style="width: 277px;" | future
| style="width: 277px" | future<br/>
| style="width: 119px;" | left-most switch on bottom row
| style="width: 119px" | left-most switch on bottom row
|-
|-
| 8
| 8
| style="width: 172px;" | Broken #6
| style="width: 172px" | Broken #6
| style="width: 277px;" | future
| style="width: 277px" | set alternate camera<br/>
| style="width: 119px;" | lcated to the right of Broken #5
| style="width: 119px" | located to the right of Broken #5<br/>
|-
|-
| 9
| 9
| style="width: 172px;" | Broken #7
| style="width: 172px" | Broken #7
| style="width: 277px;" | future
| style="width: 277px" | future
| style="width: 119px;" | located to the left of Broken #8
| style="width: 119px" | located to the left of Broken #8
|-
|-
| 10
| 10
| style="width: 172px;" | Broken #8
| style="width: 172px" | Broken #8
| style="width: 277px;" | future
| style="width: 277px" | future<br/>
| style="width: 119px;" | Right-most switch on bottom row
| style="width: 119px" | Right-most switch on bottom row<br/>
|}
 
 
 
{| style="width: 500px" border="1" cellpadding="1" cellspacing="1"
|-
| Output Byte
| Is 1 If and Only If...
| Notes
|-
| 1
| Autonomous Mode is active (either disabled or running)
| <br/>
|-
| 2
| TeleOperated Mode is active (either disabled or running)
| <br/>
|-
| 3
| The alliance color is Red
| <br/>
|-
| 4
| The drive is in pure tank/pure strafe mode
| <br/>
|-
| 5
| The drive is in arcade mode
| <br/>
|-
| 6
| The drive is in porcupine mode
| <br/>
|-
| 7
| The FMS is attached
| <br/>
|-
| 8
| The Roborio has declared brownout
| <br/>
|-
| 9
| The alliance color is in an indeterminate state
| <br/>
|-
| 10
| The Driver Station is Enabled (Either Auto, Tele, Test is running)
| <br/>
|-
| 11
| We are in station 1 or 3 (false=station 2 or invalid)
| <br/>
|-
| 12
| We are in station 2 or 3 (false=station 1 or invalid)
| <br/>
|-
| 13
| <br/>
| <br/>
|-
| 14
| <br/>
| <br/>
|-
| 15
| <br/>
| <br/>
|-
| 16
| <br/>
| <br/>
|-
| 17
| <br/>
| <br/>
|-
| 18
| <br/>
| <br/>
|-
| 19
| <br/>
| <br/>
|-
| 20
| <br/>
| <br/>
|-
| 21
| <br/>
| <br/>
|-
| 22
| <br/>
| <br/>
|-
| 23
| <br/>
| <br/>
|-
| 24
| <br/>
| <br/>
|-
| 25
| <br/>
| <br/>
|-
| 26
| <br/>
| <br/>
|-
| 27
| <br/>
| <br/>
|-
| 28
| <br/>
| <br/>
|-
| 29
| <br/>
| <br/>
|-
| 30
| <br/>
| <br/>
|-
| 31
| <br/>
| <br/>
|-
| 32
| <br/>
| <br/>
|}
 
== SmartDashboard ==
 
{| style="width: 1014px" border="1" cellpadding="1" cellspacing="1"
|-
| '''Screen'''<br/>
| Description (brief)
| style="width: 174px" | Operation
| style="width: 458px" | Notes
| style="width: 150px" | Variable Name
| style="width: 91px" | Data Type
|-
| Main
| Camera Feed
| style="width: 174px" | Direct feed from the camera
| style="width: 458px" | --
| style="width: 150px" | --
| style="width: 91px" | --
|-
| Main
| Auto Choice
| style="width: 174px" | Will be used to control which autononomous mode is used.
| style="width: 458px" | The auto mode should only be able to be changed if the three way switch is in the down position.
| style="width: 150px" | auto_choice
| style="width: 91px" | double
|-
| Main
| Auto Switch Position
| style="width: 174px" | Will be used to determine if autononomous mode from dashboard is used.
| style="width: 458px" | The auto mode should only be able to be changed in the dashboard if the three way switch is in the down position.
| style="width: 150px" | auto_switch
| style="width: 91px" | double
|-
| Main
| Gripper Position
| style="width: 174px" | A meter used to show the position of the grippers.
| style="width: 458px" | Will show a percent as a label, 0% means closed and 100% means fully opened.
| style="width: 150px" | gripper_position
| style="width: 91px" |
double
 
|-
| Main&nbsp;
| Lifter Position
| style="width: 174px" | A meter used to show the position of the lifter.
| style="width: 458px" | <span style="line-height: 20.7999992370605px">Will show a percent as a label, 0% means home position and 100% means the lifter is at full height.</span><br/>
| style="width: 150px" | lifter_position
| style="width: 91px" |
double
 
|-
| Main
| Auto Mode Description
| style="width: 174px" | Describes the currently selected auto mode.
| style="width: 458px" | --
| style="width: 150px" | auto_description
| style="width: 91px" | string
|}
|}



Latest revision as of 16:53, 7 March 2015

Robot I/O

CAN ID Assignments

ID Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0 RESERVED

n/a


Factory-default
allows for adding CTRE devices quickly and re-assign its ID

don't use

1 RESERVED n/a
Factory-default
allows for adding Jaguar quickly and re-assign its ID

don't use
2 drivetrain motor CIM Left Front Drive
3 drivetrain motor CIM Left Rear Drive
4 drivetrain motor CIM Right Front Drive
5 drivetrain motor CIM Right Rear Drive
6 drivetrain motor CIM Strafe
unclear on how to activate this motor
7 lifter motor RS775 Left lifter
8 lifter motor RS775 Right lifter
9 gripper motor RS550 Gripper/Motor

10




11




12


13


14


15 pnuematics PCM module
N/A
Stabilizer, Shifter, Strafing
address spaces for Jaguars, SRXs, PCM, and PDP are all separate. We are limited to one PDP, and will need only one PCM
0 power dist. PD module
N/A
Power Distribution Readback
Must be 0 (WPILib has no easy way to use another ID). We'll only ever have one

PWM Outputs

ID Subsystem

Component

Type

Model # Description
(brief)

Operation


Notes
0



1


2


3


4


5


6





7





8


9



Relay Outputs

ID Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0


1


2


3


Analog IO

RoboRIO Analog Inputs

ID Subsystem

Component

Type

Model # Description
(brief)
Operation

Voltage

Range

Notes
0 drivetrain gyro ADW22307 drivetrain gyro rot feedback

X & Y orientation used in Autonomous.

(no temp correction needed within our bounds)

2.5 V center (σ, 0.007 V/deg/sec (0.0069 to 0.0074 within ± 1σ) New Part Number: Datasheet
1





2



3



Rev Robotics More Board Analog IO

ID Subsystem

Component

Type

Model # Description
(brief)
Operation

Voltage

Range

Notes
AIN0

 

 
AIN1




AIN2




AIN3






AOUT0






AOUT1




Digital IO (GPIO)

RoboRio IO

ID Direction
(IN/OUT)
Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0 IN drivetrain Encoder  63R256 Left Encoder, Phase A Drivetrain rotation - calculate Position measurement
1 IN
-
- - Left Encoder, Phase B
B-channel May not be present
2 IN drivetrain Encoder  63R256 Right Encoder, Phase A Drivetrain rotation - calculate Position measurement
3 IN -
-  - Right Encoder, Phase B
B-channel

May not be present

4 IN lifter Encoder  63R256 Lifter Encoder, Phase A Lifter drive rotation -  calculate Height Zeroed with Lifter Flag Sensor. Channel A
5 IN
-
- - Lifter Encoder, Phase B
B-channel

6 IN lifter Flag Sensor  OPB815 Home Position At Bottom Lower position
7 IN gripper Encoder  63R256 Gripper Encoder, Phase A Gripper drive rotation - calculate Position
8 IN - - - Gripper Encoder, Phase B B-channel
9 IN gripper Flag Sensor  OPB815 Home Gripper Position A Inner position home flag (Primary)

Rev Robotics More Board IO

ID Direction (IN/OUT) Subsystem Component Type Model # Description (brief) Operation
Notes
0 IN
gripper
Banner
Q10AN6R Gripper Tote Detection
Beam break sensor to check for tote presence
sensor open collector output.  pullup in roborio
1 IN
lifter
Flag
OPB815 Lift encoder high flag
Lifter upper flag, for safety and to help calibration

2 IN
gripper
Flag Sensor
OPB815 Home Gripper Position B
Inner position Backup

3






4






5






6






7






8






9






10






11






12






13






14






15






I2C Registers

Address
(e.g. 0100111X)
Pin
(e.g. GP0)
Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0


1


2


3


4


5


6


SPI Devices

#
Subsystem

Component Type

Model # Description (brief) Operation
Notes
kOnBoardCS0 drivetrain accelerometer ADXL345
accelerometer, right by the gyro
to improve autonomous drive code




 

USB Host Ports

Address
Subsystem

Component Type

Model # Description (brief) Operation
Notes
0 Camera Camera HD-3000 USB camera Facing down from top of lifter. Helps with tote + alignment in auto, driver, maybe for semiauto
1 Logging USB Stick  ? USB Stick to log info record match and state information at high rate, for postmortem match analysis

Pneumatics Control Module

ID Subsystem

Component

Type

Model #

Description

(brief)

Operation
Notes Pressure Circuit
0 Drivetrain Single Solenoid SY3140-6LZ shifter LOW (default high) shifts down double action cylinder (vented no action) A (4 total, 40-60 psi tbd)
1 Drivetrain
Single Solenoid
SY3140-6LZ
strafing wheel DOWN (default up)
lowers strafing wheel
single action, spring retract cylinder (vented up) B (3 total, 20-60 psi tbd)
2 Stabilizer
Single Solenoid
 SY3140-6LZ Stabilizer Gripper IN (default out)
closes stabilizer
double action cylinder (vented no action)
A
3 Lifter
Single Solenoid
SY3140-6LZ
Lifter brake OPEN (default locked)
pnuematic cylinder engages bicycle brake to lock lift elevator
double action cylinder (vented open, spring on brake)
A
4

 



5






6

 



7



Operator Controls

There are two drive modes:

  • Porcupine
  • Arcade

Joystick 1/Left

Button/Axis Description
(brief)
Operation (Porcupine)
Operation (Arcade)
Notes
Y-Axis 6Move Forward/Backward

Corresponds to forward motion of left side (unless #3 is pressed)

Moves whole robot forward
X-Axis  Corresponds to 1/2 of lateral robot motion
Moves whole robot sideways (right is right)
1/trigger Shift On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed. 
2 Raise center wheel

On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.

3 Straight
Drive straight forward and back with only Y axis of left joystick

4
5
6
7

8

9

10

11
12
Z-axis

Joystick 2/Right

Button/Axis Description
(brief)
Operation (Porcupine)
Operation (Arcade)
Notes
Y-axis Move Forward/Backward

Corresponds to forward motion of right side (unless #3 is on left Joystick is pressed)


X-axis Move Left/Right Corresponds to 1/2 of lateral robot motion
X axis determines rotation (around robot center, unless #4,#5 are pressed)
1 Shift On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed.
2  Raise center wheel On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.
3 Signal

When pressed, make the lights blink to signal to the human player

4 Pivot over left
While pressed, center of rotation is halfway on left side

5 Pivot over right

While pressed, center of rotation is halfway on right side
6
7
8
9
10
11
12
Z-axis

Joystick 3

Button/Axis Description
(brief)
Operation
Notes
X-axis
Y-axis Move up/down Raise/lower grips, if Level 3 Preset not being pressed. This controls speed of movement.
Forward is down, back pulls up
1/trigger Close lower grips

Closes the grips while this button is being pressed. Grips stop moving when this button and button #2 are both released.


2 Open lower grips Opens the grips while this button is being pressed (and button #1 is released). Grips stop moving when this button and button #1 are both released.
3 Level 3 Preset Raise grips high enough to be above 2 totes (i.e. 2 tote stack created by human player at human player station). Grips raise and stay raised while the button is being pressed. While being pressed, the Y-axis is ignored. When button is released, Y-axis controls grip height.
4
TBD - RC gripper
5 TBD - RC gripper
6 Opens Stabilizer Arms compress pistons to open arms when pressed


7 Closes Stabilizer Arms extend pistons to close arms when pressed
8
9
10
11
12
Z-axis

Joystick 4/LaunchPad

Button/Axis
Description
(brief)
Operation Notes
1 Auto 'main'
Active when 3-way Auto switch is 'up'. This will pick the hard coded/defined auto mode.
2 Auto 'dashboard' Active when 3-way Auto switch is 'down'. This will indicate that the auto mode selected in the Dashboard is to be used.
3 Broken #1

Lift position sensors broken

left-most switch on top row
4 Broken #2 Gripper position sensors broken
located to the right of Broken #1
5 Broken #3 enable arcade drive (has priority over #4)
located to the left of Broken #4
6 Broken #4 future
right-most switch on top row
7 Broken #5 future
left-most switch on bottom row
8 Broken #6 set alternate camera
located to the right of Broken #5
9 Broken #7 future located to the left of Broken #8
10 Broken #8 future
Right-most switch on bottom row


Output Byte Is 1 If and Only If... Notes
1 Autonomous Mode is active (either disabled or running)
2 TeleOperated Mode is active (either disabled or running)
3 The alliance color is Red
4 The drive is in pure tank/pure strafe mode
5 The drive is in arcade mode
6 The drive is in porcupine mode
7 The FMS is attached
8 The Roborio has declared brownout
9 The alliance color is in an indeterminate state
10 The Driver Station is Enabled (Either Auto, Tele, Test is running)
11 We are in station 1 or 3 (false=station 2 or invalid)
12 We are in station 2 or 3 (false=station 1 or invalid)
13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

SmartDashboard

Screen
Description (brief) Operation Notes Variable Name Data Type
Main Camera Feed Direct feed from the camera -- -- --
Main Auto Choice Will be used to control which autononomous mode is used. The auto mode should only be able to be changed if the three way switch is in the down position. auto_choice double
Main Auto Switch Position Will be used to determine if autononomous mode from dashboard is used. The auto mode should only be able to be changed in the dashboard if the three way switch is in the down position. auto_switch double
Main Gripper Position A meter used to show the position of the grippers. Will show a percent as a label, 0% means closed and 100% means fully opened. gripper_position

double

Main  Lifter Position A meter used to show the position of the lifter. Will show a percent as a label, 0% means home position and 100% means the lifter is at full height.
lifter_position

double

Main Auto Mode Description Describes the currently selected auto mode. -- auto_description string

IO Maps for Old Robots