rosaria/Legacy/Aria/javaExamples/simple.java
2021-12-16 14:07:59 +00:00

72 lines
2.2 KiB
Java

/* A simple example of connecting to and driving the robot with direct
* motion commands.
*/
import com.mobilerobots.Aria.*;
public class simple {
static {
try {
System.loadLibrary("AriaJava");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library libAriaJava failed to load. Make sure that its directory is in your library path; See javaExamples/README.txt and the chapter on Dynamic Linking Problems in the SWIG Java documentation (http://www.swig.org) for help.\n" + e);
System.exit(1);
}
}
public static void main(String argv[]) {
System.out.println("Starting Java Test");
Aria.init();
ArRobot robot = new ArRobot();
ArSimpleConnector conn = new ArSimpleConnector(argv);
if(!Aria.parseArgs())
{
Aria.logOptions();
Aria.exit(1);
}
if (!conn.connectRobot(robot))
{
System.err.println("Could not connect to robot, exiting.\n");
System.exit(1);
}
robot.runAsync(true);
robot.lock();
System.out.println("Sending command to move forward 1 meter...");
robot.enableMotors();
robot.move(1000);
robot.unlock();
System.out.println("Sleeping for 5 seconds...");
ArUtil.sleep(5000);
robot.lock();
System.out.println("Sending command to rotate 90 degrees...");
robot.setHeading(90);
robot.unlock();
System.out.println("Sleeping for 5 seconds...");
ArUtil.sleep(5000);
robot.lock();
System.out.println("Robot coords: robot.getX()=" + robot.getX() + ", robot.getY()=" + robot.getY() + ", robot.getTh()=" + robot.getTh());
ArPose p = robot.getPose();
System.out.println(" pose.getX()=" + p.getX() + ", pose.getY()=" + p.getY() + ", pose.getTh()=" + p.getTh());
double[] xout = {0};
double[] yout = {0};
double[] thout = {0};
p.getPose(xout, yout, thout);
System.out.println(" pose.getPose(): x=" + xout[0] + ", y=" + yout[0] + ", th=" + thout[0]);
robot.unlock();
robot.lock();
System.out.println("exiting.");
robot.stopRunning(true);
robot.unlock();
robot.lock();
robot.disconnect();
robot.unlock();
Aria.exit(0);
}
}