240 likes | 478 Views
Add and Use a Sensor & Autonomous For FIRST Robotics. FRC Robot Framework. Sensors – Adding Intelligence and Enabling Automation. Types of sensors: Limit Switches – on/off Gyro - provides Robot rotation angle position
E N D
Add and Use a Sensor & Autonomous For FIRST Robotics FRC Robot Framework
Sensors – Adding Intelligence and Enabling Automation Types of sensors: Limit Switches – on/off Gyro - provides Robot rotation angle position Potentiometer – like a volume control – can be used to control arm rotation Encoder - measures shaft rotation – robot distance, lift height Light sensors – detect object breaking beam Infrared - detect presence of object nearby Ultrasonic - detects distance to object – such as wall Camera (Vision) - Direct feed to dashboard, Targeting with vision processing Kinect (Camera + Infrared) – For Driver Station or on board robot? not used ….. yet…
Session Objectives: Discuss principles and applications for “Gyro” sensor. Bicycle wheel demo Incorporate “Gyro” into Autonomous code: Control Robot to drive in straight line Open Gyro in Begin.vi Get Gyro Angle Tele-op.vi display on Front Panel Next use Gyro reading as “Feedback” to tell if robot is driving straight (at angle specified) PID control
FRC Project • Browse to find your last code • (or open new) • Navigate to the Robot Main block diagram • Then select Begin • Go to Block Diagram
Begin .vi Updated for adding Gyro • Edit vi: Add an accessory motor: • Open function palette and select: WPI Robotics Library / Sensors / Gyro • Add Open Gyro .vi • Identify where plugged in • AddRefnum Set.vi • Give it a name
Open the “Autonomous VI” • Remove diagram disable • Put cursor on edge of disabled structure, right click and select “Remove Diagram Disable Structure” • Delete the last 2 while loops • After noting what the default code is intended to do • A method of sequencing operations in autonomous that we may return to
Set up a While Loop in Autonomous • In remaining While Loop: • Enlarge, create space to add Gyro and PID functions • Change length of time to 5 seconds • Each loop is 50 ms, 100 loops = 5 secs. • Change motor inputs to 0 • For now
Modify Autonomous.VI to Read Gyro • From WPI Robotics Library/ Sensors/ Gyro palette • Bring the Refnum Get and provide name it was given in the Begin.vi • Bring Gyro Get Output vi and connect them • Put cursor on “angle” output, right click, select, create indicator • Indicator shows up on Front Panel • Digital indicator is default but can be replaced with a Dial or Linear Indicator
Modify Front Panel Indicatorfor Gyro reading • Put Cursor on indicator, right click and select “Replace”, then “Gauge” • Enlarge gauge by dragging diagonally • Click on the 10 and change to: 180 • Click on the 0 and make it: -180 • Hover on the 180 until you see the rotation arrows – then drag the 180 around to the -180.
Test the CodeSee if in Autonomous the Gyro is being read Next: Lets use it for an Autonomous code With “Feed-back” control
Feed-Back Control • Open Loop: • Examples: • In an (older) car: turn heater knob to high • Heater turns on and stays on until the driver gets too hot and manually turns it down • Robot Harvester(2012): Operator holds button to turn harvester motor, watches until sees ball move up and then releases which stops motor Controller Robot
Feed-Back Control • Closed Loop • Examples: • In a (newer) car: turn heater knob to 70oF • Heater goes on until the thermostat (sensor) reads that it is 70oF , then automatically turns it off until it gets too cool, then back on, etc. • Robot Harvester: Operator presses button to start harvester motor • Motor goes until on board light sensor “sees” ball – sends signal back to cRio • Labview program then directs motor to stop Controller Robot Sensor Generally using it to see if a process is complete, then stabilize
PID Control • PID stands for Proportional-Integral-Derivative • A method of closed loop feedback control • A way of using what you know from your sensors to compute an “intelligent” motor output. • Proportional – P – looks at difference between desired position and actual and sets motor speed to close gap proportional to that gap • Incorporates the idea that you need to slow down as you get close so you don’t overshoot the target.
The PID Function Block • Set-point • Desired value to get to • Process variable • Actual value as measured by a sensor • Output determined by magnitude of difference (error) between setpoint and process variable • PID Gains adjust sensitivity
Add: Read Gyro And PID Control Of Steering Correction • Get Gyro Refnum, Get Gyro Angle • Add PID function block • Setpoint – set to 0 to drive straight forward • Connect Gyro output as Process variable input to PID • Limit output range • Set PID gains • Connect output to X input to arcade drive (Steering)
Suggested method for determining PID gains • Method for Setting Values • Start with CP small and CI, CD both zero. • Raise CP until the robot is oscillating • consistently around the target. • Once this is accomplished, start increasing • CD until the robot stops oscillating. • Then add CI until the robot stops within a • desired range of the target. Often we have only used the P, or PD
Homework Challenge Slides Learn how to modify the Dashboard Make an autonomous Drive Sequence Drive a square pattern Learn to use the “examples” and be able to code a variety of sensors – including encoder
DashboardMain.vi Modifying the Dashboard – Gyro Indicator Open Dashboard Project, Modify to display Gyro angle on a gage (follow Labview tutorial number 7) Modify Robot code Tele-op to send data to dashboard (also part of Labview tutorial) Front Panel:
Incorporating Sensors – Gyro:: • Follow Tutorials 4-7 • Adds Gyro • Opens Dashboard Project Open Dashboard Project, Modify to display Gyro angle on a gage (follow Labview tutorial) Modify Robot code Tele-op to send data to dashboard (also part of Labview tutorial)
Homework / Challenge # 2 Update the Autonomous code • Add 3 sequential While loops (like in default disabled structure) • Have robot go straight, turn 90 degrees, • Repeat 3 times to drive in a square.
Homework / Challenge # 3 • Add variety of sensors to Begin and Tele-op • Use “Examples” as source to copy correct formats