Search

Showing posts with label RoverBott. Show all posts
Showing posts with label RoverBott. Show all posts

Roverbott Video 2

View Comments





























Read more...

Roverbott Video 1

View Comments




























Read more...

Project 2: a modified Roverbott

View Comments

My Goal: To build a Roverbot and have it behave like a bumber car (Hit a wall, bounce back and change direction) and have the RoverBot respond to commands from the remoteControl
I used this Tutorial as reference




In the "specialized trails" section, read chapters, Overview, Behavior and Navigation.
Here are my Java files

HitWallS1.java
import josx.robotics.*;
import josx.platform.rcx.*;

public class HitWallS1 implements Behavior {

public boolean takeControl() {
return Sensor.S1.readBooleanValue();
}

public void suppress() {
// Motor.A.stop();
//Motor.C.stop();
Motor.A.forward();
Motor.C.forward();
}

public void action() {
// Back up:
Motor.A.backward();
Motor.C.backward();
try{Thread.sleep(1000);}catch(Exception e) {}
// Rotate by causing only one wheel to stop:
Motor.A.stop();
try{Thread.sleep(300);}catch(Exception e) {}
Motor.C.stop();
}
}

HitWallS2.java
import josx.robotics.*;
import josx.platform.rcx.*;

public class HitWallS2 implements Behavior {

public boolean takeControl() {
return Sensor.S2.readBooleanValue();
}

public void suppress() {
// Motor.A.stop();
//Motor.C.stop();
Motor.A.forward();
Motor.C.forward();
}

public void action() {
// Back up:
Motor.A.backward();
Motor.C.backward();
try{Thread.sleep(1000);}catch(Exception e) {}
// Rotate by causing only one wheel to stop:
Motor.A.stop();
try{Thread.sleep(300);}catch(Exception e) {}
Motor.C.stop();
}
}

DriveForward.java
import josx.robotics.*;
import josx.platform.rcx.*;

public class DriveForward implements Behavior {

public boolean takeControl() {
return true;
}

public void suppress() {
Motor.A.stop();
Motor.C.stop();
}

public void action() {
Motor.A.forward();
Motor.C.forward();
}
}

RemoteControlTest.java
/*
* $Log: RemoteControlTest.java,v $
* Revision 1.2 2002/11/01 16:01:28 mpscholz
* changed startup display
*
* Revision 1.1 2002/09/28 10:29:34 mpscholz
* initial version for the test example of the remotecontrol package
*
*/

import josx.platform.rcx.*;
import josx.platform.rcx.remotecontrol.*;
import josx.robotics.*;

/////////////////////////////////////////////////////////
/**
*
* This class is a main test program for the remote control sensor
* @author Matthias Paul Scholz (mp.scholz@t-online.de)
* @version 1.0 (24/09/2002)
*/
public class RemoteControlTest implements RemoteControlListener {

////////////////////////////////////////////
// constants
////////////////////////////////////////////
private static final char[] MESSAGE1 = {'M','S','G','1'};
private static final char[] MESSAGE2 = {'M','S','G','2'};
private static final char[] MESSAGE3 = {'M','S','G','3'};
private static final char[] MOTOR_DOWN = {'M','O','T','-'};
private static final char[] MOTOR_UP = {'M','O','T','+'};
private static final char[] PROGRAM1 = {'P','R','O','G','1'};
private static final char[] PROGRAM2 = {'P','R','O','G','2'};
private static final char[] PROGRAM3 = {'P','R','O','G','3'};
private static final char[] PROGRAM4 = {'P','R','O','G','4'};
private static final char[] PROGRAM5 = {'P','R','O','G','5'};
private static final char[] STOP = {'S','T','O','P'};
private static final char[] SOUND = {'S','O','U','N','D'};
private static final char[] READY = {'R','E','A','D','Y'};

////////////////////////////////////////////
// fields
////////////////////////////////////////////
/**
* current sensor states (activated = true)
*/
private boolean[] fSensorState = { false,false,false };


////////////////////////////////////////////
// constructors
////////////////////////////////////////////

////////////////////////////////////////////
/**
* creates a new instance of RemoteControlTest
*/
public RemoteControlTest() {
// reset to initial state
reset();
// display "ready"
TextLCD.print(READY);
} // RemoteControlTest()

////////////////////////////////////////////
// public methods
////////////////////////////////////////////

////////////////////////////////////////////
/**
* main method for test reasons
* @throws InterruptedException
*/
public static void main(String[] args)
throws InterruptedException {
Behavior b1 = new DriveForward();
Behavior b2 = new HitWallS1();
Behavior b3 = new HitWallS2();

Behavior [] bArray = {b1, b2,b3};
Arbitrator arby = new Arbitrator(bArray);


// instantiate remote control test instance
RemoteControlTest remoteControlTest = new RemoteControlTest();

// create remote control sensor
RemoteControlSensor sensor = new RemoteControlSensor();
sensor.addRemoteControlListener(remoteControlTest);

// reset engine
remoteControlTest.reset();
// just run until RUN button is pressed again
arby.start();
Button.RUN.waitForPressAndRelease();
System.exit( 0);




} // main()


////////////////////////////////////////////
// RemoteControListener interface methods
////////////////////////////////////////////

////////////////////////////////////////////
/**
* handler for the message 1 button
*/
public void message1Pressed() {
// display
TextLCD.print(MESSAGE1);
// current sensor state?
boolean sensorState = fSensorState[0];
// activate/passivate sensor
if(sensorState)
Sensor.S1.passivate();
else
Sensor.S1.activate();
// change sensor state
fSensorState[0] = !sensorState;
} // message1()

////////////////////////////////////////////
/**
* handler for the message 2 button
*/
public void message2Pressed() {
// display
TextLCD.print(MESSAGE2);
// current sensor state?
boolean sensorState = fSensorState[1];
// activate/passivate sensor
if(sensorState)
Sensor.S2.passivate();
else
Sensor.S2.activate();
// change sensor state
fSensorState[1] = !sensorState;
} // message2()

////////////////////////////////////////////
/**
* handler for the message 3 button
*/
public void message3Pressed() {
// display
TextLCD.print(MESSAGE3);
// current sensor state?
boolean sensorState = fSensorState[0];
// activate/passivate sensor
if(sensorState)
Sensor.S3.passivate();
else
Sensor.S3.activate();
// change sensor state
fSensorState[2] = !sensorState;
} // message3()

////////////////////////////////////////////
/**
* decrements motor power
* @param aMotor the motor
*/
public void motorDownPressed(Motor aMotor) {
// display
TextLCD.print(MOTOR_DOWN);
// get current power
int power = aMotor.getPower();
// get current state
if(power==0) {
// move backward
aMotor.setPower(++power);
aMotor.backward();
} else {
if(aMotor.isForward())
// decrease forward movement
aMotor.setPower(--power);
else {
// move backward
aMotor.setPower(Math.min(7,++power));
aMotor.backward();
} // else
} // else
// display power of motors
displayMotorsPower();
} // motorDownPressed()

////////////////////////////////////////////
/**
* increments motor power
* @param aMotor the motor
*/
public void motorUpPressed(Motor aMotor) {
// display
TextLCD.print(MOTOR_UP);
// get current power
int power = aMotor.getPower();
// get current state
if(power==0) {
// move forward
aMotor.setPower(++power);
aMotor.forward();
} else {
if(aMotor.isBackward())
// decrease backward movement
aMotor.setPower(--power);
else {
// move forward
aMotor.setPower(Math.min(7,++power));
aMotor.forward();
} // else
} // else
// display power of motors
displayMotorsPower();
} // motorUpPressed()

////////////////////////////////////////////
/**
* handler for the program 1 button
*/
public void program1Pressed() {
// display
TextLCD.print(PROGRAM1);
Motor.A.forward();
Motor.C.forward();



} // program1()

////////////////////////////////////////////
/**
* handler for the program 2 button
*/
public void program2Pressed() {
// display
TextLCD.print(PROGRAM2);
Motor.A.backward();
Motor.C.backward();
} // program2()

////////////////////////////////////////////
/**
* handler for the program 3 button
*/
public void program3Pressed() {
// display
TextLCD.print(PROGRAM3);
Motor.A.stop();
Motor.C.forward();
} // program3()

////////////////////////////////////////////
/**
* handler for the program 4 button
*/
public void program4Pressed() {
// display
TextLCD.print(PROGRAM4);
Motor.A.forward();
Motor.C.stop();
} // program4()

////////////////////////////////////////////
/**
* handler for the program 5 button
*/
public void program5Pressed() {
// display
TextLCD.print(PROGRAM5);
} // program5()

////////////////////////////////////////////
/**
* handler for the sound button
*/
public void soundPressed() {
// display
TextLCD.print(SOUND);
// sound
Sound.beep();
} // sound()

////////////////////////////////////////////
/**
* handler for the stop button
*/
public void stopPressed() {
// display
TextLCD.print(STOP);
// reset
reset();
} // stop()

////////////////////////////////////////////
// public methods
////////////////////////////////////////////

////////////////////////////////////////////
/**
* resets the engine to its initial state
*/
public void reset() {
// stop motors
Motor.A.stop();
Motor.A.setPower(0);
Motor.B.stop();
Motor.B.setPower(0);
Motor.C.stop();
Motor.C.setPower(0);
// passivate sensors
Sensor.S1.passivate();
Sensor.S2.passivate();
Sensor.S3.passivate();
for(int i=0;i
format: 0
*/
private void displayMotorsPower() {
int powers = Motor.A.getPower() * 100
+ Motor.B.getPower() * 10
+ Motor.C.getPower();
LCD.showNumber(powers);
} // displayMotorsPower()

} // class RemoteControlTest

Compiling, Linking and Loading the program on to the RCX

Step 1. Run setenv from C:\Lejos\Project to initialize your environment.
********************************************************
C:\Lejos\Project\RoverBot>..\setenv

C:\Lejos\Project\RoverBot>set LEJOS_HOME=C:\Lejos\lejos

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\classes.jar;.;.;C:\PR
OGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\J
MF21~1.1E\lib;C:\WINDOWS\java\classes;.;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\rcxport.jar;C:\Lejoslejos\lib\classes.jar;.;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21
~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;C:\WINDOWS\java\classes;.;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\BlackBox.jar;C:\Lejos
\lejos\lib\rcxport.jar;C:\Lejos\lejos\lib\classes.jar;.;.;C:\PROGRA~1\JMF21~1.1E
\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;C:WINDOWS\java\classes;.;;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\rcx.jar;C:\Lejos\lejo
s\lib\BlackBox.jar;C:\Lejos\lejos\lib\rcxport.jar;C:\Lejos\lejos\lib\classes.jar
;.;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:PROGRA~1\JMF21~1.1E\lib;C:\WINDOWS\java\classes;.;;;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\comm.jar;C:\Lejos\lej
os\lib\rcx.jar;C:\Lejos\lejos\lib\BlackBox.jar;C:\Lejos\lejos\lib\rcxport.jar;C:
\Lejos\lejos\lib\classes.jar;.;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~
1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;C:\WINDOWS\java\classes;.;;;
;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\jtools.jar;C:\Lejos\l
ejos\lib\comm.jar;C:\Lejos\lejos\lib\rcx.jar;C:\Lejos\lejos\lib\BlackBox.jar;C:Lejos\lejos\lib\rcxport.jar;C:\Lejos\lejos\lib\classes.jar;.;.;C:\PROGRA~1\JMF21
~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\li
b;C:\WINDOWS\java\classes;.;;;;;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\pcrcxcomm.jar;C:\Lejo
s\lejos\lib\jtools.jar;C:\Lejos\lejos\lib\comm.jar;C:\Lejos\lejos\lib\rcx.jar;C:
\Lejos\lejos\lib\BlackBox.jar;C:\Lejos\lejos\lib\rcxport.jar;C:\Lejos\lejos\libclasses.jar;.;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\libjmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;C:\WINDOWS\java\classes;.;;;;;;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\rcxrcxcomm.jar;C:\Lej
os\lejos\lib\pcrcxcomm.jar;C:\Lejos\lejos\lib\jtools.jar;C:\Lejos\lejos\lib\comm
.jar;C:\Lejos\lejos\lib\rcx.jar;C:\Lejos\lejos\lib\BlackBox.jar;C:\Lejos\lejos\l
ib\rcxport.jar;C:\Lejos\lejos\lib\classes.jar;.;.;C:\PROGRA~1\JMF21~1.1E\lib\sou
nd.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;C:\WINDOWSjava\classes;.;;;;;;;;

C:\Lejos\Project\RoverBot>set CLASSPATH=C:\Lejos\lejos\lib\vision.jar;C:\Lejos\l
ejos\lib\rcxrcxcomm.jar;C:\Lejos\lejos\lib\pcrcxcomm.jar;C:\Lejos\lejos\lib\jtoo
ls.jar;C:\Lejos\lejos\lib\comm.jar;C:\Lejos\lejos\lib\rcx.jar;C:\Lejos\lejos\lib
\BlackBox.jar;C:\Lejos\lejos\lib\rcxport.jar;C:\Lejos\lejos\lib\classes.jar;.;.;
C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGR
A~1\JMF21~1.1E\lib;C:\WINDOWS\java\classes;.;;;;;;;;;

C:\Lejos\Project\RoverBot>set RCXTTY=USB

C:\Lejos\Project\RoverBot>set PATH=C:\Lejos\lejos\bin;C:\WINDOWS\system32;C:\WIN
DOWS;C:\WINDOWS\System32\Wbem;C:\ClearCase\bin;C:\Program Files\Netegrity\SiteMi
nder Web Agent\bin;C:\Program Files\Netegrity\SiteMinder Web Agent\bin\thirdpart
y;c:\jdk1.3.1_02\bin;c:\jdk1.3.1_02\jre\bin;"C:\Program Files\Hummingbird\Connec
tivity\7.00\Accessories\";C:\Program Files\Microsoft Visual Studio\Common\ToolsWinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Fil
es\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio
\VC98\bin;C:\java\ant\apache-ant-1.5.3-1\bin;C:\Program Files\SSH Communications
Security\SSH Secure Shell;
...............................................................................

Step II Compile Source files
*****************************************************************************

C:\Lejos\Project\RoverBot>lejosjc.bat RemoteControlTest.java DriveForward.java
HitWallS1.java HitWallS2.java
...............................................................................

StepIII Link compiled files into a bin file

*****************************************************************************

C:\Lejos\Project\RoverBot>lejoslink.bat -o RoverBot.bin RemoteControlTest

...............................................................................

Step IV Download the Compiled files into the RCX


C:\Lejos\Project\RoverBot>lejosdl.bat RoverBot.bin




Read more...

Roverbott Side view

View Comments


Read more...

Roverbott Back view

View Comments


Read more...

Roverbott Front view

View Comments


Read more...

Roverbott Top view

View Comments


Read more...