|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: Autonomous Photosensor Programming
This is all helpful, I only wish I had more expertise in Java. This is still kind of a new thing for me to learn so I am completely out of my league. Thank you for your help! If you are able to help a little more on the
if(middle.get()) concept that would help. I can't help but feel I am missing something here. |
|
#2
|
||||
|
||||
|
Re: Autonomous Photosensor Programming
Quote:
|
|
#3
|
||||
|
||||
|
Re: Autonomous Photosensor Programming
Well heres a new development, we only own one photosensor, so should I only have the middle part of the code? Or should I use a whole new code?
|
|
#4
|
||||
|
||||
|
Re: Autonomous Photosensor Programming
You should have gotten three of the photoelectic sensors in the Kit of Parts.
As others have said, you want to put the three line sensors in a row, spaced apart a little. Then you have to adjust them such that the LED's on the sensors change colors as you move the robot past the tape. Then, depending on how you wired them, you will get a value from the sensor with a digitalinput. The Get method returns a value, 1 or 0 when the sensor sees the line, or doesn't, depending on how you wired them. From there, you basically go forward while the center one is on the line, then if either side sees the tape, turn a bit until only the center sees the line. |
|
#5
|
|||
|
|||
|
Re: Autonomous Photosensor Programming
Here's my teams code that I wrote for this. We can do the Y + the straight profiles of the line. Since this is fairly outdated I am not to worried about leeching.
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.freelance.logic;
import edu.wpi.first.wpilibj.Timer;
import org.freelance.sensors.Photoswitch;
import org.freelance.sys.MecanumDrive;
import org.freelance.util.Constants;
/**
*
* @author Freelance Robotics (Hadyn Fitzgerald)
*/
public class Linetracking {
private boolean done = false;
private boolean left = false;
private int profile = 1; //1 == Y, 0 == Straight
private Photoswitch leftSwitch;
private Photoswitch centerSwitch;
private Photoswitch rightSwitch;
private final byte NONE_OPCODE = 0, LEFT_OPCODE = 1, CENTER_OPCODE = 2,
RIGHT_OPCODE = 4, ALL_OPCODE = 7;
private double FORWARD = -.5, BACKWARD = .5, LEFT = -.425, RIGHT = .425;
private int stage = 0;
public Linetracking() {
initLineTracking();
}
private void initLineTracking() {
/**
* Construct Photoswitches
*/
leftSwitch = new Photoswitch(Constants.LEFT_SLOT);
centerSwitch = new Photoswitch(Constants.CENTER_SLOT);
rightSwitch = new Photoswitch(Constants.RIGHT_SLOT);
}
public byte getType() {
byte type = 0;
if(leftSwitch.get())
type += 1;
if(centerSwitch.get())
type += 2;
if(rightSwitch.get())
type += 4;
System.out.println(type);
return type;
}
public boolean process(MecanumDrive drive) {
byte type = getType();
switch(type) {
case NONE_OPCODE:
if(profile == 0) {
drive.controllerDrive(0, 0, 0);
} else
if(stage == 0) {
for(int a = 0; a < 50; a++) {
if(left)
drive.controllerDrive(0, 0, -.3);
else
drive.controllerDrive(0, 0, .3);
}
while(getType() != CENTER_OPCODE) {
if(getType() == ALL_OPCODE)
break;
if(left)
drive.controllerDrive(0, LEFT, 0);
else
drive.controllerDrive(0, LEFT, 0);
}
stage++;
} else if(stage == 1) {
for(int a = 0; a < 35; a++) {
if(left)
drive.controllerDrive(0, 0, .3);
else
drive.controllerDrive(0, 0, -.3);
}
done = true;
} else {
drive.controllerDrive(0, 0, 0);
}
break;
case LEFT_OPCODE:
while(getType() != CENTER_OPCODE) {
if(getType() == NONE_OPCODE || getType() == ALL_OPCODE)
break;
drive.controllerDrive(0, RIGHT, 0);
}
break;
case CENTER_OPCODE:
drive.controllerDrive(FORWARD, 0, 0);
break;
case RIGHT_OPCODE:
while(getType() != CENTER_OPCODE) {
if(getType() == NONE_OPCODE || getType() == ALL_OPCODE)
break;
drive.controllerDrive(0, LEFT, 0);
}
break;
case ALL_OPCODE:
drive.controllerDrive(0, 0, 0);
if(profile == 0) {
done = true;
}
break;
}
return done;
}
public void reset() {
stage = 0;
}
}
|
|
#6
|
|||||
|
|||||
|
Re: Autonomous Photosensor Programming
How are you guys programming your Y's? I'm having some trouble with mine. Any tips would be really appreciated.
|
|
#7
|
||||
|
||||
|
Re: Autonomous Photosensor Programming
Quote:
Code:
if(left.get() && !middle.get() && right.get()) {
// turn left or right, depending on what you want
}
Last edited by Patrickwhite : 20-02-2011 at 21:29. Reason: forgot to write the point of the post |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|