📄 roboproto.java
字号:
PL[i].x = base105; break; } } AllAboutMoving.copyPointList(PL, pl, this); angleNew[0] = 0.0; angleNew[1] = -Math.PI/2; angleNew[2] = angleNew[1]; angleNew[3] = 0.0; angleNew[4] = 0.0; angleNew[5] = 0.0; AllAboutMoving.PosRobo(pl, angleNew, angles, this);// angles get // their new values angleOld[1] = angleOld[1] + (Math.PI/2); angleOld[2] = angleOld[2] + (Math.PI/2); // Creation of variables of primitive data type needed as // call-by-reference variables: makeRealRobotMove = false; RefInt refError = new RefInt(errorcode); RefDouble refAngleY = new RefDouble(angleY); RefDouble refAngleX = new RefDouble(angleX); RefDouble refD = new RefDouble(d); RefInt refIndx = new RefInt(indx); AllAboutMoving.MoveRobo (showTheMove, pl, line, angleOld, angles, 8,refError, refAngleY, refAngleX, refD,0, refIndx, location, this); errorcode = refError.in; angleY = refAngleY.in; angleX = refAngleX.in; indx = refIndx.in; d = refD.in; makeRealRobotMove = true;; showTheMove = true; repaint(); if (robotIsReal) realRobotInterface(4, handValue); } private void executeExample() { double[] exAngles = new double[6]; double[] newLengths = new double[3]; newLengths[0] = 13.5; // default values newLengths[1] = 10; newLengths[2] = 10; linkLengthInput(newLengths); for (int i = 0; i < 6; i++) exAngles[i] = 0; manualInput(exAngles); speedInput(15); exAngles[0] = 90 * Math.PI / 180; exAngles[1] = 0; exAngles[2] = -90 * Math.PI / 180; exAngles[3] = -90 * Math.PI / 180; exAngles[4] = 0; exAngles[5] = 0; manualInput(exAngles); zoomInput(2.0f); for (int i = 0; i < 6; i++) exAngles[i] = - 30 * Math.PI / 180; exAngles[1] = 0; manualInput(exAngles); zoomInput(1.5f); speedInput(80); exAngles[0] = -160 * Math.PI / 180; exAngles[1] = -90 * Math.PI / 180; exAngles[2] = -130 * Math.PI / 180; exAngles[3] = -90 * Math.PI / 180; exAngles[4] = -40 * Math.PI / 180; exAngles[5] = -40 * Math.PI / 180; manualInput(exAngles); speedInput(25); for (int i = 0; i < 6; i++) exAngles[i] = 0; manualInput(exAngles); } public void realRobotInterface(int armNo, double turnAngle) { int realArm = armNo; int commandNumber = 122; switch (realArm) { case 0 : commandNumber = 122 + (int)(adjustFactors[0] * (turnAngle / Math.PI * 180)); break; case 1 : commandNumber = 122 + (int)(adjustFactors[1] * ( (turnAngle / Math.PI * 180) + 90)); break; case 2 : commandNumber = 122 + (int)(adjustFactors[2] * (turnAngle / Math.PI * 180)); break; case 3 : commandNumber = 122 + (int)(adjustFactors[3] * (turnAngle / Math.PI * 180)); break; case 4 : commandNumber = 240 + (int)(adjustFactors[4] * (turnAngle / Math.PI * 180)); break; } if (commandNumber > 254) commandNumber = 254; else if (commandNumber < 1) commandNumber = 1; RealRobot.RealRobotControl.move(realArm, commandNumber); } // the following two events get interpreted by the ThreeD-instance public boolean mouseDown(Event e, int x, int y) { if (e.target == roboCanvas) return animation.mouseDown(e, x, y); else return true; } public boolean mouseDrag(Event e, int x, int y) { if (e.target == roboCanvas) return animation.mouseDrag(e, x, y); else return true; } public boolean action(Event e, Object o) { if (e.target == fileButton) { try { FileHandle.readFile(this); } catch (IOException err) { writeError(err.getMessage()); } finally { repaint(); return true; } } if (e.target == teachButton) { if ((teachButton.getLabel()).equals(teachStr)) { try { saveFile = FileHandle.openFile(this); teachButton.setLabel(enterStr); stopButton.enable(); } catch (IOException err) { writeError("Can't open: " + err.getMessage()); } finally { return true; } } else { // can only be called, if this button // is enabled which means 'saveFile' has been // instanciated FileHandle.writeFile(saveFile, this); return true; } } if (e.target == stopButton) { FileHandle.closeFile(saveFile); teachButton.setLabel(teachStr); stopButton.disable(); return true; } if (e.target == autoExecButton) { for (int kl = 0; kl < 3; kl++) input[kl] = target[kl]; autoChange(input); actualizeAutoPanel(); if (robotIsReal) { for (int kl = 0; kl < 3; kl++) realRobotInterface(kl, angles[kl].act); realRobotInterface(3, angles[4].act); } return true; } for (int loop = 0; loop < 4; loop++) { if (e.target == storeButtons[loop]) { saveActualPosition(loop); return true; } if (e.target == loadButtons[loop]) { loadPositionNo(loop); return true; } } if (e.target == helpButton) { helpWin = new Win(this, 1);//'1' means 'help' return true; } if (e.target == aboutButton) { aboutWin = new Win(this, 2);//'2' means 'about' return true; } if (e.target == exampleButton) { executeExample(); return true; } return this.handleEvent(e); } public boolean handleEvent(Event e) { for (int i = 0; i < 6; i++) if (e.target == manualScrolls[i]) switch(e.id) { case Event.SCROLL_LINE_UP: case Event.SCROLL_LINE_DOWN: case Event.SCROLL_PAGE_UP: case Event.SCROLL_PAGE_DOWN: case Event.SCROLL_ABSOLUTE: if (robotIsReal) { double newV = ((double) manualScrolls[i].getValue()) / manualScrollScale; if ((newV >= realRobRestr[i][0]) && (newV <= realRobRestr[i][1])) { manualChange(i,newV); if (i == 4) realRobotInterface(3, angles[i].act); else realRobotInterface(i, angles[i].act); } else manualScrolls[i].setValue((int) (manualScrollScale * angles[i].act)); } else manualChange(i,((double) manualScrolls[i].getValue()) / manualScrollScale); return true; } if (e.target == zoomScroll) { switch(e.id) { case Event.SCROLL_LINE_UP: case Event.SCROLL_LINE_DOWN: case Event.SCROLL_PAGE_UP: case Event.SCROLL_PAGE_DOWN: case Event.SCROLL_ABSOLUTE: zoomValue = (float)(((Integer)e.arg). intValue()) / zoomScrollScale; animation.setScale(zoomValue); repaint(); break; } return true; } if (e.target == handScroll) { switch(e.id) { case Event.SCROLL_LINE_UP: case Event.SCROLL_LINE_DOWN: case Event.SCROLL_PAGE_UP: case Event.SCROLL_PAGE_DOWN: case Event.SCROLL_ABSOLUTE: double helpHand = ((double) handScroll.getValue()) / handScrollScale; handChange(helpHand); break; } return true; } if (e.target == speedScroll) { switch(e.id) { case Event.SCROLL_LINE_UP: case Event.SCROLL_LINE_DOWN: case Event.SCROLL_PAGE_UP: case Event.SCROLL_PAGE_DOWN: case Event.SCROLL_ABSOLUTE: xControl = speedScroll.getValue(); newSpeed(); break; } return true; } if (e.target == virtualRobot) { if (robotIsReal) tidyUpRealRobot(); return true; } if (e.target == realRobot) { if (!robotIsReal) { installRealRobot(); realRobotInterface(4, handValue); } return true; } if (e.target == lineButton) { if ((lineButton.getSelectedItem()).equals(onLine)) { fAutoLine = 0;// I'm copying the original c-program where } // booleans don't exist(easier for inv..Cine.) else { fAutoLine = 1; } return true; } if (e.target == weightsExec) { for (int i = 0; i < 6; i++) { int help; try { help = Integer.parseInt(weightsText[i].getText()); } catch (NumberFormatException err) { weightsText[i].setText(String.valueOf(angleWeights[i])); continue; // the textfield gets the right value back } if (help > 0) angleWeights[i] = help; else weightsText[i].setText(String.valueOf(angleWeights[i])); } return true; } if (e.target == quit) { RealRobot.RealRobotControl.closeFile(); System.exit(0);// this is the end, my friend } for (int i = 0; i < 3; i++) if (e.target == linkScrolls[i]) switch(e.id) { case Event.SCROLL_LINE_UP: case Event.SCROLL_LINE_DOWN: case Event.SCROLL_PAGE_UP: case Event.SCROLL_PAGE_DOWN: case Event.SCROLL_ABSOLUTE: double actValue = (double)(((Integer)e.arg).intValue()) / linkScrollScale; updateOldLinkLabel(i, actValue); // only the label is changed return true; } if (e.target == linkExec) { double[] actValues = new double[3]; for (int kl = 0; kl < 3; kl++) actValues[kl] = (double)linkScrolls[kl].getValue() / linkScrollScale; linkLengthChange(actValues); return true; } for (int i = 0; i < 3; i++) if (e.target == autoScrolls[i]) switch(e.id) { case Event.SCROLL_LINE_UP: case Event.SCROLL_LINE_DOWN: case Event.SCROLL_PAGE_UP: case Event.SCROLL_PAGE_DOWN: case Event.SCROLL_ABSOLUTE: for (int kl = 0; kl < 3; kl++) input[kl] = target[kl]; input[i] = target[i] = (double)((Integer)e.arg).intValue() / autoScrollScale; updateScrolledAutoLabel(i); return true; } // default: return super.handleEvent(e); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -