Thanks. So what I have is recall the setting and that becomes the TGT. this work
Then press execute and then the arm should move to that position.
I am using the stow code where each joint moves til it reaches 0 difference and then goes to the next joint.
On the stow though it goes from the wrist to the shoulder.
For the recall though should it be the opposite.?
I tried running it in 2010 and press the execute button and nothing happen
Also looking at the press kit and the video. It looked like the RMS was Not used.
Code:
if ((rmsexecute == 1) && (recallstored == 2) && (Armtilt_proc == 1)) {
//sprintf(oapiDebugString(), "arm_wr_stored %2.2f arm_wr %2.2f ", arm_wr_stored1, arm_wr);
double t0 = oapiGetSimTime();
double dt = t0 - center_arm_t; // time step
double da = ARM_OPERATING_SPEED*dt; // total rotation angle
//sprintf(oapiDebugString(), "arm_wr_stored %2.2f arm_wr %2.2f ", arm_wr_stored1, arm_wr);
// work from the wrist down to the shoulder
if (da && (arm_wr != arm6_Ar)) { // zero wrist roll
if (da >= fabs(arm_wr - arm6_Ar)) // finished
arm_wr = arm6_Ar, da -= fabs(arm_wr - arm6_Ar);
else
arm_wr -= (arm_wr > arm6_Ar ? da : -da), da = 0;
// sprintf(oapiDebugString(), "arm_wr_stored %2.2f arm_wr %2.2f arm_speed %2.2f ", arm_wr_stored2, arm_wr, ARM_OPERATING_SPEED);
SetAnimationArm(anim_arm_wr, arm_wr);
}
if (da && (arm_wy != arm6_Ay)) { // zero wrist yaw
if (da >= fabs(arm_wy - arm6_Ay)) // finished
arm_wy = arm6_Ay, da -= fabs(arm_wy - arm6_Ay);
else
arm_wy -= (arm_wy > arm6_Ay ? da : -da), da = 0;
SetAnimationArm(anim_arm_wy, arm_wy);
}
if (da && (arm_wp != arm6_Ap)) { // wrist pitch not stored value
if (da >= fabs(arm_wp - arm6_Ap)) // finished
arm_wp = arm6_Ap, da -= fabs(arm_wp - arm6_Ap);
else
arm_wp -= (arm_wp > arm6_Ap ? da : -da), da = 0;
SetAnimationArm(anim_arm_wp, arm_wp);
}
if (da && (arm_ep != arm6_ep)) { // zero wrist pitch
if (da >= fabs(arm_ep - arm6_ep)) // finished
arm_ep = arm6_ep, da -= fabs(arm_ep - arm6_ep);
else
arm_ep -= (arm_ep > arm6_ep ? da : -da), da = 0;
SetAnimationArm(anim_arm_ep, arm_ep);
}
if (da && (arm_sy != arm6_By)) { // zero shoulder yaw
if (da >= fabs(arm_sy - arm6_By)) // finished
arm_sy = arm6_By, da -= fabs(arm_sy - arm6_By);
else
arm_sy -= (arm_sy > arm6_By ? da : -da), da = 0;
SetAnimationArm(anim_arm_sy, arm_sy);
}
if (da && (arm_sp != arm6_Bp)) { // zero shoulder yaw
if (da >= fabs(arm_sp - arm6_Bp)) // finished
arm_sy = arm6_Bp, da -= fabs(arm_sp - arm6_Bp);
else
arm_sy -= (arm_sp > arm6_Bp ? da : -da), da = 0;
SetAnimationArm(anim_arm_sp, arm_sp);
}
center_arm_t = t0;
if (da) {
rmsexecute = 0;; // finished stowing
HWND hDlg = oapiFindDialog(g_Param.hDLL, IDD_RMS);
if (hDlg) EnableWindow(GetDlgItem(hDlg, IDC_GRAPPLE), FALSE);
}
}
---------- Post added at 06:43 PM ---------- Previous post was at 05:07 AM ----------
So I have this now. Recall 4 stored seq and press execute and the rms arms moves.
So in SF there are 3 more rms commands. This is where I am confused
Arm sequence
Select Joint
Sf manual:
Moving the arm using manual inputs into Sequence “TGT”
The “TGT” sequence always starts a scenario with default values stored in it until you
move a previously stored sequence in “A” through “D” into it, however you can change
the values stored in sequence “TGT” by using the CTRL+6 key. When CTRL+6 is used,
a dialog box is called requesting a joint number (1 through 7) and a value for that joint in
degrees (-270 to +270).
Enter the joint number first, a space, and then the value to set the joint to in degrees
(decimals are allowed, so “-189.9” is acceptable). You can continue to use CTRL+6 to
enter all the relevant joint angles, then when you’ve finished the input, select sequence
“F” and the order for joint movements and the arm will reposition to those values you
have input.
So my pressing a joint assign it opens and window and you then enter the joint number and value.
So you are setting the new TGT value for the arm joint. But then do you execute to move the arm there?
And Arm sequence:
The storage location targets are now in the “TGT” position, and the “ERR” or error line
shows the difference between the targets and the current, actual position. Now to move
the arm.
Select key sequence “SHIFT+F” and the following window will appear:
This window will allow us to tell the arm in what order to move the various joints. As a
reminder, the main display tells us each joints number.
For this example, we’ll move the arm starting with the shoulder pitch, then elbow pitch
then finally wrist pitch (the only joints with errors indicated) by entering “234” into the
box. You should NOT enter more than 6 distinct numbers as the remainder will be
ignored.
Once you hit enter, the system will process the order you have provided, and the arm
sequence line will update with the sequence order. To start the arm moving either an
DLH-00101
35 Fleet Version 4.8
item 18 on GPCMFD OPS 8 page needs to be entered, or the motion execute button on
the SRMS display should be depressed:
So then when you press the arm seq button you select which arm joint to move when you press Execute?