[16:24:11] NASSP Logging has been started by rcflyinghokie [16:24:13] running through it all again [16:26:44] https://www.dropbox.com/s/y0n5wpnlbk66sfb/Screenshot%202021-03-19%20122628.jpg?dl=0 [16:26:46] 30x [16:27:10] looks bad [16:27:12] yeah [16:27:20] any idea what framerate that was? [16:27:23] that last GDC align before launch is what saves it [16:27:35] I can find out [16:28:01] would be helpful. If it drops below 60 it might become unstable after all with longer steplength [16:29:05] 27 [16:29:20] I normally get 50 in the CM [16:29:37] that's why I don't use time acceleration on the main panel haha [16:29:44] lol I do often [16:29:53] but usually during non critical things [16:30:01] but yeah I see what you mean [16:31:03] I think that is more a performance issue than something in GDC code that should be fixed [16:31:09] would be quite difficult to fix [16:31:40] that rate signal is the same as the rate that gets integrated by the GDC to determine attitude in normal operation mode (non GDC align) [16:32:08] wouldn't want to limit that rate in normal operation mode [16:32:18] or else the GDC really starts to drift :D [16:32:35] the only possible place to fix would then be in the ASCP, limit the output voltage [16:32:50] GDC attitude minus ASCP attitude [16:33:03] morning! [16:33:10] hey [16:33:48] at least we know its not a procedural thing [16:33:57] yeah [16:34:09] with that this run through of 9 is complete [16:34:18] well, I still want to check if that procedure to get the RSI pointing up is really right [16:34:22] quite annoying [16:34:37] well I think its supposed to be already from launch [16:35:13] so you shouldnt have to move it that much [16:35:45] but there could be lift vector down reentry [16:35:56] if you come in too shallow from the Moon [16:36:03] highly unlikely of course [16:36:47] true [16:36:48] or not haha [16:36:53] procedure for that is [16:37:02] roll 180° at 0.05G [16:37:03] yeah everything I see has it up [16:37:10] just after EMS roll switched on [16:37:14] haha [16:37:18] that will bring it down [16:37:23] assumign its up to begin with [16:37:26] assuming* [16:37:28] I prefer that to doing the RSI alignment [16:38:54] yeah super easy [16:40:26] also not good procedurally to have to do everything 180° rolled [16:40:29] pre EI [16:44:03] Ok that checklist is done for now [16:44:32] I guess I will dive back into the LM ECS haha [16:57:38] im starting to look at how to add a VC to the MCC vessel [16:58:05] should that be part of mccvessel.cpp? [17:05:22] hmm yeah, I guess [17:07:34] or maybe adding a mccvc.cpp for it? [17:08:01] oh you mean the file mccvessel.cpp. Yes better make it separate [17:08:17] ok [17:09:52] what I have in mind right now is quite simplistic, maybe a room with the correct size, but just with one "console" for now with 4 MFDs on it side by side [17:11:14] and can definitely be expanded on later [17:13:22] sure [17:13:34] also keep in mind that MFDs have the wrong aspect ratio [17:14:21] in the future we might want to just draw the MCC screens on a display with the right aspect ratio, if that is possible [17:14:32] so without it being an MFD [17:15:11] right [17:15:44] what I can do is just give it the frame of an MFD for now and I can revisit it later [17:16:36] but I can still try and make the console around it have the look/feel of the Apollo-era console [17:17:14] yeah [17:17:34] just don't make it difficult for yourself in the future if we want to do it differently [17:19:03] shouldnt be hard to change in the future, its only a simple thing right now anyway, just a VC with 4 MFDs [17:19:21] everything else in the VC will be static [17:19:23] for now [17:19:47] yeah [17:22:25] this will be nice when your flying a mission from the virtual cockpit, since there are no MFDs in the VC, you can easily switch to the MCC vessel [17:22:35] you're* [17:22:56] I guess uplinks still need to be worked out [17:23:08] right [17:23:12] that was the other thing [17:24:06] what if we somehow could give the RTCC MFD access TAB menu uplinks queue [17:24:55] yes that's possible now that the RTCC MFD uses the same instance of the RTCC [17:25:10] that way you could calculate your burn from the MFD in the MCC vessel, then back in the CSM/LM VC you can use TAB to do the uplink [17:51:39] my conclusion after trying to understand how Orbiter calculates gravity for an hour: I don't understand how Orbiter calculations gravity [17:52:03] whats the best way to add a new c++ file, can I just right-click on the MCC project->Add->New Item...->C++ file ? [17:53:33] I mean I guess that looks quite obvious but it somehow looks to simple to me :D [17:54:22] @indy91, I can't remember exactly, but I thought there was something in the Doc/technotes folder [18:23:27] the technotes are somewhat useful, but they are more general and not specifically about how it's exactly implemented in Orbiter [18:24:20] AlexB_88, make sure you add them to the header or source files [18:24:41] and also that the files are created in the correct folder [18:24:54] right [18:25:14] I think by default it wants to add them under Build/VS2017 or so [18:30:59] the Orbiter API doesn't really help me to understand how gravity is calculated [18:31:21] The best I can get seems to be GetWeightVector, which is a force in local vessel coordinates [18:31:38] I disabled nonspherical gravity. Put a spacecraft in a circular orbit [18:32:07] Moon and Sun gravity are still being considered in Earth LEO, but should be very small... I think [18:32:20] but the gravity force is still changing a lot [18:32:27] not really understanding that... [18:39:25] ok, going to play git dummy again...how do i create a new branch for testing that I can check out, I honestly cannot remember all the steps [18:44:18] git checkout -b branchname [18:44:49] so if I wanted to start a new one with the current NASSP snapshot to edit? [18:51:26] oh I think I got it [18:54:38] n7275 we had a discussion a while back regarding substances, and looking into how the sdk handles substances going from a cryo/liquid state to gas...did you look into any of that or change any of that for your fuel cell work? [18:56:28] I was going to, but I was worried that it would become too big of a project. [18:57:01] when I get this one merged I want to breadboard the tank class in matlab [19:04:46] I gave multithreading some more thought too. I have no intention of working on that any time soon. but I think the way to do it would be to split up what the refresh functions calculate. and the parameters that get updated by them into two distinct steps. [19:05:11] all the threads of one would need to finish before the other started. [19:10:23] yeah it will be a big project [19:11:17] I think probably the most straightforward thing to do right now, would be to add things like liquid vs vapor specific heat, etc [19:12:53] and maybe add some sort of enum phase or something [19:13:55] yeah you see what we have so far as far as properties [19:14:04] liquid, gas, supercritical, nuclear fusion plasma for those large timesteps... [19:22:33] hehehe [19:23:06] speaking of big projects.... I've been thinking a lot about the counter overhaul again [19:24:31] and found myself wondering how I would make an AGC emulator today if I didn't have to worry about backwards compatibility with yaAGC [19:25:33] so, both as sort of a refresher on the hardware design and as something that didn't take a lot of mental effort to write over the past couple of busy weeks, I have a new mostly-working emulator [19:25:52] oh that's why you were so quiet lately :P [19:26:05] I was moving, which is most of why I've been quiet haha [19:26:10] but am now mostly settled into the new plcae [19:26:12] *place [19:26:14] haha I know I know [19:26:23] great [19:26:27] i am starting that process in July [19:26:41] anyways, it's modeled after the hardware so it's more accurate (it executes subinstructions instead of instructions)... and also initial tests show it being about 4 times faster than yaAGC [19:27:22] that sounds nice [19:29:01] it passes all of the Retread 50 instruction tests, so now I'm working on fleshing out all of the I/O channels and counters [19:29:32] What I was thinking about with telemetry and all is timing requirements and synchronization between systems [19:30:30] hmm, how does that impact telemetry? [19:30:36] is it mostly a sample time thing? [19:30:38] well the PCM timestep [19:30:54] for AGC sync it gets called in the AGC timestep 6400 times per second [19:31:16] I'm not sure AEA telemetry can be done without it also having a certain amount of synchronization with the PCM [19:31:40] right [19:31:44] the timing requirements sound ambitious for just being called once per timestep [19:32:26] and the way it works right now is, the PCM timestep gets called 6400 times per second, in sync with the AGC, only when the AGC is powered [19:32:46] otherwise it just runs once per timestep [19:33:08] so to keep all these systems in synch, there should probably be a central place from which things are timed [19:33:15] yep definitely [19:33:24] of course there are seperate clocks. PCM uses AGC clock if it's powered, otherwise it has its own [19:33:28] also mission timers etc. [19:33:46] how does that work in your new emulator? Same as in the Virtual AGC? [19:34:08] how does what work? the timing? [19:34:26] well how does the simulation of it run [19:34:34] one call of the function equals one cycle? [19:35:03] like calling agc_engine [19:35:31] we call that function every 0.00001171875 seconds [19:35:49] yeah, I haven't set up any higher level timing logic but right now I have a function that corresponds to 1 MCT, which is that number [19:35:59] right, so the same [19:36:02] yup [19:36:09] it's annoying with the AEA, it works differently [19:36:27] so putting both AGC and AEA in a timestep together would be a bit annoying [19:37:26] we could refactor the AEA to provide a better interface [19:37:54] aea_engine returns the number of cycles it ran [19:38:22] heh that's annoying [19:38:29] I think I'll keep thinking about this for a while [19:38:40] how to best set it up [19:39:01] I don't think it would be too hard to change it to have an interface similar to the AGC, where each call takes a certain amount of time [19:39:07] right [19:39:23] I basically want a class that handles all things that need fixed timing [19:39:29] the timestep would be different from 0.00001171875 though [19:39:33] it has to be able to deal with different timing sources [19:39:37] yeah that sounds like the right way to go [19:39:39] yeah, that would be no problem [19:40:18] for now my main concern with the AGC is still that coarse align error [19:40:52] but your new emulator sounds fun, can't wait to test it a bit myself [19:40:56] yeah. I'm wondering if it's because of the way yaAGC fakes the counter operations [19:41:38] just weird that we haven't really seen this before [19:41:48] yeah definitely [19:41:54] I was testing with our Apollo 9 mission scenario pre SPS-7 [19:41:57] from 2018 [19:42:07] and I did go back to the commit that added that scenario [19:42:13] felt weird using such an old NASSP build [19:42:18] haha [19:42:29] and I did manage to get the same problems there as well [19:42:42] so it's not something we recently(ish) broke in NASSP [19:42:51] oh that's very interesting [19:43:29] and we've flown so many missions and never really saw this issue [19:44:10] so weird [19:45:26] https://github.com/thewonderidiot/magc [19:46:35] thanks! [19:48:27] the goal for this weekend is to be able to talk to it through a DSKY haha [19:48:29] not quite there yet [19:48:54] already build myself an exe file [19:49:33] hah, that was fast! [19:49:48] next step would probably be harder haha [19:49:55] it takes hardware-formatted ropes, not virtualagc binary files [19:50:05] of course [19:50:33] well before you have to teach me how to use a 0.0.1 version of a software, I'll let you work on it a bit more [19:50:56] I'm curious if it mostly works for you though! [19:51:03] since you bothered to build it haha [19:51:28] I bothered to type make and hope it did something [19:51:57] https://drive.google.com/file/d/1q3xU35QFFJywzetBH7jh-da-WNYnmv2b/view?usp=sharing [19:52:14] you should be able to run it with "magc Retread50.rope" [19:52:29] at least I have updated my Git for Windows so that it uses main as the default branch instead of master... [19:52:36] and it'll spit out a whole bunch of subinstruction names and state after executing them [19:54:00] I see lots of A, L, Q, Z, FB, EB, B, G, S, EXT, INH [19:54:11] and then it stopped after 10 seconds or so [19:54:15] cool [19:54:26] reproducable results [19:54:26] sounds like it works :) [19:54:36] other than most our current NASSP issues... [19:54:42] hehehe [19:56:02] I can't even reproduce Orbiter's gravity and state propagation methods [19:57:35] :( [20:09:34] you develop your emulator I'll build my Orbiter competitor [20:09:42] hahaha [20:09:55] I suspect that I might finish just slightly before you do [20:09:58] :P [20:10:08] very likely [20:10:51] my plan was to provide a simulation for the standalone LVDC emulator. Lacking a DSKY the LVDC emulator would be a bit boring otherwise [20:11:10] Sadly the LVDC emulator is even more boring, it doesn't have any software [20:11:41] yeah [20:11:47] maybe someday... [20:13:29] I wonder how hard making an Orbiter clone really would be.... [20:15:25] hard [20:17:01] so in your current commit [20:17:09] where did the fuel cell clogging go? [20:21:10] I'm still a bit skeptical about your power_load logic, but you are the expert on it. The code is probably ok as it is. If you think it's correct I'm willing to merge it [20:25:30] going to impliment clogging in a separate commit. trying to make these projects smaller in the future when possible. I'm going to play around with the branch as is this weekend a bit, and then I'll message you to merge it [20:25:43] sure no problem [20:33:26] oooh one other thing. is the FC disconnect current different in earlier CSMs than later ones? [20:34:02] the document I've been referencing is the rev 3 databook, from 1970 [20:37:55] ours trip at 75 amps, but if I'm reading the databook right, that was the spec, but even at 112 it took 80 seconds to disconnect [20:39:08] 100 ampere minimum...no I'm not reading it correctly [20:43:37] indy91, this might be a bit hacky but... [20:43:55] I found a way to not have that long pause at CSM/LV sep [20:44:27] I found it by accident while testing the MCC VC mesh by loading the LM VC for it [20:45:21] if the LM VC is already loaded in the session, it reduces the pause significantly at CSM/LV sep [20:46:16] n7275, we also have revision 2, not sure if you downloaded that one. If not and you don't want to download a 500MB file, I can check if it's the same. Just tell me where I should look. [20:46:57] AlexB_88, I guess we can do that in the SaturnV class only? [20:47:12] yeah [20:48:24] I'd be fine with that. Even better if we can disable the loading of it somehow, after CSM sep [20:48:30] maybe we can have it loaded in SaturnV class and then deleted after CSM LV sep [20:48:40] yeah [20:49:01] maybe we can hide in the VAB or something :D [20:49:19] ah well I guess not if it part of SaturnV class [20:49:42] oh by loaded you mean actually loaded [20:49:48] oh well just need to flag it invisible [20:50:01] well thats what I did in my test [20:50:20] I had it loaded in the place of the MCC VC mesh [20:50:24] haha [20:50:43] flight controller positions: CDR and LMP [20:51:23] isn't it possible to globally load a mesh without having to actually display it already, even if invisible? [20:52:03] ah, right [20:52:28] ill try just loading it [20:52:34] not Adding it [20:52:43] oapiLoadMeshGlobal? [20:52:50] does that something good for us? [20:53:03] that is what I am trying [20:53:19] rcflyinghokie1, I just remembered, did you land that second time with the main chutes not releasing? [20:53:24] without the AddMesh after [20:54:05] the second time they released and the CM stayed at its orientation upon release [20:54:41] ah ok [20:54:51] so yes [20:54:53] have to fly a few reentries to try that again [20:55:16] just having it loaded with oapiLoadMeshGlobal in a separate vessel from the LM before CSM/LV sep works [20:56:17] great! [20:56:31] I guess we can do that in Sat5mesh or something [20:56:40] yeah [20:57:03] as part of loading the S-IVB stuff [20:57:08] then it doesn't get loaded the next time [20:57:16] after CSM sep I mean [20:57:36] right [20:58:09] I can add that right now to my MCCVC branch and it will be part of the 1st commit [20:58:37] sure [21:04:40] are all the saturn5 meshes deleted at CSM/LV sep? [21:05:07] like the ones loaded by LoadSat5Meshes() [21:05:16] I downloaded rev 2. looks to be the same. I'll change it to 100 amps. [21:06:19] hmm [21:06:49] I believe LoadSat5Meshes always gets called [21:07:04] gets called in the Saturn5 module initialization [21:08:02] Once a mesh is globally loaded it remains in memory until the user closes [21:08:02] the simulation window [21:10:32] and it notes below exactly what were trying to do [21:10:35] "* \note This function can be used to pre-load meshes to avoid load delays during [21:10:36] * the simulation. For example, parent objects may pre-load meshes for any [21:10:37] * child objects they may create later." [21:11:14] * \note Do NOT delete any meshes obtained by this function with oapiDeleteMesh() [21:11:15] * Orbiter takes care of deleting globally managed meshes. [21:11:57] child object LM wants a pre load from parent object Saturn V [21:12:00] may Orbiter already takes casre of it then, when the LM_VC mesh is loaded again by the LM itself [21:12:58] Every further request for the same mesh directly returns [21:12:59] * a handle to the stored mesh without additional file I/O. [21:13:39] right [21:14:59] so it looks like the only thing needed is the oapiLoadMeshGlobal and we dont have to worry about deleting it from Saturn5 class [21:15:31] yep [21:15:40] so Ill add that to LoadSat5Meshes() [21:17:18] I guess. Ah you were thinking about the case of loading a scenario after CSM sep [21:17:29] where both Saturn V class and LM class are calling that [21:18:06] we can maybe see in the DX9 Client log if that actually works, so the LM module not having to load the mesh again [21:21:14] whoa, I just got in a little Apollo 9 booklet from AC Electronics [21:21:39] the LM Computer Programs page actually lists P10, P11, and P63-P67 [21:22:16] sure [21:23:58] I can confirm Apollo 9 had P10, P11 and P63-P67 [21:24:55] fun that something actually acknowledges that :D [21:24:58] it calls P10 and P11 "Predicted Launch Time (CFP)" and "Predicted Launch Time (DT)", respectively [21:25:48] yeah I think this is the first thing we've found that does haha [21:26:09] yep those names are the same as the early GSOP [21:26:33] the log shows Storing a mesh 0x21719D98 (ProjectApollo/LM_VC) twice [21:26:47] oh shit, I wonder if it also has descriptions for the option codes I had to make up names for [21:27:38] AlexB_88, look at how long that took each time though [21:27:57] if it mentions 0x21719D98 twice that is probably good [21:27:59] same ID [21:28:12] 1st: (204: 20.8s 01.76ms)(0xAF8) Storing a mesh 0x21719D98 (ProjectApollo/LM_VC) [21:28:23] 2nd: (519: 52.9s 05.42ms)(0xAF8) Storing a mesh 0x21719D98 (ProjectApollo/LM_VC) [21:29:39] hmm [21:29:53] that's probably not the process of loading the mesh [21:30:09] when does the next task start after those two [21:30:21] next lines in the log [21:31:08] 1st (205: 20.8s 59.72ms)(0xAF8) Texture 0x21F2E280 (Contrail2.dds) added in repository [21:31:19] 2nd (520: 52.9s 01.49ms)(0xAF8) Texture 0x4EF42398 (ProjectApollo/dust.dds) added in repository [21:31:21] hmm [21:31:45] does it prevent the long load in that case? [21:31:52] yes [21:32:05] there is almost no pause now [21:32:14] maybe 1/2 a second [21:32:22] but it was like that before too [21:32:37] well however that works... it works :D [21:32:42] *before the VC was added [21:32:46] yeah [21:33:13] definitely [21:35:50] I just tested again without it and its about 5 seconds [21:36:01] so big difference [21:36:30] as long as we don't add 10 seconds instead of 5 to every LM load now, that's great [21:36:35] since its kind of important and such a small change I think I will commit it right now [21:36:52] yeah [21:49:21] ugh [21:49:51] why does GIT keep refusing my password only on my laptop [21:50:18] when I try to do git push from the command prompt [21:52:58] says the username password are incorrect, but they ARE! :D [21:53:03] only happens on my laptob [21:53:04] no idea, I let git store the password, so I never have to enter it [21:53:38] I have it set that way on my main PC, but my laptop keeps asking for it [21:55:53] make sure your remote is git@github.com:org/repo, not https://github.com/org/repo [21:56:06] if you go through https I'm pretty sure it always prompts [21:56:07] Github is more annoying [21:56:40] wants me to confirm my identiy every so often [22:00:35] rcflyinghokie1, upon further investigation, I think the trajectory propagation isn't so bad. I set all drag of the CSM to 0 and it stays quite close. [22:00:47] so it might actually be drag after all [22:00:58] maybe not only drag, but it's definitely part of it [22:02:24] without drag it's still 30 meters off at most from what was predicted 1.5 hours ago for the position at deorbit TIG [22:02:44] I used your deorbit day scenario, I think about 6 hours before deorbit [22:06:34] yeah the dragless solution is perfectly fine. Why was I even doubt that as a whole [22:06:44] doubting* [22:08:02] haha so its orbiters fault? [22:08:23] I think it's mostly drag that the RTCC isn't compensating for [22:08:46] I always thought that the drag of all our spacecraft are super small, but apparently not [22:08:58] and this orbit has a perilune of 94NM [22:10:14] perigee [22:11:00] should the remote "origin" have the address of my only repo? [22:11:07] online* [22:12:13] I think the way we usually set things up is upstream for the main repo and origin for our own NASSP one [22:13:03] I decided to delete my origin with GIT GUI and trying to re-create it [22:13:45] git@github.com:org/jalexb88 for the address? [22:14:00] git@github.com:jalexb88/NASSP [22:14:13] oh lol [22:14:16] thanks [22:17:39] so I added that address as to the remote "origin" [22:17:54] but now when I push ie. git push origin Orbiter2016 [22:18:05] |Warning: Permanently added the RSA host key for IP address '140.82.114.3' to the list of known hosts.| [22:18:16] git@github.com: Permission denied (publickey). [22:18:16] fatal: Could not read from remote repository. [22:18:40] https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account [22:18:41] try [22:18:43] git remote -v [22:19:29] I get a list of the repos now [22:20:03] origin: git@github.com:jalexb88/NASSP [22:20:19] upstream: https://github.com/dseagrav/NASSP.git [22:20:45] hmm, does using deagrav there still work? I guess it does [22:21:05] orbiternassp/NASSP is the actual link now [22:21:20] looks right otherwise [22:21:49] oh but wait [22:21:57] that origin link looks weird [22:22:01] Does that work? [22:22:53] For Mike's new repo I did [22:22:53] git remote add origin https://github.com/thewonderidiot/magc.git [22:22:56] earlier [22:23:30] both formats work -- they're different protocols. git@github.com lets you set up a public key so you never have to authenticate [22:24:40] ah ok [22:26:08] ok so its the fatal: Authentication failed for 'https://github.com/jalexb88/NASSP.git/' [22:26:19] so I guess Ill have to check the link Mike posted [22:30:22] night! [22:34:53] ok so I still cannot find the physical location of the LM fan on LM-8 [22:35:09] I think part of the reason we arent getting cabin circulation is the fan positioning [22:36:57] I am wondering if its positioned in the loop like the cabin gas return to help circulate [22:39:13] ok it works finally [22:39:41] thewonderidiot, thanks for the link, a bit of a hassle to go through but it works :D [22:39:53] yeah it's worth it though [22:40:03] now that you've set it up you won't have to again until you switch computers [22:40:24] even if you change your password or whatever, that key will keep working [22:40:39] right makes sense [22:40:57] is that key tied to my laptop though? [22:41:33] no, you could easily copy that private key you generated to a new computer [22:41:42] I usually have one per computer though [22:41:56] ok [22:44:56] .tell indy91, PR sent [23:18:40] thewonderidiot: Are you writing a new AGC emulator? [23:33:21] yup [23:46:16] Nice. Because of the counters? [23:48:02] What kind of API do you have in mind for peripherals? Same as yaAGC? [23:49:46] nope, this is clean slate, how I would design something now if I didn't have to worry about compatibility with yaAGC [23:50:07] I'm not going to provide much of an API -- probably just DSKY [23:50:21] otherwise it will be optimized for being included in simulations [00:00:08] I think I'd do the same. While compatabilty is nice there have been discussions that limited function in for better compatability. [00:00:32] The one thing I like about it already is that you're not using GNU coding standards :P [00:02:00] So do you have any usecase in mind if not for simulation (apart from the DSKY)? [00:20:48] Looking at how you do memory it might be a lot easier to implement the ACM than in yaAGC. From when I looked at it I needed to change quite a bit of how memory worked to get it working. [00:23:35] possibly using this instead of yaAGC in NASSP or similar simulators [00:23:53] not having to worry about backwards compatibility will make the counter overhaul much much smoother [00:23:59] that was my major stumbling block before [00:25:44] Yeah, I know dude. I'm all for compatability but not to the point where you can't change anything. If there actually is some archaic project depending on it they either don't update or will make themselves known. [00:27:49] the way I did memory (and everything else) mirrors the logic in the computer [00:28:13] I implemented this by looking at the schematics and Memo #9, and nothing else :) [00:29:59] Awesome, I like how it looks so far. Would love to try to get it running in NASSP once it gets to that stage. [00:30:20] Maybe even that Android app I build for yaAGC a while back. [00:34:50] The ACM is mapped into the address space of the AGC. For erasble it inhibits the memory cycles via MAMU and also does the parity on its own. For fixed it just inhibits the strobe via MNHSBF and lets the AGC do parity on its own in T08. That should easily be doable by having a way to hook into mem_read when the ACM is connected and if the address is in ACM space let it handle the read. [00:35:00] Of course that's all still far in the future [00:40:16] heh yeah [00:40:29] plus you'll need to add the channels to control_rch() and control_wch() [00:40:52] I'm only explicitly adding the channels and bits that actually exist [00:40:58] the channels are by far the most unrealistic thing about yaAGC [00:43:39] I should go through R68-4125 on auxilary memory again and identify what it actually uses on the test connector. [00:46:59] It also does GOJAM since it does its own parity for example. Then the tape also might have some stuff of its own [01:04:46] they had to add a wire that wasn't present in the flight AGCs [01:04:57] a way to force a WG control pulse to be generated under external control [13:52:12] good morning [13:53:07] hey [13:53:12] and merged [13:54:24] so Mike and I were helping someone with 11 last night, and I watched most of it, but it seemed we had some sort of issue that caused a low orbit and PDI crashing into the surface [13:54:48] Even with a fresh SV before PDI, there was 2-3NM difference between PAMFD orbit and the V82 Hp [13:55:08] we couldnt figure it out [13:55:48] Apollo 11 landing site is about 1.7NM below the mean radius [13:55:55] PAMFD shows altitude relative to mean radius [13:56:09] alignment gone wrong? [13:56:53] I checked the P52 [13:57:13] not only did it look spot on, I redid it and got tiny torquing angles [14:00:01] do you have a scenario? I can try looking at it, too [14:01:00] yep one sec [14:01:41] could also be the AGC clock [14:03:06] wow [14:03:08] yep [14:03:11] 2 minutes off [14:03:20] I didnt think about that [14:03:27] I think thats the kicker [14:03:50] 2 minutes off is still just good enough for the ignition algorithm to work [14:04:13] crashed us lol [14:04:23] https://www.dropbox.com/s/ohyapxtfw7q8e3q/Apollo_11_-_Day_5_LGC_Synch_0026_0012_0004.scn?dl=0 [14:05:41] I have a bit of experience in Virtual AGC customer support :D [14:07:43] haha, well if you ask me if I turned it off and back on again.... [14:11:44] should be recoverable even in this scenario [14:11:49] clock update with PAMFD [14:12:10] state vector update, too,as a DOI burned with a clock that is off doesn't give good results [14:12:31] yeah I think that was the problem [14:15:10] yep pretty sure [14:15:23] haha ok [14:15:29] I didnt even think to check the clock [14:15:49] ok, back to the main event, I am trying to design an accumulator for the LM [14:16:51] any idea what shape our tanks are assumed to be? [14:25:16] shape for what purpose? [14:26:06] just doing some math for hookes law [14:26:25] I would need a "displacement" of sorts [14:27:07] the accumulator is a .75L tank with a spring that travels from 5% to 80% tank volume [14:27:07] well for the accumulator I'd say cylindrical would be a good and simple solution [14:27:36] yeah thats what I am using right now on paper, I just didnt know what our tank class assumes for computing volume and pressure [14:27:54] hmm [14:28:12] I suppose I really dont need it if I know the volumes assumed for min and max displacement [14:28:41] It provides 8psi at 80% volume and 5.6psi at 5% volume [14:29:44] h_volume::ThermalComps might be the relevant place for calculations related to this, but I'm not seeing anything for some specific shape [14:30:33] I think we might have enough data to not need the shape [14:31:06] So one way this could be done is changing the tank volume within the volume if that makes sense [14:31:25] it could be used similarly for tanks that use bladders later [14:32:31] it should definitely be a class derived from h_tank [14:33:24] the easiest solution would be to overload only h_Tank::refresh [14:33:35] call h_Tank::refresh in side it [14:33:39] inside* [14:33:49] and then recalculate the volume based on... something [14:34:07] which would be an adjustable value for specific accumulators [14:34:26] that might not result in a stable volume and pressure [14:34:32] but if it does, it's quite simple [14:34:36] yeah [14:35:04] I mean as a simple case we could make it adjust volume to maintain say 7psi [14:35:16] I guess you also have to overload saving/loading [14:35:20] to save the current volume [14:35:55] well it will be a small tank so even if it just calculates on the first timestep it might not hurt [14:36:40] the problem is though, how to make it work as an accumulator [14:36:58] putting it as a tank with inlet and outlet wont quite work now that I am thinking about it [14:37:35] inlet only with a two way pipe? [14:37:37] it almost needs to be attached to the pipe, or at the very least, providing head pressure to a manifold [14:37:53] oh yeah [14:37:56] duh [14:38:10] need more coffee [14:43:04] yeahh I will need help with this my C++ is very rusty [14:45:37] well start with a derived class that's identical to h_tank [14:45:57] class h_Accumulator : public h_Tank [14:45:58] { [14:45:59] }; [15:07:23] going to see if his PDI works then mess with that [15:09:19] trajectory propagation with drag is probably a while away, but I'm thinking about improving the deorbit calculations. [15:09:36] After all it's the deorbit calculations being so sensitive to the trajectory that caused the issues [15:09:47] well some of it at least, SPS-7 being the other part [15:12:37] but I think I can improve the deorbit targeting. Ours is still derived from P37 [15:20:35] hey [15:21:07] indy91 very nice, and yeah the clock fixed it [15:21:13] morning Alex [15:32:15] h_Tank(char *i_name,vector3 i_p,double i_vol); //create a room of i_vol liters at i_p position (assume sphere) [15:32:21] so they are spheres [15:46:30] yeah my C++ is very weak right now lol [15:48:09] But I am slowly remembering [16:00:02] morning! [16:01:02] Hey MIke [16:01:10] It was the LGC clock that was off [16:01:23] he didnt sync his clock well [16:01:30] 2 seconds or so [16:02:08] ah, wow [16:02:25] when does the clock sync happen in the timeline? [16:02:26] 2 minutes [16:03:15] early in the LGC activation [16:03:18] while docked [16:03:54] clock was off by 1:09 minutes [16:05:48] normally you initialize the clock with V25 N36 [16:06:02] and then the precise adjustment with V55 [16:06:23] the PAMFD has an option to press the enter key on both CSM and LM DSKY at the same time [16:06:28] that can be used in V55 [16:06:38] PAMFD also has a clock update uplink [16:06:45] yeah its a little convoluted if you arent familiar [16:06:52] yep thats what I used to fix it [16:08:28] but even the clock initialization should be correct within 1-2 seconds [16:08:56] so having more than a minute is strange [16:09:30] I mean the procedure was probably done incorrectly [16:10:56] right [16:11:02] and the V55 procedure as well [16:11:07] yep [16:11:08] maybe looked at a wrong time or something [16:11:35] or the CMC clock is also off [16:12:18] CMC clock is fine [16:12:21] yeah [16:12:48] I think it was just not following the procedure, as its a little awkward in NASSP for the uninitiated [16:13:02] swapping vessels etc [16:13:06] right [16:23:52] yeah I am lost in C++ haha [16:24:03] all the basics have eluded me it seems [16:26:56] anything we can help you with? [16:30:16] Well I am just really grinding away rust at the very basics of making this accumulator [16:31:43] but I am just really weak at deriving this from the tank class [16:42:54] Yeah I need help just setting this up :( [16:43:38] Did you add my example code from above? [16:45:25] yeah but I am just lost [16:45:36] trying to more or less copy the vent [16:45:44] and just dug myself into a hole [16:46:12] Oh I should have just copied h_tank [16:46:35] hmm, well [16:46:58] your accumulator class has everything the tank class has [16:47:38] yeah and will just need added functions to, well, function lol [16:47:54] yeah [16:47:59] added functions and overloaded functions [16:48:44] but in its most simple form, the new class only needs a single function [16:49:52] void changeVolume(double pressure) or something like that [16:51:38] not even that [16:51:50] just overload h_Tank::refresh [16:51:58] call h_Tank::refresh inside it [16:52:09] and then Volume = function of pressure; [16:52:12] well [16:52:16] space.volume I guess [16:52:45] oh that's way better. listen to Nik. [16:53:01] and that's the class done. probably won't be so simple in the end, but that's a good start I think [16:54:21] I think I am making this way complicated [16:55:03] yeah I bet haha [16:55:34] class h_Accumulator : public h_Tank [16:55:35] { [16:55:36] public: [16:55:36] void refresh(double dt); [16:55:37] }; [16:55:39] in the header [16:55:55] just below h_Tank I guess [16:55:56] yeah I am starting over and thats what I have [16:56:57] void h_Accumulator::refresh(double dt) [16:56:58] { [16:56:59] h_Tank::refresh(dt); [16:57:00] space.Volume = 5.0*space.Press; [16:57:00] } [16:57:17] and make that space.Volume equation "a bit" smarter haha [16:57:47] this new volume then will take effect at the next timestep I guess [16:58:20] knowing our ECS loops this might not be stable [16:58:25] but it's a start [16:58:47] there could be a maximum change in volume per time or something [16:58:54] making it a bit more inert [16:58:57] lots of ways to do it [16:59:43] before going to the function, I am still trying to see if I have these set up correctly [17:00:19] because I want to treat this just like a tank, so it needs to be able to have volume and isol and valves defined in the cfg etc [17:02:26] well it is a tank [17:02:33] it's 99.999% identical to a tank right now [17:02:43] just with volume getting recalculated [17:03:44] it's a derived class, which means it has everything from the parent class plus stuff you are adding to it [17:09:01] ok I think I have something in place, now to mess with that math [17:10:36] I am going to start with a simple linear equation [17:10:49] based on the values from the book [17:11:26] I also need to set a maximum and minimum volume [17:11:26] yeah, makes sense [17:12:13] I guess to actually create an instance of this new class there is a bunch more code needed [17:12:22] yeah [17:12:24] in Hsysparse [17:12:31] Yep I am ready for that part too lol [17:12:39] but that's copy and paste from h_Tank mostly [17:12:53] So is this able to store the original tank volume? [17:13:06] All these values are going to be based on the volume set in the cfg [17:13:38] in this most simple version it will initialize the volume from the config [17:13:56] and then recalculate it in refresh [17:14:47] what do you mean with based on the volume in the config? [17:15:54] so the equation I am using is a simple linear trend from 5% to 80% of the tanks volume [17:16:21] the volume of the fluid inside the tank cannot exceed 80% of the tanks total volume [17:16:22] ah right [17:16:34] because of space taken up by the piston [17:16:38] so, I guess it makes sense to have the volume in the config as the 100% number [17:16:47] yes [17:17:02] which in this case is 0.75L [17:17:03] probably should be stored separately from the normal volume [17:17:18] so that would be the first additional variable in the new class [17:19:00] and then the new class needs a constructor [17:20:11] yeah thats where I was struggling before [17:20:19] I didnt know how to make one using the tank class [17:23:07] h_Accumulator::h_Accumulator(char *i_name, vector3 i_p, double i_vol) : h_Tank(i_name, i_p, i_vol) [17:23:07] { [17:23:08] InitialVolume = i_vol; [17:23:09] } [17:23:23] h_Accumulator(char *i_name, vector3 i_p, double i_vol); in the header [17:23:52] something like that [17:24:01] InitialVolume would be the new variable for 100% volume [17:24:07] could be named differently of course [17:24:57] hmm there is an original volume in the tank class [17:26:10] oh is there? [17:26:19] not seeing it [17:26:40] now I am seeing it [17:26:51] double Original_volume; [17:27:10] yeah [17:27:12] that's weird [17:27:17] it's used in the pipe class [17:27:21] yeah i saw that [17:27:24] canb I use it here? [17:27:26] can [17:27:44] ah ok Create_h_Tank sets it [17:28:48] how does that work in the pipe code... [17:29:09] only used for PVALVE [17:29:13] do we have any of them? [17:29:37] yes [17:29:45] controls flow based on pressure differential [17:29:53] or volume in this case [17:30:23] Oh PVALVE [17:30:24] hmm [17:30:28] I was thinking PREG [17:31:42] I don't see how that could even work [17:31:51] out->parent->space.Volume > out->parent->Original_volume [17:32:07] those will always be identical, as nothing can change volume or original volume [17:32:29] unless space.volume is the amount of volume being occupied? [17:32:40] so if a tank wasnt full for example? [17:33:13] but I dont know [17:33:24] nah, space.volume is the unaltered volume [17:33:33] space.Volume = i_vol; [17:33:37] in the tank constructor [17:33:38] yeah no idea [17:33:47] there are no PVALVEs in place I can see [17:33:49] we have no pipe of that type [17:33:50] yep [17:34:09] but yeah, you can of course use that variable [17:34:16] but that original volume should still work in my case [17:34:25] and it's already been set [17:34:37] so you don't need an additional constructor or variable even [17:34:47] everything already done for us [17:42:08] ok now to set up the hsysparse [17:42:26] and then the config [17:43:41] also, I am using 2 if statements to set max and min volumes [17:44:13] https://www.dropbox.com/s/5v80eebn1apoiia/Screenshot%202021-03-20%20134357.jpg?dl=0 [17:45:07] ah I need to redo that math for Pa [17:46:50] yeah Pascal, looks good otherwise [17:47:10] maybe make it if/else if [17:48:49] yeah I was thinking that [17:51:53] I have no idea if this will work but its a step in the right direction I think [17:57:30] yay, finally got the MFD display working [18:04:39] indy91, about the RTCC MFD font sizes [18:05:12] the MFDs that are built into the 2D panels seem to be the only place where the fonts sizes are optimized [18:06:07] if you have an MFD in a VC the fonts are a bit cramped, would it be possible to adjust them a bit? [18:07:52] indy91 for the hsysparse can I just more or less copy the one for h_tank? Or will a simpler one do (remember this is a tank and needs all the same things) [18:11:55] AlexB_88, yeah I can try to figure out what's even going on this that. I'm not sure what causes the font sizes to change etc. [18:12:03] with that* [18:12:54] rcflyinghokie, yeah the functions to create systems are part of H_system, so it's not something that can be done with overloading [18:13:02] basically copy and paste from tank [18:42:37] ok [19:05:48] indy91 still lost on the hsysparse [19:06:01] tried using what was in h_tank but no luck [19:06:16] well you need to change everything that says tank in that function [19:06:42] these lines [19:06:44] new_one=(h_Tank*)AddSystem(new h_Tank(name,pos, volume)); [19:06:47] while (strnicmp(line,"",7)) { [19:07:01] yes that is done [19:07:13] void* h_Accumulator::GetComponent(char* component_name) { [19:07:13] h_Tank *new_one; [19:07:17] thats my only error [19:07:33] "inherited member not allowed" [19:08:11] https://github.com/rcflyinghokie/NASSP/tree/LMECS [19:08:17] probably a lot of boo boos [19:10:03] while (strnicmp(line, "", 7)) { [19:10:10] the 7 is the number of characters [19:10:16] 7 was correct for tank [19:10:54] 13? [19:11:08] 14 [19:11:09] 13 [19:11:19] hover your mouse over it [19:11:22] use that number minus 1 [19:12:22] ah [19:12:36] so 14 [19:12:40] it says 15 [19:12:59] yep, 14 [19:13:26] did you add h_Accumulator::GetComponent in the header? [19:13:39] ah [19:13:54] gotta define a function before implementing it [19:13:57] yep haha [19:16:40] hmm [19:16:58] does h_Accumulator::GetComponent have anything in addition to the tank class? [19:17:34] if not then you don't need that function at all [19:17:40] h_vent doesn't have one [19:19:09] Hmm I guess not [19:19:27] get rid of it then [19:23:42] hmm I will need it to return pressure and current volume [19:25:14] so I take that back [19:26:40] tank has pressure [19:26:44] but of course not volume [19:26:51] I take that back [19:26:54] it has volume [19:27:09] if (!strnicmp (component_name, "PRESS",5 )) [19:27:10] return &(space.Press); [19:27:10] if (!strnicmp (component_name, "VOLUME",6 )) [19:27:11] return &(space.Volume); [19:27:42] oh great [19:40:04] hmm can a mixing pipe return its current temperature? [19:55:53] targetTemp? [20:00:38] thats set in the config [20:01:02] I removed the mixing pipe I was trying for now, trying to debug the other issues adding this has (little changes throughout of tanks) [20:01:34] so I use ACCUMULATOR in the config, correct? [20:01:45] [20:04:10] ah [20:04:18] did you add accumulator to the H_system::Load function? [20:06:10] hmm [20:06:27] not understanding that code right now, why doesn't vent not have a section there [20:07:01] ah H_system::Build is what I mean [20:07:14] ah yes [20:07:16] you added it there [20:07:24] else if (Compare(line, "")) [20:07:24] Create_h_Accumulator(line); [20:07:34] so is what needs to be in the config [20:07:40] yes [20:07:42] which it is [20:09:50] its having issues returning temp I think [20:10:40] what exactly is the issue right now? [20:15:27] its throwing an error when trying to get primary glycol temp from the accumulator [20:15:50] in the simulation [20:15:52] CTD [20:16:10] yes [20:16:15] on load [20:17:26] by getting it you mean GetComponent? [20:18:33] https://www.dropbox.com/s/xcssekvqdwuf0li/Screenshot%202021-03-20%20161810.jpg?dl=0 [20:19:29] hmm [20:19:38] sounds like PRIMGLYCOLACCUMULATOR isn't defined [20:20:41] yeah I need to go back and find a lot of things I think [20:21:09] ah [20:21:11] sscanf(line + 6, " %s <%lf %lf %lf> %lf %lf", [20:21:11] name, [20:21:12] &pos.x, [20:21:13] &pos.y, [20:21:13] &pos.z, [20:21:14] &volume, &isol); [20:21:14] it might be this [20:21:21] that +6 is the [20:21:33] well also I broke a lot of things by changing the accumulator tank lol [20:21:58] so that needs to be line + 13 [20:22:32] ok [20:22:48] yeah with the code there is would have created an accumulator [20:22:52] but the name is messed up [20:22:56] so it wouldn't find it [20:23:45] the name of the accumulator is [20:23:46] LATOR> PRIMGLYCOLACCUMULATOR [20:23:48] :D [20:25:37] lol [20:27:33] where are the pointers for LEMPrimGlycolPumpController [20:28:58] lemsystems? [20:29:16] found them [20:29:17] yeah [20:29:30] did you search for LEMPrimGlycolPumpController instead of PrimGlycolPumpController? [20:29:47] yeah [20:29:48] I got it [20:30:42] https://i.imgur.com/pB8J9AY.gif [20:31:03] booting up and passing the control pulse tests of Sundial :D [20:33:03] you got that DSKY running real fast [20:39:57] it wasn't so bad [20:40:03] I had a lot of code laying around that I could reuse [20:40:20] also, it's only the relay words, I haven't implemented any of the channel-driven lights or anything yet [20:41:03] that all important NO DAP light [20:43:39] hmm volume is just returning zero [20:45:28] could that be Original_Volume being 0 as well? [20:45:54] not sure how else that could be... [20:46:06] maybe? [20:46:11] current code is on my branch [20:47:04] yeah I am looking at it [20:47:27] Original_volume could only be 0 if it's still not loading correctly from the config [20:48:19] maybe add a debug string in h_Accumulator::refresh to see what it's doing? [20:48:24] checking all variables involved [20:51:33] sprintf(oapiDebugString(), "Volume %lf Pressure %lf Original Volume", space.Volume, space.Press, Original_volume); [20:51:54] forgot the %lf on orig [20:53:56] original volume comes up as nan [20:55:59] sscanf(line + 14, " %s <%lf %lf %lf> %lf %lf", [20:56:03] why 14? [20:56:06] I think it's 13 [20:56:17] it was 6 before for [20:56:47] not [20:56:52] you said to hover over and subtract 1 [20:57:05] hovering yielded 15 [20:57:15] hovering over what? There is no string there [20:57:39] that sscanf is for the first line for the accumulator in the config [20:57:43] that has [20:58:11] oh the one we talked about had the / thats why [20:58:12] in the other place it checked for the end of the accumulator part in the config [20:58:15] yeah [20:58:28] https://www.dropbox.com/s/dnn5haxjtsn4pwv/Screenshot%202021-03-20%2014.58.07.png?dl=0 [20:58:43] not sure if that's the cause, but it might be. There is an empty space there so 14 might be ok, but not sure [20:59:11] fake plotboard, our RTCC can't generate them... yet :D [20:59:59] I am trying 13 there [21:00:07] just a static image for now :D [21:00:36] I might at some point find a way to display the GET on the strips above [21:00:49] based off PAMFD GET I guess [21:00:55] ok now original volume stays zero, as does space.volume [21:01:51] AlexB_88, there is a RTCC GET [21:02:07] rcflyinghokie, weird, it must still have a problem reading from the config [21:02:13] https://www.dropbox.com/s/80mfp8epuf9ryr3/Screenshot%202021-03-20%2015.01.54.png?dl=0 [21:02:20] ah ok [21:03:02] Ryan [21:03:12] it would help if //new_one->Original_volume = volume; wasn't commented out :D [21:03:49] ummm [21:03:52] thats odd lol [21:04:42] the 2nd shot is pretty much what I wanted to do for now. The consoles are not accurately shaped yet and most other consoles are missing, but I think its good enough for now [21:04:54] yeah, there is something now [21:04:57] good start [21:05:33] so, the MCC vessel gets created by the RTC MFD in non-MCC scenarios [21:05:46] there is 2 positions side by side, CTRL-left and right arrows [21:05:50] so this will all be loaded when you open the RTCC MFD the first time [21:06:21] we can now add the MCC vessel to non-MCC scenarios, too [21:06:33] and it won't run the actual MCC with CAPCOM menu etc [21:06:47] we probably should add that [21:08:06] yeah [21:08:52] it also does the RTCC mission initialization at that point which causes a bit of lag [21:08:58] just on the first time you open the MFD [21:09:15] all those Orbiter API calls to generate the solar and lunar ephemerides... [21:10:31] right [21:11:26] that did it [21:11:32] now I can work on tweaking it [21:11:47] great [21:12:55] I also removed the enable focus = false from MCC.cfg [21:13:21] yeah I guess there is no harm in that [21:13:30] wasn't necessary to go there before [21:16:56] huh, this thing is actually able to pass the full set of self-tests in Sundial [21:16:59] that's unexpected haha [21:17:05] indy91, if you're not too busy, could you take a look at having the uplinks from RTCC MFD be somehow routed to the MCC uplink menu? [21:18:25] I guess the 1st thing though is making the MCC menu work in non MCC-scenarios like you said [21:20:21] hmm, that is an important point, I'm not sure that's possible [21:20:27] didn't realize that [21:20:45] the CAPCOM menu is MCC only, not in the MCC vessel [21:20:57] thewonderidiot, what were you expecting to fail? [21:21:13] anything, especially MP or DV [21:21:29] ah yes, DV is so fun [21:22:02] https://github.com/thewonderidiot/magc/blob/main/subinst.c#L827 [21:22:07] I thought there had to be an error in there somewhere [21:22:27] indy91, right but I mean having the CAPCOM menu in the CSM/LM but in non-MCC scenarios [21:22:38] looks nicer than the Virtual AGC code for DV really [21:22:43] haha [21:23:13] AlexB_88, yeah that's the problem I hadn't realized. I have to move parts of the CAPCOM menu to the MCC vessel I guess [21:23:42] ah I see [21:24:01] I was thinking you only need to use the menu once you switched back to the CSM/LM [21:24:16] it's passing RUPTCHK for the wrong reason... I haven't implemented the hardware bug related to TC Trap, but I also haven't implemented hardware alarms yet, so that cancels out heh [21:26:58] indy91, will if I have the RTCC MFD open in the MCCVessel, can I initiate an uplink to the CSM or LM from it? [21:27:35] I think so [21:27:40] hmm [21:27:43] no [21:27:44] haha [21:28:54] but maybe that's the easier way to set this up [21:29:09] right [21:29:21] the MCC has a cheaty way of doing uplinks [21:29:27] PAMFD and RTCC MFD use the TCP/IP method [21:29:49] the way uplinks are stored now in the RTCC is definitely vehicle specific [21:30:06] so there wouldn't be any confusion to which vehicle the uplink should go [21:30:17] the goal in my mind is doing the calculations from MCCVessel, then when you switch back to the CSM/LM you dont have to open an external MFD to start the uplink [21:30:46] so if you can initiate it from the RTCC MFD in the MCCVessel that would be fine [21:31:04] yeah, that is definitely possible to set up [21:32:36] hmm [21:32:51] S-IVB uplinks could be a problem because the vessel name changes [21:32:56] after CSM sep [21:33:38] hmmm [21:34:03] maybe uplinking from the MCC does work even right now [21:35:21] probably not, but almost [21:35:26] if (g_Data.uplinkLEM > 0){ clientService.sin_port = htons(14243); } [21:35:26] else{ clientService.sin_port = htons(14242); } [21:35:38] this decides CSM vs. LM uplink [21:36:00] and uplinkLEM is chosen based on the current vehicle [21:36:20] so probably the first step of all is to make the RTCC MFD compatible with the MCC vessel [21:36:36] it won't even load the mission parameters right now [21:39:24] if you go to the config page it probably doesn't have anything loaded [21:40:06] or it says custom mission or so [21:40:15] I just tried uplinking from MCCVessel to the CSM and it works [21:41:25] yeah it works because it defaults to the CSM TCP/IP port [21:42:08] but that should be chosen based on the type of uplink in the future [21:43:02] right [21:44:32] if we add the MCC vessel in launch scenarios with the right init parameters then it should initialize correctly [21:45:32] aside from the mission number [21:45:44] which is used in a bunch of places in the MFD [21:46:25] but I guess that's the next project, compatibility with the MCC vessel [21:47:25] so like RTCC_MISSIONFILE Apollo 11 Constants [21:47:52] yep [21:50:22] which also continues the project of moving things from the MFD to the RTCC class [21:58:53] I guess the end goal is for the MFD to just be the interface to the "RTCC class" [21:59:34] yep, that's the idea [22:00:16] for uplinks I also have some duplications right now between RTCC and RTCC MFD. I'll continue with that first [22:06:49] btw I found the folder with all the RTCC mission constants, but where is all the SFP values? They dont seem to be part of those files [22:10:23] the files with SFP in the name? [22:11:06] https://github.com/orbiternassp/NASSP/blob/Orbiter2016/Config/ProjectApollo/RTCC/1969-07-16%20SFP.txt [22:14:03] ah I see [22:14:09] its by date [22:14:13] makes sense [22:14:32] so you can have numbers for multiple launch days [22:14:40] yep [22:14:52] which right now is only the case for Apollo 11 [22:15:00] same for the TLI targeting [22:15:13] that's the numbers for the RTCC TLI simulation of course [22:18:07] it seems like a lot of files, but I think there is a good system behind it [22:18:25] the "Apollo 11 Constants" will have stuff like uplink addresses for the AGC [22:18:53] which can vary with software version, but Apollo 11 is always using Luminary 99, no matter what launch day [22:19:25] and SFP and TLI parameters are loaded from separate tapes (or punch cards?) [22:20:05] and the init files then have any other launch day specific numbers [22:20:17] some of which are overwritten in flight, so they can be saved/loaded [22:24:27] all of this information can also be found in the RTCC MFD [22:26:22] btw I guess when in the MCCVessel we have to remember to always have MPT active [22:27:24] I think the RTCC might have a few issues with trying to calculate an LOI from the position and DV of mission control in Houston :D [22:27:48] hmm, true [22:28:32] so, a lot of the RTCC processors have two options when it comes to the input state vector [22:28:53] either from the ephemeris or a specific state vector in the usable or evaluation vector table [22:29:04] those tables now exist, haven't been there for that long [22:29:53] hasn't been implemented yet, but when most processors can take those state vectors as input, then it wouldn't be a problem [22:30:19] you go to the vector panel summary and calculate yourself a DC "ground tracking" state vector [22:30:28] all that doesn't require MPT mode [22:34:27] but that will require some additional thought on how to best set it up [22:35:31] night! [08:23:49] .tell indy91, MCC VC PR sent [08:26:06] .tell indy91, also, a commit I did a few months ago seems to have fallen through the cracks until now: I added a check on buildstatus in the custom ClearMeshes() function so that if its less than 6, it clears all the meshes including 0 as the VC was never loaded anyway [11:31:27] good morning [11:44:17] Hi all [11:47:35] hey ggalfi! [12:35:48] Made some improvement on the visualization of the vibration in the VC. If you want to test it, it is in the "vc" branch in my github (https://github.com/ggalfi/NASSP/tree/vc) [12:56:15] oooo I'll have to check that out later. was just looking at the code and it looks really cool. [13:03:15] hey guys [13:03:18] that sounds fun [13:14:30] good morning [13:16:40] hey Ryan [13:18:40] so I am sad to report implementing an accumulator like this is not giving the results I want :( [13:18:57] the idea is to keep a constant head pressure on the pumps [13:22:26] does the volume stabilize? [13:23:57] yeah it stays on its minimum volume [13:25:14] huh [13:25:26] pressure not high enough? [13:26:26] its very very high [13:29:56] that and my debug line isnt showing up now for some reason [13:30:27] wait, shouldn't the volume get larger with higher pressure? [13:31:32] exactly [13:34:18] and why doesn't it? [13:34:53] does the pressure in the accumulator not get as high as the rest of the glycol loop? [13:36:41] its much much higher [13:36:48] it was like 100-200 psi [13:36:54] which is why I was very confused [13:38:00] putting a pressure regulator on the pipe has helped that though [13:38:03] so what's the units involved here [13:38:07] pressure in pascal? [13:38:13] yes and V in L [13:38:29] I cannot see the actual tank volume now though [13:38:36] the debug line wont show up [13:41:15] is that the descent debug line Alex added blocking it? [13:43:23] have you checked that original volume has the right value [13:43:52] checking your math right now [13:44:05] I'm seeing an upper limit of 8 PSI (80% volume of the 0.75l) [13:44:33] yep [13:44:40] lower limit of about 5.589 PSI (5% of 0.75l) [13:44:44] should run 5.6 to 8 [13:46:03] basically the goal is to keep the head pressure on the pumps [13:46:22] and when the pumps off, it maintains a system pressure of 5.6 to 8 psi [13:47:39] well something isn't working yet as it should and that's before checking if it helps maintaining system pressure [13:47:51] if pressure is high but volume stays low [13:48:18] yeah [13:48:26] and which decent debug line? [13:48:35] descent [13:49:32] the one you can enable in the Orbiter launchpad [13:49:43] there is also the mission timer debug line [13:49:57] did he add it last night? [13:49:58] but as long as a debug line is written to every timestep it should show up [13:50:05] no that's been there a while [13:50:08] it was working yesterday [13:50:15] and now all of a sudden isnt [13:50:24] do you have a clean version up on Github? [13:50:42] and by clean I mean, not too much testing code in it [13:51:01] yes [13:51:18] I'll check it out [13:51:38] literally, "git checkout" :D [13:52:49] ba dum chee [13:53:14] I also think I have a better way in theory to implement this logic [13:53:24] For example [13:54:00] If the pressure on the pump heads (ie the tank attached to accumulator) is < 5.6, decrease accumulator volume until pressure = 7 [13:54:20] If the pressure on the pump heads (ie the tank attached to accumulator) is > 8.0, increase accumulator volume until pressure = 7 [13:54:27] and impose upper and lower volume limits [13:54:40] wonder if that would work [13:56:12] does this work with old scenarios? [13:56:58] I am seeing the debug string not working [13:57:01] back in a bit [13:57:54] Well in the one I am using to test it worked yesterday [13:58:02] I dont know what I did to make it not work now haaha [14:12:26] there is no accumulator anymore [14:13:06] https://github.com/rcflyinghokie/NASSP/commit/273be2d44079bfe0831e34a8156ad6c4f71bde0f [14:13:19] not a single in the LEM config [14:15:02] derp [14:16:01] I was getting tired last night I think I copy pasted without changing it back [14:18:55] yeah I'm not good at coding late at night [14:24:19] I cant remember, are pumps 1 way flow? [14:24:25] when off [14:26:05] always one way I think [14:26:07] if (delta_p < 0) [14:26:07] delta_p = 0; [14:26:12] I think that's what does that [14:31:44] ok [15:01:17] in a tank can I look at the incoming pressure on a valve? [15:01:41] in a debug string? [15:01:47] no in code [15:01:55] to use [15:02:02] yeah [15:02:28] tank class has the 4 valves [15:03:02] hmm [15:03:20] I think it basically works like Tank->valve->pipe->valve->tank [15:03:28] in pointers [15:03:56] hmm [15:04:01] So if I wanted the pressure coming from the tank connected? [15:05:10] maybe it doesn't work, I thought I tried that before [15:05:16] the pipe class has pointers to its two valves [15:05:26] but the valve not to the connected pipe [15:06:26] what do you want to try? [15:06:45] If the pressure on the pump heads (ie the tank attached to accumulator) is < 5.6, decrease accumulator volume until pressure = 7 [15:06:52] If the pressure on the pump heads (ie the tank attached to accumulator) is > 8.0, increase accumulator volume until pressure = 7 [15:06:59] something like that [15:07:46] if we deviate quite a bit from the tank class that could work [15:08:01] even with all fixes the accumulator doesn't work as desired? [15:14:15] not really [15:15:10] I think the initial idea of a linear function isnt very stable here [15:17:14] ah [15:17:32] how about just making it slow to move? [15:17:48] still depending on its own pressure [15:18:02] but basically calculate a movement speed [15:18:34] and maybe smaller valve sizess [15:28:46] I am going to work on stabilizing the system a bit more first [15:30:10] morning! [15:32:07] hey [15:53:22] hey [15:54:30] hey Alex [15:55:06] working on uplinks [15:56:24] the first thing I am adding is an actual separate MFD page for each uplink [15:56:38] currently that is decided based on vessel type, which with the MCC vessel will be wrong [15:56:45] so there are now 4 state vector uplink pages [15:57:08] just like there were 4 MCC displays and uplink types for it [15:58:01] ah nice [15:58:27] and I think all AGC uplinks will now work in the MCC vessel, not just CMC [15:58:43] because that is decided based on the type of uplink [15:59:37] it's mostly copy and pasted but with that the RTCC MFD has passed 100 pages [16:03:29] oh and I think the solution for LVDC uplinks would be to add a TCP/IP interface for that as well [16:03:36] with a different port [16:10:42] right [16:12:02] have you tried the MCC VC yet? [16:15:09] I will very soon, to test the uplinks [16:18:32] is there any issue with switching vessel during an uplink? [16:18:34] also, I wonder if we should give some feedback as to when the uplink completes? Since if you are doing it from the MCC vessel then you can see the DSKY [16:18:46] I was wondering that too [16:19:01] cant* [16:19:04] my eyes [16:19:27] the MOCR is completely white for me [16:19:58] hmm miising texture? [16:20:53] yes [16:21:11] MCCVC_1.dds was not pushed by accident [16:21:21] Ill do that now [16:21:44] sounds good [16:24:02] PR sent [16:26:05] btw its CTRL-ALT arrows to "lean" across the console [16:27:58] good to know [16:28:57] another nice thing is the RTCC MFD is opened by default when clicking the PWR button [16:29:23] but you can still use the SEL button to access other MFDs [16:29:46] all 3 pixels of it [16:29:57] have to switch to hires VC MFD [16:30:08] ah yes [16:30:37] its in the "Extra" options [16:31:03] Ill have to add a note for that in the installation guide [16:31:55] I think it should be fine since the only VC NASSP has with MFD's is the MCC which is quite bare-bones so should not have much a performance hit by going to 1024 I think [16:32:19] no performance issues with my older laptop [16:34:37] another idea for the uplinks would be to implement a delay [16:34:41] maybe 10 seconds [16:34:53] so that you can switch back to CSM/LM and watch it happen [16:35:55] yeah that could work [16:38:01] would be the case for all uplinks though [16:38:14] including the ones where you are in the CSM or LM [16:41:34] right [16:42:14] maybe make it and option? [16:42:20] an* [16:43:41] or a "if (present vessel == MCC) {Add 10 second delay} type thing? [16:44:46] could probably be done yeah [16:47:28] another idea I had would be have the uplink wait for the user to do an action the the target vehicle ie. press a key to accept the uplink [16:47:35] but that sounds a bit more complicated [16:48:59] yeah I hadn't really thought through that the CAPCOM menu is entirely in the MCC class and not MCC vessel [16:49:16] so that is quite difficult to do [16:49:25] right [16:49:37] only from the user interface side though [16:50:04] it would be quite realistic to have a load being ready and just one button press needed to start it [16:51:22] or like a keyboard combination [16:51:34] SHIFT-U [16:51:41] or something like that [16:54:47] but the delay idea I guess would be realistic too, I am sure there was a bit of one in reality [16:55:19] so it could be relevant for not only unlinking from the MCC [16:57:02] there wasn't much of a delay really, maybe 2-3 seconds [16:57:26] I've listened to a GUIDO "typing" on the DSKY in the LM in real time [16:57:40] ah ok [16:58:04] so it can't be much more than a few seconds from his action to the feedback via telemetry [17:00:20] it will be a long road until the RTCC MFD can be easily used in the MCC vessel [17:00:33] because a lot of things depend on the vessel type right now [17:02:28] uplinks were just the worst offender [17:03:45] I guess MPT mode should work somewhat? [17:05:16] a lot better yeah [17:10:18] I guess there is also that "CSM" flag in the top-right, I guess that should read MCC eventually [17:10:40] yeah that's such there as a sanity check [17:10:44] just* [17:11:53] MCC thinks its the CSM, yep perfectly sane [17:16:09] vesseltype is 0 by default, 0 means CSM, 1 means CSM/LM docked, 2 is LM, 3 is LM/CSM docked [17:16:12] and most places have [17:16:15] vesseltype < 2 [17:16:19] as a check if it's CSM or LM [17:16:31] so yeah, everything will think it's a CSM right now [17:16:39] everything with that check [17:17:54] right makes sense [17:29:06] https://www.orbiter-forum.com/threads/fdai-rate-indicators-correct.39741/ [17:30:55] di we have this wrong all along? [17:31:04] did* [18:03:49] hmm [18:03:58] that seems contradictory to me [18:04:01] don't we have it fly to? [18:04:30] this sounds like the whole confusion over the crosspointers haha [18:04:33] yeah [18:07:15] Our Error needles are fly-too I think which is im sure is correct [18:07:27] fly-to* [18:07:54] but our rate needles I think are not fly-to which is what he was asking [18:20:51] from what I am finding attitude error and rate should be consistent [18:20:53] which they are not [18:56:41] indy91, did my whole MCC-2 procedure with the RTCC MFD from the MCC vessel, with MPT active [18:56:45] works like a charm [18:57:34] I was using my old Apollo 16 MCC-2 scenario, the one with the horrible post TLI trajectory (manual TLI) [18:59:44] so basically built the maneuver and referenced the checkout monitor, on-line monitor, DMT etc, then calculated a preferred REFSMMAT with the G11/G00 method [19:21:17] yeah I guess the MPT bypasses most checks on the current vessel [19:21:25] just have to fix LM uplinks from the MCC vessel [19:23:23] one thing I noticed is pressing the update liftoff time button from the MCC vessel gives 0:0:0 [19:24:47] yeah, that uses the current vessel [19:25:22] that button gets the TEPHEM from the CMC or LGC [19:25:34] and uses that for the RTCC liftoff time [19:25:44] right [19:25:59] actually liftoff time (GET reference) and the times used as reference for CMC/LGC uplinks [19:26:20] these are separate times, but by convention they are all set identical, to the CMC liftoff time [19:26:52] which is done during launch already [19:27:01] RETROs job while FIDO is busy monitoring the launch [19:27:29] these times are all on the checkout monitor, lower left side [19:28:41] I guess there should at least be protection against the button being pressed in the MCC vessel [20:04:40] just tried putting PDI on the MPT, from the MCC vessel, works ok [20:05:16] DVREM does show nana(ind) probably something vessel-specific in that calculation [20:06:45] there is also something a bit broken about lunar stay with the MPT [20:07:09] I think it's mostly that you can't do a trajectory update for the LM while landed [20:07:33] of course it could be something I screwed up when transferring parameters from ARCore to the RTCC config files [20:07:55] but DVREM... maybe something isn't initialized right for that [20:08:04] .tell ggalfi I just checked out your vc branch, going to build now and fly a launch with it :) [20:08:16] oh btw, if you manually change the CONFIG to LM, then LM uplinks work [20:08:23] from MCC vessel [20:08:30] right [20:10:55] got it working as well [20:11:06] now it depends on the type of uplink where it gets send [20:12:07] makes sense [20:13:47] PDI pad also works from MCC vessel [20:14:17] indy91, looks like more things work then you thought :D [20:15:28] in MPT mode? [20:15:42] yes MPT mode [20:17:32] yeah MPT mode has from the outset tried to avoid anything that depends on the current vehicle, at least as best as it could [20:18:03] right [20:18:33] is there any MPT modes in particular that use the current vehicle taht you know off hand? [20:25:23] hmm [20:25:30] maybe I actually got rid of them all [20:25:56] TLI and PDI used to depend on it [20:26:08] before the RTCC config files were added [20:29:33] right [20:29:47] at least TLI, used to "downlink" TLI targeting from the LVDC [20:33:30] I think I have a good commit ready for the uplinks and a bunch of checks on the new vesseltype MCC [20:33:42] but want to do a bit more testing [20:34:03] should be done by tomorrow [20:34:32] a bunch of displays like Maneuver PADs are a bit annoying to make independent of the current vessel [20:34:46] so that isn't done yet [20:37:02] and most calculations in non-MPT mode [20:37:51] awesome [20:47:34] ascent simulation also works [20:48:14] at least when I calculated it before PDI, with PDI+ascent on MPT [20:50:45] yeah, that part I hopefully didn't break [20:50:52] just when you are actually on the surface [20:53:04] when you are initializing the MPT from scratch on the surface you would have to input the landing site vector manually in the real RTCC [20:53:10] but I can make it so that it works as before [20:53:21] .tell ggalfi, well, I did three launches back to back because of how cool that was to watch. I like it! [20:54:23] but that was probably never done in reality. Normally when the MPT gets updated on the surface it takes a vector from the ephemeris and generates and ephemeris with that [20:54:41] the new ephemeris* [20:55:03] and for the ascent maneuver it then takes the lat/long/rad from the LM position table, so the same as on the uplink page etc. [20:55:14] problem in NASSP, the ephemeris of course doesn't get saved in scenarios [20:55:29] so when loaded from scenario it does a trajectory update as if it was from scratch [20:55:39] and that doesn't work right now [20:57:10] I wanted to include that in a bigger update for the function that generates the ephemeris including maneuvers etc, but I'm putting that off because... it's difficult :D [21:01:51] haha [21:02:49] it definitely worked on my last mission, Apollo 15 I think [21:03:35] the update that broke it was with the vector panel summary [21:03:53] probably wasn't there when you flew 15 [21:10:43] it wasn't [21:12:26] I deciphered that display from some grainy frames of the stock footage from a documentary about the MCC [21:12:51] n7275 called me crazy for trying it, which I probably deserved, but I think I at least got the most important bits figured out [21:14:57] haha, I'm amazed you got that. I spent a good long time trying to figure out what that display said. You had a much better idea of what you were looking for though. [21:16:49] yeah, that was the only reason it was possible at all [21:34:12] is it just me or is the vector compare display very dim :D [21:40:14] it's a very small font yeah [21:40:34] it works ok if you open it in the external MFD and make it almost as large as the screen :D [21:41:06] so I can check the accuracy of the IU with this display, right? [21:44:10] yes [21:44:43] you just need to use the vector code from the vector panel summary [21:44:59] so 001? [21:45:01] the first step is to get telemetry vectors [21:45:12] then move them to the evaluation vector table [21:45:23] you use the full code [21:45:30] ICHE001 or something [21:45:50] ok [21:47:49] on the LVDC uplink page I recently added a method to update the LVDC GRR time in the RTCC [21:48:01] but if you launched on time that is not necessary [21:48:13] getting telemetry vectors is not the same as the DC button, right? [21:48:30] or is it [21:49:56] no, it's the TLM button [21:50:26] that gets all the state vector from the current vessel's computers [21:50:44] telemetry vectors only appear as a GMT time [21:50:49] under TH in each panel [21:51:22] vector panel summary display also only updates every 6 seconds [21:51:30] which is realistic, but quite annoying... [21:51:37] ah so I guess the TLM button wont work in the MCC vessel yet [21:53:33] yes [22:00:42] woo, magc can pass all of the tests in Borealis :D [22:01:13] I'm really pleased that it makes it through all of the extended instruction tests [22:01:21] it took a ton of work to get virtualagc to pass those with tons of special cases [22:01:30] but magc passes them naturally without any additional logic :) [22:01:39] nice! [22:04:43] that's awesome! [22:11:15] just pulled your changes and built them on my Pi3 [22:13:36] that's great [22:18:11] night! [01:12:24] I would love Python a whole lot more, if there wasn't this 2/3 confusion all the time. [05:16:10] my general rule for python is that its goodness is inversely proportional to the size of the project it's being used on [05:16:25] for quick scripts it's absolutely amazing, love it [05:16:35] but once it gets to be a big project with a lot of dependencies it's hell [13:52:28] good morning [14:03:16] morning