Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.82 KB | None | 0 0
  1. import lejos.nxt.*;
  2.  
  3.  
  4.  
  5. public class blockPickUp extends Thread {
  6.         public static final int ROTATE_SPEED = 150;
  7.         public static final int FORWARD_SPEED = 200;
  8.         public static final double forwardDistance = 12.0;
  9.         public static final double forwardThreshold = 15.0;
  10.         public final double leftRadius = 2.1;
  11.         public final double rightRadius = 2.15;
  12.         public final double width = 10.0;
  13.         private ClawDriver claw;
  14.         private UltrasonicSensor sensor;
  15.         private NXTRegulatedMotor leftMotor,rightMotor;
  16.        
  17.         //initiating objects
  18.         WheelDriver wheels = new WheelDriver( leftMotor, rightMotor) ;
  19.         Odometer odo = new Odometer();
  20.         Navigation nav = new Navigation(leftRadius, rightRadius, odo, wheels);
  21.         UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);
  22.        
  23.         public blockPickUp (ClawDriver claw, NXTRegulatedMotor leftMotor, NXTRegulatedMotor rightMotor ) {
  24.             this.claw = claw;
  25.             this.leftMotor = leftMotor;
  26.             this.rightMotor= rightMotor;
  27.         }
  28.  
  29.         public void scanRange() {
  30.            
  31.                 int threshold = 20;    
  32.                 boolean travel = true;
  33.                 double turnAngle = -10;
  34.                 int storeI = 0;
  35.                 int storeW = 0;
  36.                 int loopBreak = 0;
  37.                 int secondLap = 0;
  38.                
  39.                 while (travel){                
  40.                     if (us.getDistance() < threshold) {
  41.                         travelForward(forwardThreshold);
  42.                         claw.close();
  43.                         break;
  44.                     }
  45.                     rotateCCW(60);
  46.                    
  47.                     for (int i = 0 ; i < 9 ; i++){
  48.                         rotateCCW(turnAngle);
  49.                         if (us.getDistance() < threshold){
  50.                             travelForward(forwardThreshold);
  51.                             claw.close();
  52.                             loopBreak = 1;
  53.                             storeI = i;
  54.                             break;
  55.                         }
  56.                     }
  57.                    
  58.                     if (loopBreak != 1){
  59.                         rotateCCW(30);
  60.                         travelForward(forwardDistance);
  61.                         storeW++;
  62.                        
  63.                         if (storeW >= 5){
  64.                             rotateCCW(180);
  65.                             travelForward(storeW*forwardDistance);
  66.                             rotateCCW(-90);
  67.                             travelForward(30);
  68.                             rotateCCW(-90);
  69.                             storeI = 0;
  70.                             storeW = 0;
  71.                             secondLap++;
  72.                             scanRange();
  73.                         }
  74.                     }
  75.                     else {
  76.                         break;
  77.                     }
  78.                 }
  79.                    
  80.                 Sound.beep();
  81.                 rotateCCW(-180);
  82.                 travelForward(forwardThreshold);
  83.                
  84.                 if (storeI <= 5) {
  85.                     Sound.buzz();
  86.                     rotateCCW(storeI*turnAngle);
  87.                 }
  88.                 if (storeI >= 7){
  89.                     rotateCCW(-storeI*turnAngle);
  90.                 }
  91.                
  92.                 travelForward(storeW*forwardDistance);
  93.                
  94.                 if (secondLap > 0){
  95.                     rotateCCW(90);
  96.                     travelForward(30);
  97.                     rotateCCW(-90);
  98.                 }
  99.                
  100.         }
  101.                
  102.         public void travelForward(double forwardDistance){
  103.                 leftMotor.setSpeed(FORWARD_SPEED);
  104.                 rightMotor.setSpeed(FORWARD_SPEED);
  105.                 leftMotor.rotate(convertDistance(leftRadius, forwardDistance), true);
  106.                 rightMotor.rotate(convertDistance(rightRadius, forwardDistance), false);
  107.         }
  108.        
  109.         //rotate 45 degrees counterclockwise
  110.         public void rotateCCW(double angle) {
  111.             leftMotor.setSpeed(ROTATE_SPEED);
  112.             rightMotor.setSpeed(ROTATE_SPEED);
  113.             leftMotor.rotate(-convertAngle(leftRadius, width, angle), true);
  114.             rightMotor.rotate(convertAngle(rightRadius, width, angle), false);
  115.            
  116.         }
  117.        
  118.         private int getFilteredData() {
  119.             int distance;
  120.             // do a ping
  121.             us.ping();
  122.             // wait for the ping to complete
  123.             try { Thread.sleep(50); } catch (InterruptedException e) {}
  124.             // there will be a delay here
  125.             distance = us.getDistance();
  126.             return distance;
  127.     }
  128.        
  129.        
  130.         private static int convertDistance(double radius, double distance) {
  131.                 return (int) ((180.0 * distance) / (Math.PI * radius));
  132.         }
  133.  
  134.         private static int convertAngle(double radius, double width, double angle) {
  135.                 return convertDistance(radius, Math.PI * width * angle / 360.0);
  136.         }
  137.  
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement