SSU Development thread (4.0 to 5.0) [DEVELOPMENT HALTED DUE TIME REQUIREMENTS!]

Status
Not open for further replies.
Hello all,

First, thanks for providing such a great shuttle! I've enjoyed a lot while playing it. Well done guys!

I loved SSU so much so I want to help developing it. I have a good experience in C++ (In a scale from very bad to excellent) and a bad experience in Blender (I've just had some lessons today, I can continue learning it if it's necessary). The problem is I don't know where and how to start.

Unfortunately, I am not a NASA geek nor a shuttle pilot. I don't have this deep knowledge of space shuttle. But I am doing good in basic operations (ascent, basic orbital operations, re-entry, and landing).

I've started by trying to implement APU Auto Shutdown:
The APU AUTO SHUT DOWN switches on
panel R2 enable the automatic shutdown
feature in the associated APU controllers.
When the switch is positioned to ENABLE, each
controller monitors its corresponding APU
speed. If that APU speed falls below 57,600
rpm (80 percent) or rises above 92,880 rpm (129
percent), the controller automatically shuts
down that unit. Each shutdown command
closes that unit’s secondary fuel valve and the
tank isolation valves.
I don't believe APU secondary fuel valve and tank isolation valves are simulated. So my simple code is to shutdown APU using normal shutdown command when the conditions applied. I noticed during my tests that APU speed is getting over 129% during ascent. Is this normal?

I've tried to implement the switch. However, I don't know how to set the correct mouse region:
Code:
		pAPUAutoShtdwn[0]->SetMouseRegion(AID_R2, 0.226394f, 0.675783f, 0.271294f, 0.707931f);
		pAPUAutoShtdwn[0]->SetReference(_V(1.237, 1.84, 13.998), switch_rot);
		pAPUAutoShtdwn[0]->DefineSwitchGroup(GRP_S22_R2_VC);
		pAPUAutoShtdwn[0]->SetInitialAnimState(0.5f);

Also, I am not sure how the bundle system works:
Code:
DiscreteBundle *pBundle=STS()->BundleManager()->CreateBundle(cbuf, 16);
pAPUCntlrPwr[i]->ConnectPort(1, pBundle, 1);

I am sorry if my questions look stupid or very noob ones. This is the first time I've ever seen such a complex project. All of my programming experience was in a simple, basic and small software. This is also my first deep entrance into Orbiter API and Orbiter vessels.

APU Auto Shutdown might be useless for the current version as it might rely on systems that don't exist yet or not fully implemented, but it should be a good start for me to 'make something useful'.

I would like any tutorials, guides, and advices.
 
The bundle system is quite easy. OutputPorts sets a simulated voltage, InputPort allows to read it. multiple input ports could read information from one OutputPort.
 
Which class controls the switches? For example, the when I set APU operate switch to on, which class runs the APU?
 
Which class controls the switches? For example, the when I set APU operate switch to on, which class runs the APU?


This is right now in the APU class. In APU.cpp and APU.h
 
Thanks for your help. Any idea about settings mouse region?


Not yet, despite me being the guy who programmed that API. :lol: I am sorry, my memory has really suffered in the past two years.
 
Thanks for your help. Any idea about settings mouse region?
The APUs I think were done by Urwumpe, so you have to ask him how they work, as I only made a small correction years ago.

On the panels, I'm much more knowledgeable. :lol:
There is a class per panel, which groups and defines the switches, talkbacks and whatever controls/displays that a certain panel has. First a panel click area is defined and sent to Orbiter (this currently has some issues... we are waiting for more info from Martin), and then each control is assigned an area inside the panel area, so when a click notification is received from Orbiter we can tell for which control it belongs.
The panels are grouped into PanelGroups that make managing then a bit easier.
Similarly, the subsystems are under the umbrella of the Subsystem Director.

IMO, a good place to start, and also a place where work is urgently needed, is the Crawler. It has panels and subsystems that work in the same way as the "master vessel", but as they are few it isn't a mountain of code to grasp.
AFAIK, the Crawler needs work on the touchdown points and maybe new motion logic to handle Orbiter 2016.

If you know C#, there is always the SSUWorkbench, which also has lots of work remaining.
 
The APUs I think were done by Urwumpe, so you have to ask him how they work, as I only made a small correction years ago.


I didn't... I think it was Chris Jeppesen.
 
AFAIK, the Crawler needs work on the touchdown points and maybe new motion logic to handle Orbiter 2016.
I wish it was the TDs. That would be easy to fix. No, it's the motion system that is entirely NO-GO with Orbiter 2016. To be fair, it dates way back to the December 2003 version of Orbiter.



I believe we do have permission from fred18 to use the motion system built into his Multistage2015, so things just need to be transferred from MS2015 over to our Crawler and properly adapted (his do have a number of issues, like not being able to turn while in motion).
 
Thanks all,

I need more explanation about how panels are connected together as well as how the panel read and save statues work, and how it set switches to their position. Code examples would be nice.

I am so sorry but I need to understand how these works to add APU Auto Shutdown.

A short summary of the steps are required to add a panel switch would be great.

---------- Post added at 10:25 AM ---------- Previous post was at 07:29 AM ----------

After a bit of messing around, I've fully implemented APU Auto Shutdown and APU Speed Select, in both code and visuals. I've tested them and no problems so far.

I noticed a ticket I might be able to do it: Hidden faces in meshes
But how can I know which face is unwanted? An example would be good.
 
Thanks all,

I need more explanation about how panels are connected together as well as how the panel read and save statues work, and how it set switches to their position. Code examples would be nice.

I am so sorry but I need to understand how these works to add APU Auto Shutdown.

A short summary of the steps are required to add a panel switch would be great.

---------- Post added at 10:25 AM ---------- Previous post was at 07:29 AM ----------

After a bit of messing around, I've fully implemented APU Auto Shutdown and APU Speed Select, in both code and visuals. I've tested them and no problems so far.
Do you intend to make the rest of the hydraulic system? That would be nice to have... :hmm:

I noticed a ticket I might be able to do it: Hidden faces in meshes
But how can I know which face is unwanted? An example would be good.

I call "hidden face" to a mesh triangle that is not visible to the user, and thus could be removed without any loss of visual quality, making it a good way to gain graphics performance.
An example would be a cylinder, with caps at the ends, and the ends of the cylinder are inside another object, thus only the side is visible. In this case the caps are doing nothing (they are not visible), and can be deleted.
But I think you should let me and DaveS handle that ticket, as we have done it in the past, and I think SSU is more short of people in the "coding department" than in the "graphics department". :shrug:
 
What is the missing parts from the hydraulic system?

Hmm... pretty much everything...:facepalm: Just look at the APU/HYD display and you'll see that there's not much being displayed.
In theroy, we need an hydraulic system, somehow powered by the APUs, that would then enable the motion of the various hydraulic actuators in the subsystems. In practice, I have no idea how it would be implemented.:facepalm: Currently we have a "pseudo" hydraulic system inside each APU, and hydraulic users check the pressure as needed, but this has no legs to go on. Independant classes for each hydraulic system and actuators are needed... and they all need to interface with each other... :shifty:
 
The ATVC is also mostly a dummy right now.
 
I've successfully separated the hydraulic system from the APU. It now has its independent class. I've also integrated it into the APU, so it works without any problems now.

I'll see what I can do with hydraulic actuators.
 
I've successfully separated the hydraulic system from the APU. It now has its independent class. I've also integrated it into the APU, so it works without any problems now.

I'll see what I can do with hydraulic actuators.

Don't forget that the hydraulic system is not all about pressure but also flow rate.
 
Don't forget that the hydraulic system is not all about pressure but also flow rate.


Exactly - and also temperature, if you want to give the WSBs, circulation pumps and heaters a purpose. Would need to look how many temperature sensors exist, I think it could be close enough for government work to assume a single temperature for a hydraulic system.



How good are your math skills Abdullah? I lack the focus right now for working on a sparse matrix system solver, but thanks to the hydraulic fluid being almost incompressible, it would be just a system of linear equations that needs to be solved.
 
Exactly - and also temperature, if you want to give the WSBs, circulation pumps and heaters a purpose. Would need to look how many temperature sensors exist, I think it could be close enough for government work to assume a single temperature for a hydraulic system.



How good are your math skills Abdullah? I lack the focus right now for working on a sparse matrix system solver, but thanks to the hydraulic fluid being almost incompressible, it would be just a system of linear equations that needs to be solved.

My math skills are very bad. I don't even know what linear equations means :rofl:
These things are too advanced to me. I can program it if I have a clear picture about what to do.
 
My math skills are very bad. I don't even know what linear equations means :rofl:
These things are too advanced to me. I can program it if I have a clear picture about what to do.


I am very sorry there. :lol: I know the theory there, but sadly, I am "dancing on too many weddings" as we Germans say right now, to do something like that.


The problem is how to describe the hydraulic system mathematically - do you know basic electric equations? Kirchhoffs laws? Essentially, those formulas work with small modifications on hydraulic systems as well. You have flow instead of current and pressure instead of voltage.
 
Status
Not open for further replies.
Back
Top