15 package com.neuronrobotics.sdk.addons.irobot;
 
   17 import com.neuronrobotics.sdk.common.Log;
 
   18 import com.neuronrobotics.sdk.dyio.peripherals.DyIOPeripheralException;
 
   19 import com.neuronrobotics.sdk.dyio.peripherals.ServoChannel;
 
   31     private static final double l1 = 6.0;
 
   34     private static final double l2 = 3.93;
 
   37     private static final double l3 = 4.75;
 
   41     private static final double M_PI = Math.PI; 
 
   44     private double scale[]={1.55,1.50,-1.76};
 
   50     private double [] 
angles=
new double[3];
 
   53     private double [] 
pose=
new double[3];
 
   56     private double [] 
centers={134,136,128,48};
 
  108             } 
catch (InterruptedException e1) {
 
  122             } 
catch (InterruptedException e1) {
 
  134         if(links.length != 4){
 
  137         for(
int i=0;i<4;i++){
 
  182     public void setAngles(
double shoulder, 
double elbow, 
double wrist){
 
  183         setAngles(shoulder, elbow, wrist,(
float) 1.0);
 
  195     public void setAngles(
double shoulder, 
double elbow, 
double wrist,
float time) {
 
  207         double interference = 
centers[0]-45;
 
  208         double limit = 255 - (1.1*(
positions[0]-interference));
 
  210             Log.
info(
"In interference zone: "+interference+
" with limit: "+limit );
 
  212                 System.err.print(
"\nAttempting to set angle that interferes, fixing. Was: "+
positions[0]+
","+
positions[1]);
 
  228         for (
int i=0;i<3;i++){
 
  240                 Thread.sleep((
long) (time*1000));
 
  241             } 
catch (InterruptedException e1) {
 
  254         double [] a=
new double [3];
 
  255         for (
int i=0;i<3;i++){
 
  274         double [] p = 
new double [3];
 
  275         for ( 
int i = 0; i<3; i++){
 
  289         for(
int i=0;i <
pose.length;i++){
 
  348         Log.
info(
"Setting Pose X: "+x+
" Y: "+y+
" Orentation: "+orentation );
 
  353             System.err.println(
"Hypotenus too long"+x+
" "+y+
"\r\n");
 
  358         elbow *=(180.0/
M_PI);
 
  362         shoulder *=(180.0/
M_PI);
 
  364         double wrist = orentation-elbow-shoulder;
 
  392             Log.
info(
"Orentation changed");
 
  395         Log.
info(
"No signifigant change");
 
  435     private double sqrt(
double d) {
 
  446     private double atan2(
double y, 
double x) {
 
  447         return Math.atan2(y, x);
 
  456     private double acos(
double d) {
 
  466     private double sin(
double angle) {
 
  467         return Math.sin(angle);
 
  476     private double cos(
double angle) {
 
  477         return Math.cos(angle);
 
  487         return degrees*
M_PI/180.0;
 
void setCartesianPose(double x, double y, double orentation, float time)
 
double atan2(double y, double x)
 
void setCartesianY(double y)
 
void setCartesianPose(double[] p, float time)
 
void setScale(double scale[])
 
void setBlocking(boolean blocking)
 
CreateArm(ServoChannel[] links)
 
void setCartesianX(double x)
 
double[] getCartesianPose()
 
void setAngles(double shoulder, double elbow, double wrist, float time)
 
void setCartesianPose(double x, double y, double orentation)
 
void setWrist(double angle)
 
boolean updateCartesian(double x, double y, double orentation)
 
void setElbow(double angle)
 
void setCartesianOrentation(double o)
 
void setCartesianPose(double[] p)
 
void setAngles(double shoulder, double elbow, double wrist)
 
String getCartesianPoseString()
 
void setCenters(double[] centers)
 
double ToRadians(double degrees)
 
void setShouler(double angle)
 
void check(ServoChannel[] links)
 
static void info(String message)
 
boolean SetPosition(int pos)