SSU Development Thread (2.0 to 3.0)

Status
Not open for further replies.
I also doubt it is causing the problems itself.

We have some lot of ugliness in the shuttle orbiter code, I would not be surprised if the problems actually come from calling a SSU function in a place, in which was never designed to be used.

---------- Post added at 11:33 PM ---------- Previous post was at 11:22 PM ----------

Is ticket #49 still an issue?
Not really. We'll get the remaining masses once we add those systems.
 
Not really. We'll get the remaining masses once we add those systems.

Ok, then I will close the ticket, we can open a new one, should we get divergences from new subsystems.

---------- Post added at 11:41 PM ---------- Previous post was at 11:38 PM ----------

Ticket #59 "Incorrect switch configuration in panel R2" requires changes to the VC mesh as well - how is the status there?
 
Ticket #59 "Incorrect switch configuration in panel R2" requires changes to the VC mesh as well - how is the status there?

I'd leave that for when the panels are separated. We could then have both versions.
 
Next ticket review: #76 "Orbiter/ET sep motions"

Just launched and focussed camera on the ET, this looks OK.

I will now look for the ET separation trajectory reference. I suspect that everything is correct as we do it and the effect of a rotating orbiter in the ET camera view caused by camera perspective.
 
Next ticket review: #76 "Orbiter/ET sep motions"

Just launched and focussed camera on the ET, this looks OK.

I will now look for the ET separation trajectory reference. I suspect that everything is correct as we do it and the effect of a rotating orbiter in the ET camera view caused by camera perspective.
I also think it's OK. Any problems that might exist there are related to the lack of a complete/correct RCS implementation, and I have that on my list for the next version or so.
 
I also think it's OK. Any problems that might exist there are related to the lack of a complete/correct RCS implementation, and I have that on my list for the next version or so.

As far as I can see, we already use proper RCS thruster coordinates. The only thing we need to review maybe is the use of the thrusters by the DAP

---------- Post added at 12:18 AM ---------- Previous post was at 12:13 AM ----------

This short report might be interesting for getting better autopilot parameters...

http://hdl.handle.net/2060/20110003654
 
As far as I can see, we already use proper RCS thruster coordinates. The only thing we need to review maybe is the use of the thrusters by the DAP
Are we? Are you sure that we use the correct coordinates for the thrusters and not the exhausts? There's a difference you know. From what I can tell, it's the latter. We're still using the idealised thruster layout from the default Atlantis.

This is why this ticket is still open: https://sourceforge.net/p/shuttleultra/tickets/18/
 
Are we? Are you sure that we use the correct coordinates for the thrusters and not the exhausts? There's a difference you know. From what I can tell, it's the latter. We're still using the idealised thruster layout from the default Atlantis.

This is why this ticket is still open: https://sourceforge.net/p/shuttleultra/tickets/18/

Code:
void Atlantis::CreateFRCS(const VECTOR3 &ref_pos)
{
	//=================================================================================================
	// Downwards firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1D] == NULL) {
		thManFRCS1[RCS_F1D] = CreateThruster (ref_pos + RCS_F1D_OFS, RCS_F1D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1D]);
	}
	if(thManFRCS2[RCS_F2D] == NULL) {
		thManFRCS2[RCS_F2D] = CreateThruster (ref_pos + RCS_F2D_OFS, RCS_F2D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F2D]);
	}
	if(thManFRCS3[RCS_F3D] == NULL)	{
		thManFRCS3[RCS_F3D] = CreateThruster (ref_pos + RCS_F3D_OFS, RCS_F3D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS3[RCS_F3D]);
	}
	if(thManFRCS4[RCS_F4D] == NULL)	{
		thManFRCS4[RCS_F4D] = CreateThruster (ref_pos + RCS_F4D_OFS, RCS_F4D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS4[RCS_F4D]);
	}
	//=================================================================================================
	// Upwards firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1U] == NULL) {
		thManFRCS1[RCS_F1U] = CreateThruster (ref_pos + RCS_F1U_OFS, RCS_F1U_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1U]);
	}
	if(thManFRCS2[RCS_F2U] == NULL) {
		thManFRCS2[RCS_F2U] = CreateThruster (ref_pos + RCS_F2U_OFS, RCS_F2U_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F2U]);
	}
	if(thManFRCS3[RCS_F3U] == NULL)	{
		thManFRCS3[RCS_F3U] = CreateThruster (ref_pos + RCS_F3U_OFS, RCS_F3U_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS3[RCS_F3U]);
	}
	//=================================================================================================
	// Left firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1L] == NULL) {
		thManFRCS1[RCS_F1L] = CreateThruster (ref_pos + RCS_F1L_OFS, RCS_F1L_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1L]);
	}
	if(thManFRCS2[RCS_F3L] == NULL) {
		thManFRCS2[RCS_F3L] = CreateThruster (ref_pos + RCS_F3L_OFS, RCS_F3L_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F3L]);
	}
	//=================================================================================================
	// Right firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F2R] == NULL) {
		thManFRCS1[RCS_F2R] = CreateThruster (ref_pos + RCS_F2R_OFS, RCS_F2R_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F2R]);
	}
	if(thManFRCS2[RCS_F4R] == NULL) {
		thManFRCS2[RCS_F4R] = CreateThruster (ref_pos + RCS_F4R_OFS, RCS_F4R_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F4R]);
	}
	//=================================================================================================
	// Forwards firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1F] == NULL) {
		thManFRCS1[RCS_F1F] = CreateThruster (ref_pos + RCS_F1F_OFS, RCS_F1F_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1F]);
	}
	if(thManFRCS2[RCS_F2F] == NULL) {
		thManFRCS2[RCS_F2F] = CreateThruster (ref_pos + RCS_F2F_OFS, RCS_F2F_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F2F]);
	}
	if(thManFRCS3[RCS_F3F] == NULL)	{
		thManFRCS3[RCS_F3F] = CreateThruster (ref_pos + RCS_F3F_OFS, RCS_F3F_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS3[RCS_F3F]);
	}
}

Is supposed to be used if "bUseRealRCS" is set to true. It looks like the implementation is only partially done.... I would say I grab ticket 18 and add it to the current milestone for further fixing and testing there.
 
Last edited:
As far as I can see, we already use proper RCS thruster coordinates. The only thing we need to review maybe is the use of the thrusters by the DAP

---------- Post added at 12:18 AM ---------- Previous post was at 12:13 AM ----------

This short report might be interesting for getting better autopilot parameters...

http://hdl.handle.net/2060/20110003654

But at ET separation there are 6 jets firing at the back and 4 at the front. Add to that the c.g. position, and the real orbiter might actually have had an moment added to it.
Given that I have some free time now from the ius-1.0 branch, I'll move back to the trunk to fix ticket 86 and do more research on the mouse events going where they shouldn't go.
 
Code:
void Atlantis::CreateFRCS(const VECTOR3 &ref_pos)
{
	//=================================================================================================
	// Downwards firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1D] == NULL) {
		thManFRCS1[RCS_F1D] = CreateThruster (ref_pos + RCS_F1D_OFS, RCS_F1D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1D]);
	}
	if(thManFRCS2[RCS_F2D] == NULL) {
		thManFRCS2[RCS_F2D] = CreateThruster (ref_pos + RCS_F2D_OFS, RCS_F2D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F2D]);
	}
	if(thManFRCS3[RCS_F3D] == NULL)	{
		thManFRCS3[RCS_F3D] = CreateThruster (ref_pos + RCS_F3D_OFS, RCS_F3D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS3[RCS_F3D]);
	}
	if(thManFRCS4[RCS_F4D] == NULL)	{
		thManFRCS4[RCS_F4D] = CreateThruster (ref_pos + RCS_F4D_OFS, RCS_F4D_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS4[RCS_F4D]);
	}
	//=================================================================================================
	// Upwards firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1U] == NULL) {
		thManFRCS1[RCS_F1U] = CreateThruster (ref_pos + RCS_F1U_OFS, RCS_F1U_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1U]);
	}
	if(thManFRCS2[RCS_F2U] == NULL) {
		thManFRCS2[RCS_F2U] = CreateThruster (ref_pos + RCS_F2U_OFS, RCS_F2U_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F2U]);
	}
	if(thManFRCS3[RCS_F3U] == NULL)	{
		thManFRCS3[RCS_F3U] = CreateThruster (ref_pos + RCS_F3U_OFS, RCS_F3U_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS3[RCS_F3U]);
	}
	//=================================================================================================
	// Left firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1L] == NULL) {
		thManFRCS1[RCS_F1L] = CreateThruster (ref_pos + RCS_F1L_OFS, RCS_F1L_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1L]);
	}
	if(thManFRCS2[RCS_F3L] == NULL) {
		thManFRCS2[RCS_F3L] = CreateThruster (ref_pos + RCS_F3L_OFS, RCS_F3L_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F3L]);
	}
	//=================================================================================================
	// Right firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F2R] == NULL) {
		thManFRCS1[RCS_F2R] = CreateThruster (ref_pos + RCS_F2R_OFS, RCS_F2R_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F2R]);
	}
	if(thManFRCS2[RCS_F4R] == NULL) {
		thManFRCS2[RCS_F4R] = CreateThruster (ref_pos + RCS_F4R_OFS, RCS_F4R_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F4R]);
	}
	//=================================================================================================
	// Forwards firing thrusters 
	//=================================================================================================
	if(thManFRCS1[RCS_F1F] == NULL) {
		thManFRCS1[RCS_F1F] = CreateThruster (ref_pos + RCS_F1F_OFS, RCS_F1F_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS1[RCS_F1F]);
	}
	if(thManFRCS2[RCS_F2F] == NULL) {
		thManFRCS2[RCS_F2F] = CreateThruster (ref_pos + RCS_F2F_OFS, RCS_F2F_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS2[RCS_F2F]);
	}
	if(thManFRCS3[RCS_F3F] == NULL)	{
		thManFRCS3[RCS_F3F] = CreateThruster (ref_pos + RCS_F3F_OFS, RCS_F3F_DIR, ORBITER_RCS_THRUST, ph_frcs, ORBITER_RCS_ISP0, 
			ORBITER_RCS_ISP1);
		AddPrimaryRCSExhaust(thManFRCS3[RCS_F3F]);
	}
}
As far as I can tell that code is not used. And it is only for the FRCS not the ARCS. It might have something to do with the UseRealRCS option in the SpaceShuttleUltra.cfg file.

---------- Post added at 12:30 AM ---------- Previous post was at 12:27 AM ----------

As far as I can tell that code is not used. And it is only for the FRCS not the ARCS. It might have something to do with the UseRealRCS option in the SpaceShuttleUltra.cfg file.
And I just confirmed that it isn't used by default as it is set to FALSE and setting it to TRUE causes a CTD upon loading.
 
I created ticket #102 and grabbed it.

https://sourceforge.net/p/shuttleultra/tickets/102/

If anybody has requirements to be included in the ticket for implementation and testing, state them now, I will update the ticket with the more accurate requirements.

DaveS: It could be possible I make a research ticket for you, for the accurate RCS thruster positions and directions. We have the exhaust defined below as literals, but if something is not accurate there, I need corrected reference data there. I could also just get the specifications from the ODB, but that data is only accurate to the mesh that we use.

I think we agree that the current implementation of the RCS is functional, but inaccurate.
 
I created ticket #102 and grabbed it.

https://sourceforge.net/p/shuttleultra/tickets/102/

If anybody has requirements to be included in the ticket for implementation and testing, state them now, I will update the ticket with the more accurate requirements.

DaveS: It could be possible I make a research ticket for you, for the accurate RCS thruster positions and directions. We have the exhaust defined below as literals, but if something is not accurate there, I need corrected reference data there. I could also just get the specifications from the ODB, but that data is only accurate to the mesh that we use.

Are the DAPs going to work well after? I say leave this RCS business for after the release (and maybe for the release after that). It works, it might not be perfect, but it works.
I think tickets 74, 83 and 99 are the critical ones for this release.
 
Are the DAPs going to work well after? I say leave this RCS business for after the release (and maybe for the release after that). It works, it might not be perfect, but it works.
I think tickets 74, 83 and 99 are the critical ones for this release.
I would leave out 74 as we don't have a de-orbit calculator. And until we can do at least STS-1 without exiting the sim, more runways aren't doing us any good.
 
I would leave out 74 as we don't have a de-orbit calculator. And until we can do at least STS-1 without exiting the sim, more runways aren't doing us any good.

Fair enough. We could add something like that to the Mission Editor when it is working.
 
Are the DAPs going to work well after? I say leave this RCS business for after the release (and maybe for the release after that). It works, it might not be perfect, but it works.
I think tickets 74, 83 and 99 are the critical ones for this release.

None of the tickets are included in the current milestone 2.1 - also, 83 and 86 could be related- I just had seen 86 during a test launch.

About 74... What the hell is it about now? I see Edwards... but I am not sure, is it about the base or about autopilot issues.

I would say, we move all confirmed bugs into the current milestone and handle them before release. If 74 is just about the base, it can wait. Do we already want to plan the next milestone towards 3.0, so we can move the minor feature tickets there?
 
Last edited:
None of the tickets are included in the current milestone 2.1 - also, 83 and 86 could be related- I just had seen 86 during a test launch.

About 74... What the hell is it about now? I see Edwards... but I am not sure, is it about the base or about autopilot issues.

83 and 86 are not related. 86 I think it because of the OV rescale awhile back (and I'm currently fixing it), and 83 showed up when SiameseCat changed the c.g. update code.
74 is about the runway lines on the lakebed not being in the correct location, but right now it doesn't matter.
 
OK, so what about the #102 - keep in 2.1 or push back? I doubt its much work to get the CTD fixed and the remaining sets of thrusters implemented.

I suspect it is an issue with a undefined thruster group.
 
OK, so what about the #102 - keep in 2.1 or push back? I doubt its much work to get the CTD fixed and the remaining sets of thrusters implemented.

I suspect it is an issue with a undefined thruster group.
If you can the implementation working, I can tune the positions.
 
Are the DAPs going to work well after? I say leave this RCS business for after the release (and maybe for the release after that). It works, it might not be perfect, but it works.
I think tickets 74, 83 and 99 are the critical ones for this release.
I strongly suspect that the DAP will have issues once we start using a realistic RCS. I think we should wait until after the release to start using realistic thruster positions.
 
Status
Not open for further replies.
Back
Top