Vessel Space Exploration Vehicle

Here is the front. so I will need to add mesh groups for the 2 mfd and hud. But maybe here for locations.

sevhud.jpg

HERE IS THE vc

SEVHUD2.jpg


on the attachment. I made the attachment here:


[PARENT_ATTACH_1]
NAME="rms"
POS=(-1.391703,-0.858832,1.829463)
DIR=(0,1,0)
ROT=(1,0,0)
LOOSE=0
RANGE=10.
ID="GS"

I zeroed out all animation states.

here is the tip:
; wrist roll
[ANIM_COMP_22]
SEQ=11
RANGE=(0,1)
TIP_1=(-1.401399,-0.858832,1.82046)
TIP_2=(-1.399668,-0.858832,1.84851)
TIP_3=(-1.375081,-0.858832,1.816304)
TYPE=ROTATE
;ROT_AXIS=(0.773632282470001,-0.633634825053245,0)
ROT_AXIS=(1,0,0)
ROT_PNT=(-1.3,-0.927,1.934)
ANGLE=894.
PARENT=20



it graps here
GRAP_SEQ=11
GRAP_ATTACH=1
attached is what it shows as the attachment point.
 

Attachments

  • sevattachment.jpg
    sevattachment.jpg
    20.2 KB · Views: 11
Last edited:
Ok I have a VC. Donamy fixed the shaking arm but still it needs work. I placed a cube in the mesh to see where the attachment point should be. but what I have is not what it is. Also I need to adjust the vectors so that the rod will be either in front or back of the ummu.

sevattachmentpoint1.jpg

Code:
[PARENT_ATTACH_1]
NAME="rms"
POS=(1.3979,-0.780,1.8247)
DIR=(0,0,-1)
ROT=(1,0,0)
LOOSE=0
RANGE=10.
ID="GS"

Code:
;

[ROBOTIC_ARM]

JOINT_0_NAME="shoulder yaw"

JOINT_0_SEQ=7

JOINT_0_RANGE=(-360,360)

JOINT_1_NAME="shoulder pitch"

JOINT_1_SEQ=8

JOINT_1_RANGE=(-360,180)

JOINT_2_NAME="elbow pitch"

JOINT_2_SEQ=9

JOINT_2_RANGE=(-180,180)

JOINT_3_NAME="wrist pitch"

JOINT_3_SEQ=10

JOINT_3_RANGE=(-180,180)

JOINT_4_NAME="wrist roll"

JOINT_4_SEQ=11

JOINT_4_RANGE=(-180,180)

GRAP_SEQ=11
GRAP_ATTACH=1





; shoulder yaw

[ANIM_SEQ_7]

INIT_POS=0.5

DURATION=90.



; shoulder pitch

[ANIM_SEQ_8]

INIT_POS=0.5

DURATION=90.



; elbow pitch

[ANIM_SEQ_9]

INIT_POS=0.5

DURATION=40.



; wrist pitch

[ANIM_SEQ_10]

INIT_POS=0

DURATION=60.



; wrist roll

[ANIM_SEQ_11]

INIT_POS=0

DURATION=60.





; shoulder yaw

[ANIM_COMP_18]

SEQ=7

RANGE=(0,1)

GROUPS=6

TYPE=ROTATE

ROT_AXIS=(0,0,1)

ROT_PNT=(-1.221,-1.075044,1.959797)

ANGLE=720.



; shoulder pitch

[ANIM_COMP_19]

SEQ=8

RANGE=(0,1)

GROUPS=4

TYPE=ROTATE

ROT_AXIS=(-0.773632282470001,-0.633634825053245,0)

ROT_PNT=(-1.22,-1.075508,2.024)

ANGLE=720.

PARENT=18



; elbow pitch

[ANIM_COMP_20]

SEQ=9

RANGE=(0,1)

GROUPS=3

TYPE=ROTATE

ROT_AXIS=(-0.773632282470001,-0.633634825053245,0)

ROT_PNT=(-1.8112,-0.403,1.4858)

ANGLE=-720.

PARENT=19



; wrist pitch

[ANIM_COMP_21]

SEQ=10

RANGE=(0,1)

GROUPS=5

TYPE=ROTATE

ROT_AXIS=(-0.773632282470001,-0.633634825053245,0)

ROT_PNT=(-1.3,-0.927,1.934)

ANGLE=720.

PARENT=20




; wrist roll

[ANIM_COMP_22]

SEQ=11

RANGE=(0,1)

TIP_1=(-1.391703,-0.858832,1.829463)

TIP_2=(-0.391703,-0.858832,1.829463)

TIP_3=(-1.391703,-0.858832,-1.829463)

TYPE=ROTATE

ROT_AXIS=(0.773632282470001,-0.633634825053245,0)

ROT_PNT=(-1.3,-0.927,1.934)

ANGLE=894.

PARENT=21
 
How to you determine the tip point?

The transformation will be applied to a triangle. You must defined
the 3 points coordinates by using :
• TIP_1=(-2.26,1.71,-6.5) : first point coordinates
• TIP_2=(-2.26,1.71,-7.5) : second point coordinates
• TIP_3=(-2.26,2.71,-6.5) : third point coordinates
These coordinates will be used to move dynamically the attachment position associated with
the grapple in accordance with the robotic arm motion.

I can figure on the mesh where the tip should be by measuring it.

I get it as (1.3863,-0.785,1.8221)
 
I looks to me like the tip_1 is the attacnment point -2.26,1.71,-6.5 while tip_2 and tip_3 are the direction 0,0,-1 and rotation 0,1,0 from your example, but I could be completely wrong.
 
I think Donamy is right. But I think the issue is the starting point. Because the arm is at angles to the ship. Straight z is correct. I put a Ummu to get the right angle. IT looks likes the ummu needs to be at 27.9x, -152 y and -42 z degrees to match the arm and be 90 degrees.

This is what I have now. But can get it to move in the red direction.
sevarm5.jpg



Code:
TIP_1=(-1.3863,-0.785,1.2)

TIP_2=(-1.3863,-0.785,2.2)

TIP_3=(-2.4,0.1,1.2)

Hope someone can help
 
I would rotate the wrist in the mesh til they point straight to +Z direction, and figure the point and direction from there. You can then move the wrist in orbiter to the correct stow position, then save the state.
 
Ok. so make the arms level and parallel to the mesh. Then set the tip to fit the location. Or just the wrist part.
 
Just the wrist.
 
Ok try these:

This has a VC also the right arm is a separate vessel attached so you can use both arms. Just switch to the arm.

sevarm6.jpg


Next will be the rod on the bottom. The attachment point needs to move so the Solar array will fold up.
 
Last edited:
SEVARRAY5.jpg

SEVARRAY5A.jpg

SEVARRAY5B.jpg


I had to modify the location of the array.

She has a VC, all rcs, left arm is part of the vessel, the right arm and rod are separate vessel.


Give her a try. It is sc3. Once It is good then I will try to make a dll and combine all and add eva/ummu. Let me know suggestions.
 
Last edited:
The gold arms I think are for attaching this vessel to a asteroid. So they might have attachment points.

If someone that know C++ wants to help, I would welcome it.
 
Working on a dll version. Right now it has multiple camera and eva.
mmseveva.jpg


but I am working on the arms and rod. Got the rod coded by looking at Atlantis RMS code. But what I can't find in the code is how the RMS moves. I know there is a window box but no idea how to code it.

So any help there would be appreciated.
 
I have a question about the RMS stow code.
Code:
	// ***** Stow RMS arm *****

	if (center_arm) {
		double t0 = oapiGetSimTime();
		double dt = t0 - center_arm_t;       // time step
		double da = ARM_OPERATING_SPEED*dt;  // total rotation angle

		// work from the wrist down to the shoulder
		if (da && (arm_wr != 0.5)) {    // zero wrist roll
			if (da >= fabs(arm_wr-0.5)) // finished
				arm_wr = 0.5, da -= fabs(arm_wr-0.5);
			else
				arm_wr -= (arm_wr > 0.5 ? da:-da), da = 0;
			SetAnimationArm (anim_arm_wr, arm_wr);
		}
		if (da && (arm_wy != 0.5)) {    // zero wrist yaw
			if (da >= fabs(arm_wy-0.5)) // finished
				arm_wy = 0.5, da -= fabs(arm_wy-0.5);
			else
				arm_wy -= (arm_wy > 0.5 ? da:-da), da = 0;
			SetAnimationArm (anim_arm_wy, arm_wy);
		}
		if (da && (arm_wp != 0.5)) {    // zero wrist pitch
			if (da >= fabs(arm_wp-0.5)) // finished
				arm_wp = 0.5, da -= fabs(arm_wp-0.5);
			else
				arm_wp -= (arm_wp > 0.5 ? da:-da), da = 0;
			SetAnimationArm (anim_arm_wp, arm_wp);
		}
		if (da && arm_ep) {             // zero elbow pitch
			if (da >= arm_ep)           // finished
				arm_ep = 0.0, da -= arm_ep;
			else
				arm_ep -= da, da = 0;
			SetAnimationArm (anim_arm_ep, arm_ep);
		}
		if (da && (arm_sy != 0.5)) {    // zero shoulder yaw
			if (da >= fabs(arm_sy-0.5)) // finished
				arm_sy = 0.5, da -= fabs(arm_sy-0.5);
			else
				arm_sy -= (arm_sy > 0.5 ? da:-da), da = 0;
			SetAnimationArm (anim_arm_sy, arm_sy);
		}
		if (da && arm_sp) {             // zero shoulder pitch
			if (da >= arm_sp)           // finished
				arm_sp = 0.0, da -= arm_sp;
			else
				arm_sp -= da, da = 0;
			SetAnimationArm (anim_arm_sp, arm_sp);
		}
		center_arm_t = t0;
		if (da) {
			center_arm = false; // finished stowing
			HWND hDlg = oapiFindDialog (g_Param.hDLL, IDD_RMS);
			if (hDlg) EnableWindow (GetDlgItem (hDlg, IDC_GRAPPLE), TRUE);
		}
	}
what is this to be:center_arm_t
here is the only reference I could find. outside of the stow code.
Code:
if (sts->center_arm = !sts->center_arm) {
				sts->center_arm_t = oapiGetSimTime();

but it makes this 0 because dt is oapiGetSimTime()-oapiGetSimTime(). and that make this da 0 since ARM_OPERATING_SPEED*0

double t0 = oapiGetSimTime();
double dt = t0 - center_arm_t; // time step
double da = ARM_OPERATING_SPEED*dt;


Hope someone can help here
 
More images:
MMSEVDOCKED1.jpg

MMSEVDOCKED2.jpg

MMSEVDOCKED3.jpg


I got the 2 white arms and rod underneath as robotic arms. So you can move them in any direction and detach/attach. Multiple camera views. Full Ummu.

I ran into an odd issue on it. The airlocks are tied to the key D but when I undock it opens the airlock also

Still need to be the stow sequence down and the gold arms. I got them in SC3 but not in c++. They use 2 parents.

Code:
[ANIM_COMP_5]
;arm2a

SEQ=3

GROUPS=52

RANGE=(0.3,0.6)

ROT_PNT=(0,0.765,1.702837)

ROT_AXIS=(1,0,0)

ANGLE=110.




[ANIM_COMP_6]
;arm2b

SEQ=3

GROUPS=53
RANGE=(0.0,0.3)

ROT_PNT=(0,1.216989,0.7739058)

ROT_AXIS=(-1,0,0)

ANGLE=110.

PARENT=5



[ANIM_COMP_7]
;arm2cand d

SEQ=3

GROUPS=54,99

RANGE=(0.6,1)

ROT_PNT=(0,0.8079686,1.713547)

ROT_AXIS=(1,0,0)

ANGLE=20.

PARENT=6
 
Ok the Gold arms are robotic arms.
CENTERGOLDARM.jpg


There is an animation error. will fix on the update. Also I was told on the UmmU SEV mesh the textures need to be SEV rather than LER.

Working on the attachment info for the 2 side arms.
 
I hope Some one can help me with the attachment/tip point for the side arms
mmsevattach1.jpg

at zero state
mmsevattach2.jpg

This is how the Ummu should start off at.

Code:
 rms4= CreateAttachment (false,_V(-1.,-1.0559,1.9519),_V(0,1,0),_V(-.392,.738,-.549),"ARMR",false);

Code:
arm4_tip[0] = _V(-1.4762,-1.0559,1.9519);
arm4_tip[1] = _V(-1.4762,-1.0559,2.9519);//0,0,1
arm4_tip[2] = _V(-0.4762,-2.0559,1.9519);//-1,1,0
 
ok. This is bugging me. I have run the debugger to see what is happening but no clue. The proc for ROD1 and ROD2 get changed to 9 and 6. When it saves it saves as 0.000 and it the debugger it reads that way till it gets to the set animation and it is set to 9,6

MMSEVDEBUG.jpg
[/IMG]
from scenario

Code:
ROD1 0.0000
  ROD2 0.0000
  ROD3 0.0000



Code:
		      if (!_strnicmp (line, "ROD1", 4)) {
   sscanf (line+4, "%lf",  &ROD1_proc);
			}
		  
			  if (!_strnicmp (line, "ROD2", 4)) {
   sscanf (line+4, "%lf",  &ROD2_proc);
			}
			    if (!_strnicmp (line, "ROD3", 4)) {
   sscanf (line+4, "%lf",  &ROD3_proc);
			}
				 if (!_strnicmp (line, "ROD4", 4)) {
   sscanf (line+4, "%lf",  &ROD4_proc);
			}....

Code:
		// ORBITER, unrecognised option - pass to Orbiter's generic parser
		ParseScenarioLineEx (line, status);
	}
	//SetAnimation (anim_arm_sy, ROD1_proc);
	//SetAnimation (anim_arm_sp, ROD2_proc);
	SetAnimation (anim_arm_ep, ROD3_proc);
	SetAnimation (anim_arm_wr, ROD4_proc);
	SetAnimation (anim_arm_sy1, ROD5_proc);
 
ok. This is bugging me. I have run the debugger to see what is happening but no clue. The proc for ROD1 and ROD2 get changed to 9 and 6. When it saves it saves as 0.000 and it the debugger it reads that way till it gets to the set animation and it is set to 9,6
As far as I know SetAnimation, the state values should be between 0.0 and 1.0! See:
Code:
    /**
     * \brief Set the state of an animation.
     * \param anim animation identifier
     * \param state animation state [COLOR="Red"](0 ... 1)[/COLOR]
     * \return \e false indicates failure (animation identifier out of range)
     * \note Each animation is defined by its state, with extreme points state=0 and
     *   state=1. When setting a state between 0 and 1, Orbiter carries out the
     *   appropriate transformations to advance the animation to that state. It is
     *   the responsibility of the code developer to call SetAnimation in such a way
     *   as to provide a smooth movement of the animated parts.
     */
    bool SetAnimation (UINT anim, double state) const;
so any value above 1.0 might not be correct anyway. Ever looked at the return values of your SetAnimation calls?
 
Last edited:
Back
Top