[14:17:29] NASSP Logging has been started by n7275 [14:17:31] hey Niklas [14:18:21] hello hello [14:29:42] hello Tananarive, why do I not get any signal strength from you [14:33:16] ah [14:33:19] C-Band only [14:35:52] wait, is C-Band the same as VHF? Might be a dumb question... [14:36:34] or, C-Band is for ground tracking only and VHF is separate [14:59:26] c band would be radar I thought [14:59:53] yeah [15:00:40] we don't have any kind of user feedback for VHF signal strength [15:01:01] although it is calculated between LM and CSM [15:01:42] the antennas have proper polars and everything [16:32:24] I discovered last night that the CSM telemetry client has labeles reversed for H2 and O2 tanks temps [16:32:33] morning! [16:32:40] hey Mike [16:34:40] hey [16:34:45] n7275, ah, one more thing for me to change [16:36:37] I initially thought I broke something [16:37:10] -400F is a bit too cold for Oxygen [16:39:33] 2 questions: what needs to be tested for your pull request other than flying a mission with it, and have you had a chance to look at mine? [16:41:41] I don't think it needs any testing really, I know it works [16:42:28] if you really wanted to test every change you would need to launch, let CMC point sextant at Moon and Sun [16:42:40] and do a CMC controlled reentry [16:42:55] and I have not looked at your PR [16:42:58] will do in a bit [16:43:15] which one do you mean actually [16:43:21] radiative? [16:44:46] probably the N2 first because that's a bit more simple, but both should be ready [16:45:42] the radiative one is mostly a simplification and readability improvement, but I also added a feature [16:47:21] oh I actually summarized it on the pull request. I'm so glad I did that. [16:59:11] I think I'll do a quick Apollo 11 mission to test my padload update. I tested everything individually, even in-sim, but it is a bunch of changes at once [17:00:10] shortest mission, deorbit to the 1-4 area at 1:05h :D [17:00:36] ah no, not available for small launch azimuth [17:00:51] 2-1 at 1:22h [17:02:20] your N2 PR looks simple enough [17:02:36] what does that do? Just simulate a bit of the N2 stuff in the fuel cells? [17:03:40] yes [17:04:03] it will eventually provide a reference pressure to the H2 and O2 regulators [17:04:45] right, was looking for it to actually do something haha [17:04:53] but that just makes it simpler for now [17:06:45] it puts a realistic number on the telemetry display, and that's about it haha [17:07:10] good enough for me [17:29:31] :) [18:09:19] huh [18:09:32] I still had some local changes to the CSM telemetry client from ages ago :D [18:25:37] anything good? [18:27:06] ha, it feels like I stopped in a middle of a sentence [18:28:25] first I need to understand again how this all works [18:30:55] oh that's always fun [18:35:13] but seems like I just added two telemetry readings that weren't displayed yet [18:40:12] oh no [18:40:15] there is an old commit [18:40:56] I don't understand this, it's older than the last change [18:42:36] it's like I had two separate repos [18:43:42] 25 Nov 2018, my last commit on Github [18:44:02] apparently I did a PR with that [18:44:05] 14 Apr 2020 [18:44:08] got merged 15 Apr 2020 [18:44:16] but I had a local commit from 26 Nov 2018 [18:44:49] with some additional ECS telemetry [18:52:56] is VS2010 pretty much a necessity, or did you get it to build on a newer version? [18:57:21] I got it to build on 2017 actually [19:00:18] I don't know if the VS files on Github already have those changes [19:03:22] ok, all done except merging haha [19:03:27] LM client is already updated [19:16:50] what I can't do in VS is change the GUI [19:17:13] because then it seems to rewrite all of the code for it automatically [19:17:17] and doesn't build anymore [19:17:24] probably because it's still the old format or os [19:17:27] so* [19:17:43] so your issue with the label, I had to fix that in code [19:17:48] and not use the GUI editor [19:32:50] I never trust gui editors [19:53:05] of course I don't make that many GUIs and I'm kinda slow at it, so there's that... [20:00:20] hahaha I am in the same boat :D [20:00:49] nobody of us makes many GUIs that were created so long ago that it was barely buildable in VS 2010 for a while... [20:41:09] night! [14:05:33] hey [14:09:07] hey Niklas [14:26:53] ok, telemetry fixes all merged [14:35:02] wooo! [14:36:54] although I am already seeing something I don't like [14:37:14] SCS attitude error is not zero [14:37:18] maybe I got something wrong [14:38:37] hmm no [14:38:53] SCS scales that, so it should give 2.5V for zero attitude error [14:38:57] but it's not returning that [14:39:55] ah, it's not SCS, it's whatever is selected [14:39:59] so 2.5V exactly now [14:40:03] telemetry word is 128 [14:40:44] ah [14:40:58] it's in between [14:41:03] 127 = 2.49V [14:41:06] 128 = 2.50V [14:41:17] no [14:41:20] 128 = 2.51V [14:41:28] so it's getting rounded [14:41:57] and so zero attitude error is not shown as zero after unscaling [14:41:59] great... [14:42:09] but could be accurate [14:43:47] of course in reality there is the "unscaling" polynomial [14:45:32] yeah I guess you can't do much against this [14:47:08] a usual value for calibrated attitude error, on the ground side, is 127 = -0.022° and 128 = 0.017° [14:48:45] what the telemetry client can't do yet is scaling measurement based on some other telemetry. Attitude error telemetry is basically the same as FDAI needle deflection. So it differs based on the FDAI scaling, switch setting. [15:00:17] I'm somewhat tempted to try to emulate one of the programmable telemetry processors [15:01:21] maybe emulate is the wrong term [15:01:44] "write a plausible emulation of" [15:02:05] the most work you will have with that is tables [15:02:13] so many numbers [15:02:36] but assuming perfect calibration it should be a lot of copy and paste [15:49:41] the more I think about it though, it would probably just be an exercise in writing a jump table in an assembly language that I would have to invent [16:32:33] morning! [17:20:27] hey Mike [17:57:40] hey [17:58:32] good news: the board house finally started assembling the rope reader boards this morning :D [17:59:52] so like 11% now :D [17:59:58] 20%! [18:00:17] Windows installation progress bar would be proud [18:00:38] and bad news? [18:02:09] or only good news :D [18:02:26] only good news today! [18:02:45] yay [18:14:43] hi Alex! [18:14:46] lol [18:15:34] hey Alex, is was talking about you on the Discord [18:15:39] or more, about your keyboard [18:21:49] hey [18:22:31] haha [18:22:56] its actually Canadian English on my PC [18:23:31] my laptop keyboard is bilingual English/French [18:23:35] the keys to use the THC and the ROD buttons in the LM are always the two keys next to backspace, but they are different on each keyboard layout it seems [18:26:09] both my layouts have it as - and +/= [18:27:41] I got [18:27:48] ß ? \ [18:27:52] on the one key [18:27:59] ´ ` [18:28:01] on the other :D [19:02:54] I don't understand this [19:03:00] new Apollo 11 CMC padload [19:03:13] it's pointing about 0.4° away from the Sun [19:03:31] I was expecting 0.01° [19:03:48] maybe it is some fixed precision math that is causing the inaccuracy there [19:03:56] and maybe it's expected [19:04:07] I need to try it in our old Apollo 11 EPO scenario actually [19:04:13] maybe it was the same there already [19:19:28] hmmm, that's weird [19:26:58] I know that the calculation for the sun ephemeris is valid at exactly one time [19:27:01] mid mission [19:27:11] and a few days after or before that is starts breaking down [19:30:44] hello missing SM panel my old friend [19:30:56] hahahahaha [19:32:14] old scenario, Sun perfectly centered [19:50:25] whats the "preliminary" bool at the top of MCC calculations for? [19:50:46] doesn't seem to be used by anything [19:51:27] I use it on some missions [19:51:32] must have been a copy and paste thing [19:53:17] you can remove it if you dont need it for 12 [20:11:21] btw, we still haven't fixed some of the needles of some meters in the VC yet [20:11:27] CSM [20:11:50] mostly the O2/H2 tank pressures I believe [20:13:13] ah yes [20:13:47] also I think some knobs are reversed still [20:24:05] ah, figured out my sun problem [20:24:10] I did something bad with the sun velocity [20:27:25] when converting them to octals [20:27:32] cleaned up that section a bit [20:27:39] guess I did a bad job in that process [20:32:54] that drained my brain a bit. Good night! [14:24:37] good morning [14:26:12] hey [14:42:31] hey [14:42:46] hello [14:45:53] hey Alex [14:49:56] I did a bunch of P23s last night. I'm going to need new eyes if I do many more... [14:53:58] ouch [14:55:53] Ihave PTSD from P23s [14:59:58] whoever manages to implement semi-transparent line-of-sight for our sextant, so without alternating the view direction, gets a NASSP workplace health and safety award [15:02:04] I'm going to get a CRT monitor with a really slow phosphor until then [15:02:54] until then, doctors might use NASSP to check for epilepsy [15:06:30] nice side feature of some Apollo 7 MCC work I am doing, you can now get a Entry PAD for the 6-4 deorbit opportunity if you choose the abort option in the CAPCOM menu early enough [15:06:52] that's the shortest alternate mission they planned for :D [15:06:55] ah nice [15:07:15] they already got the target load and REFSMMAT anyway [15:07:20] and did a test with entering P40 [15:07:37] so for this GO/No GO area it's not much additional code [15:07:59] later on, I'll probably not add it for each deorbit opportunity [15:08:09] I think they had a go/no go about once a day [15:16:58] I am also working on block data right now for Apollo 12 [15:17:38] Im trying to integrate the midcourse maneuvers into block data 1/2 if applicable [15:18:32] not a problem for L/O + 15 as there is only one input SV [15:19:28] but for 25,35,45,60 there is potentially 2 SV's to input to the function, depending if you burned MCC or not [15:20:32] I dont think having 2 SV's plugged into "AP11BlockData" for one form is supported though [15:26:01] hmm right [15:26:30] in reality it was easy, you had MCC-2 on the MPT and then just ran the Abort Scan Table with the right choice of vector time [15:33:02] right [16:34:41] morning! [16:45:20] hey Mike [18:16:17] hey [18:16:38] hmm, just did the 6-4 deorbit on Apollo 7, I think I need to revisit the atmosphere issue again [18:16:51] our RTCC uses the 1961 standard atmosphere, Orbiter something more accurate [18:16:57] the difference is bigger than I would like [18:18:50] would those inaccuracies in the real RTCC? [18:19:00] were* [18:19:23] I'm pretty sure they started out using that atmosphere model, but by the time they flew manned missions they might have updated it [18:19:44] there are some additional tables from the mid 1960s for specific latitudes [18:19:49] they could have maybe used that [18:20:27] and a bit later, early 1970s, they upgrade to the Jacchia model that Orbiter also can use [18:21:05] the latitude dependent thing would just use different numbers, but the same equations [18:21:21] the main problem is, around 80km altitude the atmosphere in Orbiter is thinner than predicted [18:21:31] that means the 0.2g time on the Earth Entry PAD is off [18:21:45] and there is a PGNS go/no go check that almost fails because of that [18:22:18] and if I fly the profile that the deorbit burn and reentry was targeted for then I overshoot the target by nearly 100 NM [18:22:37] probably because of that issue at 80km [19:14:56] does the NRLMSISE model give better results? [19:19:03] hmm, I think it was pretty much the same as Jacchia [19:19:11] oh and actually, I have the NRLMSISE one enable [19:19:14] iirc it has seasonal variation, that the Jacchia model doesnt [19:19:55] I have a vague memory of this exact discussion between us a few months ago haha [19:20:02] yes yes [19:20:16] that was when I improved our Entry PADs [19:20:26] using some numbers from the RTCC reentry simulation [19:20:51] I didn't really find the proper fix for the issue then [19:20:57] and I wanted to add a feature for historical F10.7 data to Orbiter. it's all coming back to me now [19:27:52] Orbiter allegedly uses a constant Kp=3.0 [19:31:58] early 60s probably had a much higher average, so I wonder if that's where the higher predictions come from [19:37:22] not really seeing the big difference in my old graphs [19:37:29] need to check against Orbiter directly again [19:40:53] there was another issue where Orbiter underestimates the Mach number at high altitude [19:44:26] hmm [19:44:34] n7275, did you not update ALL old mission scenarios? [19:44:55] https://github.com/orbiternassp/NASSP/blob/Orbiter2016/Scenarios/Project%20Apollo%20-%20NASSP/Apollo%20-%20Mission%20Scenarios/Apollo%207/Apollo%207%20-%2020%20-%20At%20Entry%20Interface%20T%2B259h34m.scn#L39 [19:45:02] that's a scenario after CM/SM sep [19:46:16] I updated the energy, but not NASSPVER for those, since they were 7.0 scenarios [19:46:32] and other things were semi broken [19:47:06] right [19:47:14] well I am in the process of updating Apollo 7 [19:47:22] so they are getting replaced [19:47:37] just need to cheat to see a debug string :D [19:48:12] oh yeah.its probably preventing you from seeing it [19:49:34] not if I change the version number [20:46:26] :) [20:48:41] good night! [13:01:30] hey Alex [13:03:46] hey [13:50:45] how's your project with Apollo 12 MCC going? [14:05:43] quite well I have it working up to lunar landing [14:06:44] now starting work on lunar surface events [14:24:15] hey Niklas [14:28:03] hey [14:36:03] hey [14:36:57] indy91, I am forcing the TLC block data's to target an ATP line instead of a manual longitude [14:37:15] they are now very close to the real PAD [14:37:42] Apollo 12 [14:39:11] yeah, I guess the block data function there should really call the AST function. I'm also fighting with that right now, just so many layers of old to recent code... [14:40:51] but for now your solution is fine of course [14:41:18] right [14:42:47] there is a bit of hacky code here and there to make things work how I want them, but its all within RTCC::CalculationMTP_H1 [14:43:19] eventually as you update things in the RTCC itself I will take care of updating the Apollo 12 MCC [14:43:53] these are the times where I want to move to MPT only and drop everything else haha [14:50:23] I'm working on Apollo 7 MCC, maybe I should really try to go all in with the MPT for this one [14:50:58] yeah MPT only might make things easier MCC-wise [14:52:26] if you eventually do that with Apollo 7-11 I can always revise 12 too [14:53:52] so would that mean always using MED codes to access RTCC programs? [14:55:34] only internally [14:55:45] and the MCC could use the MED codes as much as possible, yes [14:56:09] for the MFD the better concept is probably to use buttons and dialog boxes for individual numbers [14:56:25] and then internally that uses the MED processing [14:57:40] right [15:09:05] interestingly Apollo 12 TEI-45 targeted a straight -165 [15:10:51] I wonder if it was just a coincidence the ATP solution gave -165, or was there EOM -165? [15:14:20] EOM target was 16.04°S 165°W [15:14:27] maybe the preferred longitude was exactly or as close as possible to -165, so they forced it just for the actual TEI on 12 [15:15:27] MPL is not at 165°W at that latitude? [15:16:40] ah I forgot how south that was [15:17:25] it used to be 165°W only for Apollo 8 and 10 only, or so [15:17:28] then it changed [15:17:35] so even if manual longitude isnt specified, MPL would find -165? [15:17:50] at LAT 16 S [15:18:02] yep [15:18:23] the target lines are customizable, which I have done for Apollo 8 so that it's only 165°W [15:18:42] otherwise it is 165°W for 0° latitude and south of it [15:18:49] ok makes sense [15:19:18] the early abort PADS on 12 must have more northerly latitudes [15:19:59] because its not exactly -165 for TLI+90, L/O +8, +15, +25, +35, +60 [15:20:44] and using the AOL target line in the RTE calculations gives almost the same longitude as the real P37 PADs gave [15:22:07] MPL target line* [15:22:15] AOL for TLI+90 [15:35:35] yeah if it varies between 165 and 175 then it should be 0° to 15°N [15:52:44] EOM targets were in some cases not on a contingency target line [15:53:01] for the line they wanted to stay clear of any landmasses [15:53:24] EOM target assumes everything has been going great, so they were sometimes closer to the recovery bases [15:53:36] like Samoa [16:07:53] right [16:59:29] morning! [17:02:46] hey Mike [17:03:05] what's up? [17:03:45] flying Apollo 7 [17:04:11] nice pic on discord [17:04:18] hahaha thanks [17:04:30] they sent that to me to check over before they finish it off [17:06:22] happy so far? [17:07:22] yes very much so :D [17:07:43] great :D [17:07:59] all the diodes that I've checked are facing the right way at least haha [17:08:10] don't see anything obviously wrong [17:08:47] diodes facing the right way, definitely important [17:09:23] also somewhat related, I realized something interesting last night [17:09:34] by dumping Sunrise 69, we also get Sunrise 45 for free [17:09:50] 2 for the price of one? [17:09:55] Sunrise 45 only had modules B21, B28, and B29 [17:10:13] for Sunrise 69 they added some new stuff (like gyrocompassing) in a new module B22 but didn't bother to update the other three modules [17:11:26] hmm [17:11:30] how does that even work [17:12:01] the only way I can think is that you can't start the new rev 69 stuff directly with an extended verb [17:12:07] right [17:12:19] directly via address and V30 [17:12:29] yeah I think you must have to use V30 or V31 [17:14:10] okay here we go [17:14:28] things included only in Sunrise 69: [17:14:36] AGC Self-Check Number Two in bank 6 [17:14:42] IMU Performance Tests 1 in bank 26 [17:14:48] and IMU Performance Tests 2 in bank 27 [17:15:10] bank 7 is also in that module but apparently has nothing in it [17:16:31] must have been a boring bank to manufacture [17:17:03] hehehe [17:17:23] it's probably actually truly unwired since Sunrise is so early [17:17:44] it doesn't have banksums yet, and there are unwired gaps between program sections [17:17:59] so I'm going to get crazy amounts of parity errors when dumping it [17:18:46] haha [17:19:06] also man we know a lot about Sunrise [17:19:18] this should be a very good disassembly :D [17:19:31] do we have procedures for it? [17:19:45] possibly, I need to look [17:19:59] but all of the Block I AGC Information Series documents were written about it [17:20:30] so we have things like this: https://www.ibiblio.org/apollo/Documents/agcis_21_system_test.pdf [17:21:03] oh that looks fun [17:25:33] yeah I'm getting pretty excited about Sunrise [17:31:34] I hope you aren't forgetting Block II ;) [17:39:41] hah, no, Block II is just complete, design-wise, so I've been working on Block I a lot the past few days :) [17:41:13] makes sense [17:41:58] for my padload work, I should do all the other CMC versions and misisons as well. It's not much additional work and I might not replace all padloads, but this process is good at catching typos as the old process was fairly manual [17:42:20] hah yes definitely [17:42:33] and I need to make the GUI prettier so I can actually feel ok with releasing it for everyone [17:42:37] sounds very similar to the process we use with program listing transcription [17:42:48] transcribe the code, transcribe the octals, fix both until they match [17:43:05] yeah, I was definitely comparing it bit by bit [20:09:09] I've been playing with some numbers and I think I have good solution for tunnel depressurization force [20:09:48] ooo [20:22:07] the challenge is, where do I do this in the code that makes it the least hacky [20:22:45] dockingprobe class? [20:23:04] or at least maybe call a function in the Saturn class from there or something [20:41:02] yeah probably [21:06:02] night! [12:43:08] good morning [12:50:02] hey [12:57:48] don't worry, I'm not looking to merge any IMU drift stuff for a loooong time [13:02:21] hahaha [13:03:11] I mean, as long as the bias and the bias compensation cancel each other out exactly [13:06:15] I would like to properly do all 3 types of drift + PIPA bias. [13:09:22] found a fun issue in early Colossus, state vector integration backwards for more than one orbit doesn't work [13:09:42] I uplinked state vectors time tagged at the the time of the Apollo 7 NCC1 maneuver [13:09:48] about 3 hours in the future [13:09:59] but if I do that and run P21 or V82 and such for current time [13:10:01] bad results [13:10:07] got fixed for Apollo 10 [13:14:46] oh interesting [13:16:11] it also means I might still not understand what time tagged state vectors even mean [13:16:45] in reality, for Earth orbit, they wanted to take drag into account as much as possible [13:16:48] which the AGC can't do [13:17:08] so state vectors should be as far in the future or shortly before maneuvers as possible [13:17:38] for NCC-1 it says it should be at TIG-12 min [13:34:51] good morning [13:36:07] hey Alex [13:39:33] hey Alex [14:52:59] is there an oapi function for supervessel center of mass vector? [14:55:11] GetSupervesselCG [14:56:57] on nice [14:57:24] what does that return if not docked? just vessel CG I hope [15:00:06] "If the vessel is not part of a superstructure, the return value is the vessel's CG, i.e. (0,0,0) " [15:00:14] it's a vessel API function [15:00:31] so the result will be in local vessel coordinates [15:00:44] with just one vessel that is always 0,0,0 of course [15:05:00] well that saves me a whole bunch of trouble [15:06:31] what do you need it for? [15:07:40] aceleration on the gyros due to angular velocity [15:09:12] ah fun [15:09:28] some LGC versions compensate for it I think [15:10:58] that would make sense [15:19:31] not for navigation it seems [15:19:38] just for measured thrust in P66 [15:19:40] PCN-1052, "P66 IMU/C.G. Offset compensation" [15:19:48] implemented in Luminary 1D [15:22:44] well that makes sense [15:26:51] its not like they were trying to make artificial gravity on the roof of the LM with sustained high pitch rates [15:32:31] of course you would have to include in your calculation that the IMU is not at the center of gravity [15:32:43] not of the LM alone either [15:32:51] docked of course not [15:33:39] there is the currentCoG variable [15:33:52] which defines the COG relative to the mesh [15:58:09] yeah. I was just hoping that I didn't need a pointer to a docked vessels cog vector. that would get messy very quickly [16:00:04] I will need to calculate the centrifugal acceleration ± linear aceleration at the location of the IMU and then transform that into the spin reference and input axes of each gyro [20:48:08] I need to draw myself a picture for this one... [20:53:07] haha [21:02:16] night! [12:29:13] good morning [13:04:02] hey [13:04:42] hey guys [13:08:00] AlexB_88, another VC error, this one in the LM. [13:08:04] ECS [13:08:10] pressure regulator A [13:08:22] where it should say "Cabin" it says "Close" [13:08:41] oh I guess this is one of the meshes from Jordan? [13:14:25] ah yes, Jordan made that one [13:14:35] I can either fix it myself or fire him a message [13:15:02] in any event once I finish my Apollo 12 MCC project I will take care of some of the VC issues [13:15:50] I do have a bit of a list right now :D [13:16:17] haha nice [15:11:55] indy91, question about the prelaunch plane change (PPC) LDPP program [15:13:06] I know for the 1st threshold time you use a time slightly before the desired time, but for the second threshold time, I think you have to use the exact time of lunar liftoff right? [15:13:32] that's also a threshold [15:13:37] I think it actually uses TH4 [15:14:29] just set all TH2 through 4 to the time [15:14:41] right [15:15:16] but for TH4, should it be exactly the liftoff time, or something slightly before? [15:15:23] before [15:15:26] because it's a threshold [15:15:34] ok [15:17:33] I keep getting confused by that one :D [15:18:28] so did the Apollo 11 FIDO [15:18:57] I need to change it so that it also outputs the time when it flies over the landing site [15:19:00] that would be useful [15:51:27] indy91, does the new pad load generator you're working on generate drift rate octals? [16:01:45] nope [16:08:53] that would be one step further where I try to get exactly the same padload as was flown [16:09:34] although that already fails with the ephemerides [16:28:52] I'm probably going to stick the actual drift rates in to mission file, unless you think I should make some sort of IMU_serialNumber.cfg [16:29:01] when I get that far [16:43:46] I'll be honest, simulating IMU drift was something extremely low priority for me [16:44:06] because either you completely cancel it out in the padload and you don't notice any difference [16:44:30] or you let it drift uncompensated partially or fully, which just makes everything less accurate randomly [16:46:06] if you want a project that makes things less accurate but actually makes a difference in the simulation it would be propulsive LH2 venting :D [16:47:00] it's quite complex as the venting depends on temperature and the temperature depends on sunlight [16:47:07] so in orbital night there was less venting [16:47:21] LVDC and RTCC simulate the venting acceleration, but in a fairly simple way [16:47:52] and that venting was the largest unknown on each mission and the biggest part usually of pre TLI state vector errors [16:48:23] but it does push up the stack by up to a few kilometers [16:55:47] do we have the LM deorbit burn EMP for Apollo 12? [16:56:22] did they use an EMP? [16:57:13] hmm [16:57:18] I think they just used P42 and its ullage [16:57:44] they had to uplink some DSKY commands I guess [16:58:18] yeah [16:58:22] starting P42 etc. [16:59:15] I have not implemented those uplinks usually [16:59:24] kind of difficult to do with timing and all [16:59:29] would be possible though [16:59:45] in the MCC I mean [17:06:29] ooo actually with some of the new systems features this could probably be done with a reasonable degree of accuracy [17:12:03] it would be a little easier with docked stages, but definitely still doable now [17:12:59] indy91, case 100 in RTCC_Mission_G [17:13:20] line 2385 [17:13:32] shouldn't that be T_INS [17:13:40] instead of T_CSI? [17:14:36] for the CSM SV update insertion + 18 minutes [17:16:26] hmm [17:16:28] probably [17:18:39] yeah that will get fixed [17:18:53] calcParams.Insertion [19:06:40] Apollo 12 ascent PAD has insertion vertical vel. of 37.0 ft/s [19:06:50] real one [19:07:06] I wonder if that should be used as the initial guess [19:07:55] yes [19:07:57] the pre-mission computed values printed on the PAD are +5533.9 and +34.4 [19:08:07] oh [19:08:30] I know it was a pretty manual process to get those numbers in reality [19:09:06] trying to get the CDH DV to zero [19:09:21] ah [19:09:29] and would depend on the actual CSM orbit [19:09:32] how elliptical etc. [19:10:20] so, not really sure what the best automated way is [19:11:40] maybe the premission value really [19:11:50] good middle number [19:13:27] I think the ideal geometry would be [19:13:41] nominal time between insertion and CSI (drives the VVERT) [19:14:00] arrives at apolune exactly at 15 NM DH under the CSM orbit (could be elliptical) [19:14:40] premission one is dated October 30, 1969 [19:14:45] the FIDO outsourced this task and a while later they came back to him with the best VHOR and VVERT numbers [19:14:49] on 11 [19:18:06] using 5533.9/34.4 does help lower the CDH DV [19:18:22] DV 1.4 [19:24:29] that's nothing [21:07:32] night! [13:30:33] hey [13:32:06] indy91, I am thinking of adding a new general PAD form: Abbreviated P30 Maneuver pad [13:32:27] what would you think of that? [13:32:47] hey Alex [13:32:54] I have a counter suggestion [13:34:00] add an integer called typed to our current Maneuver PAD [13:34:04] type* [13:34:31] right [13:34:42] and then let the PAD be calculated like normal [13:34:48] and only in the display code is there a difference [13:35:00] I actually was thinking of doing that as well [13:35:31] I had overloaded AP11ManeuverPAD() with a bool abv = false [13:35:38] but an int could work too I guess [13:35:47] just in case we find another type [13:35:51] right [13:37:06] I guess it will also need to tell the pad code not to display all the fields [13:37:28] yeah you will have to take apart the sprintf there a bit [13:37:35] so maybe add an int to AP11MNV as well? [13:37:49] to tell it which type of pad [13:37:57] uhhh [13:38:03] is that not what you did? [13:38:15] oh the function AP11ManeuverPAD() [13:38:21] I was trying to avoid that [13:38:26] no separate function [13:38:29] ahh [13:38:32] not even a separate PAD [13:38:36] ok I got you know [13:38:48] just printing less [13:39:25] just the new variable (part of the PAD) being set in the RTCC_Mission code [13:39:32] so that it only prints that part [13:39:40] and saving/loading for it [13:39:58] yeah that makes sense [13:41:13] I have already done that for the TLI PAD [13:41:51] I believe I had backwards compatibility problems though [13:45:15] because the memory for the PAD is completely nulled I believe [13:47:19] maybe I can initialize type = 1, so that normal PADs dont need to send the type [13:47:31] I believe that is the problem [13:47:35] so it doesnt break the other missions [13:47:41] initializing that doesn't do anything [13:47:45] oh [13:47:47] I think [13:47:54] it's weird memory stuff I don't understand :D [13:48:00] padForm = calloc(1, sizeof(AP11MNV)); [13:48:21] this reserves enough memory for a whole AP11MNV and initializes it all as zero [13:48:35] at no point does it call the AP11MNV constructor [13:49:01] that is a problem I want to solve though. I'd also like to e.g. keep the preburn part of the Earth Entry PAD [13:49:13] because at CM/SM sep you get the update [13:49:17] and the preburn part is nulled [13:49:25] and the preburn part has some unique values [13:51:45] how did you fix the old TLI PADs? just have every single calling of the PAD send the type? [13:53:03] sadly yes [13:53:07] but there has to be a better way [13:54:29] hmm [13:54:37] I'm seeing something on the Internet [13:54:48] if you have a e.g. TLIPAD * form [13:54:58] you can apparently do [13:55:00] new (form) TLIPAD(); [13:56:57] but that would also require changing all old maneuver PAD in the RTCC mission files [13:57:56] maybe this code should rather be in the MCC [13:58:06] where it does [13:58:07] padForm = calloc(1, sizeof(AP11MNV)); [13:58:17] right afterwards call the constructor [13:58:23] then you don't have to mess with it in the RTCC [14:00:38] I'll ask Dan about it. This is his code and he probably knows the best way [14:08:42] I wonder if I can just change [14:08:44] padForm = calloc(1, sizeof(AP11MNV)); [14:08:47] to [14:08:53] padForm = new AP11MNV [14:14:11] hmm [14:14:19] tried that on my end and seems to work [15:15:21] indy91, tried it without specifying a type and it correctly gives the full PAD [15:18:35] might be uninitialized though and would be random [15:19:27] right [15:53:05] hey guys [16:13:46] hey Matt [16:16:03] hey [16:17:35] so I am now up to LM jettison on 12 [16:17:56] time for the P42 uplink [16:42:50] "LM is targeted for an APS impulse burn. Thrust is RCS ullage only" [16:43:12] hmm so I guess its P42, but with ullage thrust only [16:43:27] indy91, any idea what the ground commands would be for that? [16:44:00] same as astronaut DSKY inputs [16:44:25] right [16:44:39] V37E42E [16:45:21] the maybe bypassing the attitude maneuver [16:45:23] or not [16:45:25] thenÜ [16:45:27] then* [16:45:39] no PRO for ignition [16:45:48] and ENTR to stop the ullage at the right time [16:45:52] ah right [16:53:02] hmm [16:53:12] so MCC has to know when to stop it [17:00:49] you are discovering why I haven't implemented any of these uplinks for e.g. the APS burn to depletions on 9 and 11 [17:00:58] 9 and 10* [17:27:03] so I am looking for a way to directly uplink without the "ready for uplink?" message [17:27:15] ah [17:27:19] UTP_LGCUPLINKDIRECT [17:37:45] aaah [17:37:51] yeah I implemented that for Apollo 5 [17:40:57] so I just need to use TimeofIgnition + burntime as a condition for the MCC [17:41:27] TimeofIgnition is saved in the impact burn calculation [17:41:43] but not burn time I think [17:41:55] I mean the impact burn is a hard-coded DV [17:42:31] I could just use a hard-coded burn time as a condiotion for the MCC to sequence to the command ullage off state [17:42:36] condition* [17:46:09] there are several times that are saved, maybe you could use e.g. calcParams.Insertion [17:46:18] if that isn't needed anymore [17:46:25] ah I know [17:46:28] creative use of the variables that already exist [17:46:31] TIGSTORE1 [17:46:39] sure [17:46:52] I will save TimeofIgnition + burntime into that [18:18:28] might need to be biased a bit since it takes a few seconds for the command to go through [18:18:39] to not over-burn [18:41:22] sounds realistic actually haha [18:41:35] like the LRV camera tilting on launch of the ascent stage [18:41:51] no wonder they implemented P99 instead of doing it with timed uplinks [18:45:57] as a cutoff backup they also tried to deplete the RCS with the deorbit burn [18:46:28] the solution with "new" instead of "calloc" will work [18:46:35] but the memory isn't getting zeroed [18:46:48] so we have to make sure for each PAD that everything actually gets written to [18:47:11] or make a constructor for the struct that zeroes everything [18:53:40] ah ok [19:02:52] so I guess its which is less work :D [19:07:00] let me check the Apollo 11 Maneuver PAD [19:07:39] already failed :D [19:08:14] the purpose and remarks char arrays are not always written to [19:11:40] so if there is a dedicated constructor those would need to be nulled [19:12:32] nothing is ever easy [19:23:00] maybe those should just be set to zero in the Maneuver PAD function [19:23:27] the MCC always puts in remarks and purpose after the call to that function [19:26:49] ah right [19:38:42] cya! [03:21:06] aaand we're back [14:05:22] hey [14:39:48] good morning [15:00:44] hey Alex [15:00:48] https://www.orbiter-forum.com/threads/bad-mesh.40735/ [15:00:52] know anything about this? [15:02:59] ah that old thing [15:03:24] one of my first projects for NASSP lol [15:03:43] not surprised if something is broken in it [15:04:14] ill take a look [15:13:33] indy91, Apollo 12 has a "photography" REFSMMAT after PC-2 [15:13:51] do you have any knowledge of what that is? [15:15:32] not much [15:16:47] let me look [15:17:14] you could hardcode it [15:17:18] we have the numbers [15:17:21] like the PTC one [15:17:58] how do you calculate the plane change [15:18:00] oooh [15:18:04] didnt know we had those [15:18:08] the SCOT doesn't have it [15:18:15] but the operational attitude sequence does [15:18:33] SCOT says "Results in an orbit that passes directly over Descartes & Fra Mauro two revolutions later" [15:18:47] so I put the average coordinates of those 2 sites [15:18:50] 2 REVS later [15:19:03] Miriam had also worked out some numbers: https://www.orbiter-forum.com/threads/apollo-12-experiences-odds-ends.40372/post-600284 [15:19:21] it gave me DVY +357 [15:19:31] https://web.archive.org/web/20100519224711/http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19800073791_1980073791.pdf [15:19:35] FP is +360 [15:19:38] sorry [15:19:41] wrong link [15:20:37] https://web.archive.org/web/20100524044618/http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19740072788_1974072788.pdf [15:30:22] thanks [15:31:17] that other one seems like an STS doc :D [15:33:30] ha [15:33:38] I was looking at the way they are simulating the RCS [15:33:50] same way as they did it in the 25 fps Apollo simulators [15:34:01] to be able to resolve RCS firings that are even shorter than that [15:34:34] I have a branch for that from a few months ago [15:35:18] when the LGC requests jets on or off it would give the current AGC time and stores it [15:35:35] that is the time from within the loop that does the AGC cycles [15:36:15] so if the AGC would requests jets on for exactly e.g. 15 milliseconds then you would get an impulse from the RCS that is correct for that command [15:38:34] right now we have the problem that these short commands aren't properly resolved [15:38:45] I often run at 144 Hz, it's not such an issue there [15:39:28] at 60 fps it's already a problem because one timestep is already a bit longer than the shortest RCS command you can expect [15:40:16] so either: AGC commands engine on/off within one timestep, so the RCS simulation never sees that a thruster was commanded on [15:40:41] at 60 fps that isn't very likely, but can happen. Worse framerate more often [15:40:53] also the reason why the minimum impulse hand controller in the CSM isn't quite working right [15:41:36] more like is that you get a jet on command for exactly one timestep, however long that is [15:41:40] likely* [15:41:53] for that case I had done a bit of work 1-2 years ago [15:42:00] made the behavior a bit better [15:42:37] the RCS has jet-on and jet-off delay. And off delay is short. So for one 15 millisecond command you would only get thrust for about 10 milliseconds [15:42:42] shorter* [15:43:21] so hopefully, at least for AGC commands with precisely timed commands, I can make the behavior better. Especially with the ascent stage the RCS propellant is really going down quickly. [15:45:40] ah I see [15:46:13] I used to run at 144hz, now back to 60 [15:46:27] if I do it right we could even use 10x time acceleration with AGC att hold, maybe [15:47:19] yeah with the ascent stage 144 is really helpful [15:47:29] noticable difference with attitude holding to 60 [16:39:49] do the matrices in the doc need to be converted? [16:39:58] or just transcribed as is? [16:41:38] transcribed as is [16:41:47] the AGCDesiredREFSMMATUpdate function has an optional parameter [16:41:59] AGCCoordSystem [16:42:03] by default it is false [16:42:16] but this REFSMMAT is already in the right coordinate system, so it would be true [16:42:23] ok [16:42:26] like the Apollo 11 PTC REFSMMAT in the MCC for that [16:42:58] I am calculating it ahead of time and storing it in LCV [16:43:12] since its needed by TEI-41 which is a bit before the uplink [16:45:55] yeah [16:46:02] plenty of REFSMMAT slots available for storing :D [16:47:42] as long as the ID is non-zero it will get saved/loaded [16:48:51] you could even use MED G01 I think [16:48:58] and call GMGMED with it [14:16:03] hey [14:29:36] hey Niklas [14:53:57] about the abbreviated P30 PADs, have we decided what is the best way to proceed with that? [14:54:55] right now I have it set to padForm = new AP11MNV; [14:55:41] I guess we were talking about adding some code at the end of AP11ManeuverPAD to initialize remarks to 0 [14:56:22] and I guess also type to 1 [14:56:51] and then those 2 can be over-written by any individual case [14:56:54] type is an option for the PAD, not an output [14:57:03] hmm [14:57:08] well, not really I guess [14:58:02] let me go through the whole list [14:58:14] yesterday I stopped where it already was a problem [15:02:02] ok, my suggestion [15:02:29] purpose, remarks and type are the only variables currently not being set to something in the AP11ManeuverPAD function [15:02:39] so do sprintf(remarks,""); [15:02:44] for the two strings [15:02:56] and setting type to 1 is also fine [15:03:07] add those 3 lines at the very end [15:03:13] ok [15:03:14] and then we don't need an extra constructor [15:03:18] right [15:03:27] because everything will be initialized with something [15:03:39] I checked, even the sextant star check stuff if it doesn't find a star [15:03:43] all set to 0 [15:04:23] maybe there should still be a constructor so I don't have to null stuff manually in ARCore [15:04:28] but it's not required then [15:05:38] what I can do is make a PR with the modified AP11MNV directly to the main branch [15:06:13] sure [15:07:19] hmm wait [15:07:30] there is the additional issue of freeing the memory [15:08:20] yeah, I think there could be compatibility issues [15:08:28] calloc and free [15:08:29] new and delete [15:08:42] kind of have to go together like that... probably [15:09:03] which causes an issue as the memory is freed the same way for all types of PADs [15:11:29] yeah I think this is a problem [15:12:28] you might to have change ALL PADs to new and delete and make sure there either is a constructor nulling everything or it all gets written to anyway [15:12:56] dang [15:15:29] different solution [15:15:30] no new [15:15:36] no nulling stuff in the function [15:16:47] padForm = calloc(1, sizeof(AP11MNV)); [15:16:54] below that, maybe set the type there [15:16:59] so everything else will be nulled [15:17:04] ah [15:17:10] ((AP11MNV *)padForm)->Type = 1; [15:17:12] like that [15:17:15] not super elegant [15:17:25] but definitely a smaller change [15:17:38] right [15:17:46] hmm [15:17:54] potentially I already find an issue with that... [15:17:57] found* [15:19:08] no, should be ok [15:19:30] I thought that maybe it re-allocates the memory when you let it display the PAD again after not showing it [15:19:41] so not re-calculation, just printing it on the screen again [15:20:25] but it should survive that [15:20:34] like the rest of the PAD not getting re-calculated, just shown again [15:29:12] right makes sense [15:29:19] Ill have the PR shortly [15:29:45] already had the PAD display changes done a few days ago [15:32:01] did you already change the code in drawPad? [15:33:47] yeah thats what I meant [15:36:08] ah, I was thinking about the Maneuver PAD function [15:36:54] no didnt touch that [15:37:26] yeah, doesn't need to now, with this solution [15:37:49] just testing the changes [15:46:57] indy91, PR sent [15:49:13] looks good, I'll wait with merging though, maybe someone else has an opinion [15:51:38] ok [15:52:03] ill just have the type commented in my Apollo 12 MCC code in the mean time [15:53:46] who else should I add as reviewers? Thymo? [15:54:13] ah I see it was done already haha [16:17:34] indy91, question for you: Do you think they would have delayed lunar liftoff one rev, had PDI-2 been performed, so that lunar stay time stays the same? [16:18:00] or would they have stuck to the schedule? [17:07:50] I don't think they would have stayed longer [17:11:48] right [17:12:25] Apollo 16 might not be 1:1 comparable [17:12:33] longer lunar surface stay over all [17:17:49] in Apollo 12 MCC it always has nominal lunar liftoff on the same rev, PDI-1 or later [17:19:47] but like Apollo 11, it supports scrubbed liftoff, recycle to next rev [17:21:35] events right after landing of course need to be scheduled relative to actual landing [17:21:43] and all the post rendezvous stuff like up to the sleep period, after the deorbit burn is relative to lunar launch time, so it should all work no matter what rev [17:21:46] maybe they could have used a sleep period to catch up [17:22:33] yeah exactly what my thinking was too [17:23:02] I did the same for post-landing, everything up to the sleep period is PDI-relative [17:24:32] might still be worth it to look up how Apollo 16 handled it [18:15:26] hmm [18:15:52] dont think im very satisfied with this hard-coded photography RESFMMAT [18:16:52] with 0 roll, the CSM is rolled right ~25 degrees from LVLH [18:17:19] im thinking this was pretty trajectory-dependent [18:20:07] maybe I got the order wrong [18:35:06] ah I think I did [18:35:43] I transcribed each of the 3 blocks top to bottom instead of left to right [18:43:08] aaah [18:43:24] yeah the Orbiter MATRIX3 is rows [18:43:26] not columns [18:44:00] like you would write it. Left to right, next line. Left to right etc [18:44:28] but this gets confusing with so many RTCC matrices [18:44:39] especially when it creates a matrix out of 3 vectors [18:44:52] never can tell which order they mean [18:46:32] yeah [18:51:50] at least you learned something about rotation matrices and the Orbiter API :D [19:12:05] so I store the REFSMMAT into LCV [19:12:22] and the uplink is part of a separate case [19:13:03] indy91, does that mean I still need AGCCoordSystem=true? [19:13:29] oh [19:13:53] ah that's a bit of a problem [19:14:15] if you store it directly and then use normal uplink functions then it will convert it from ecliptic to AGC [19:15:37] internally in the RTCC the REFSMMAT needs to be in ecliptic coordinates [19:16:18] if you do nothing else with it other than uplinking then you could still store it normally and then uplink with AGCCoordSystem=true [19:17:24] ah you are using it [19:17:50] that's why I hate these coordinate system differences... [19:19:15] this is how I have it now: [19:19:17] https://www.dropbox.com/s/8pnsxsi1tramdv4/Screenshot%202022-09-27%2015.18.13.png?dl=0 [19:20:23] I would suggest to do this [19:21:02] REFSMMAT = mul(REFSMMAT, SystemParameters.MAT_J2000_BRCS); [19:21:12] right below where you hardcode the REFSMMAT [19:21:23] and from then on treat it like a normal RTCC REFSMMAT [19:21:28] so no AGCCoordSystem [19:21:45] this converts it from BRCS to J2000 [19:22:03] that's what the function GetREFSMMATfromAGC does when it gets the current REFSMMAT from the AGC memory [19:22:11] and atke out that 2nd true [19:22:14] take* [19:22:34] yep [19:23:22] thanks [19:24:50] no problem. This should be the easiest way [19:25:09] ill know for sure it works if the pitch on the TEI-41 is close to 092 :D [19:26:34] haha [19:28:49] ughh [19:29:25] lol, I had it stored on the LM LCV by mistake [19:29:50] thats what happens when I blindly copy/paste [19:32:38] perfect 092 :D [19:33:03] which is what the real TEI-41 pitch was [19:33:41] interestingly, on 12 they did not give roll or yaw values on the abbreviated PADs [19:42:11] so even more abbreviated :D [19:50:37] but I guess this means you couldn't do this TEI burn with the SCS [19:51:02] yeah [19:51:14] would also need GDC align angles for a GDC alignment completely independent from the CMC [19:51:34] you'd think it be useful to have the 2 other angles in case of PGNS failure [19:52:15] well at least yaw [19:52:46] maybe the rationale is, you only use this PAD if you have complete loss-of-comm with Earth [19:53:00] if you completely loose comm, you need P37 and P23 or you are screwed [19:53:20] so PGNS broken and comm broken means you never come back [19:54:09] so no need to support the SCS with that PAD [19:56:01] you can still revert to the SCS during the burn [19:56:19] just needed the PGNS to work in the first place [20:01:07] I think if I had no comm/PGNS i'd burn it anyway with SCS and 0 yaw, and then use the time during TEC to try and fix my PGNS for the P37 [20:04:38] makes sense [20:05:24] but first you would need an alignment [20:10:41] right [20:10:52] I would hope my GDC alignment was still good [20:11:23] btw I think the photography REFSMMAT is a LVLH at a certain time, or longitude [20:11:58] maybe there's a way we can calculate it dynamically [20:14:23] I think it's a LS REFSMMAT [20:14:29] for one of the photo sites [20:14:38] I think I tried reverse calculating it at some point [20:14:56] but it came down to which updated landing site coordinates it would use [20:16:14] ah [20:16:22] ill be back in a bit [20:18:25] I won't [20:18:30] good night! [14:57:06] hey [14:58:02] hey Matt [15:00:08] you wouldn't happen to remember why back in prehistoric-NASSP we disabled hVent thrusting? [15:07:21] hmm not sure really [15:23:05] I'm going to use them for SIVb propulsive hydrogen venting. [15:23:54] looks like we don't really use this system much so risk of breaking things is very low. [15:46:38] hey Niklas [15:48:55] hey [15:50:10] hey [15:52:23] is the new Apollo 12+ TEI REFSMMAT possible to use from MCC? [15:55:48] hmm [15:56:00] you would probably have to use the AST and RTED functions instead of RTEMoonTargeting [15:56:22] RTEMoonTargeting will get removed at some point, it basically only exists still to make that targeting easier for the MCC [15:56:37] right [15:56:47] maybe ill wait until those get updated [15:57:05] or removed [16:01:52] in the mean time I can make a heads-up preferred REFSMMAT, with heads-down in maneuver pad options [16:02:10] means the attitude is a bit off of course [16:02:49] unless I bias the DV vector a bit [16:03:25] hacky of course, but it will all be replaced one day once I see how you improve Apollo8,10,11 MCC TEI's [16:07:57] I would just do it like it's already done for the RTCC MFD in ARCore [16:10:33] or the MED [16:20:21] yeah the input methods for so many RTCC functions are not very "user" friendly and by that I mean how they are called in code [16:20:25] or very consistent either [16:21:12] I have been changing my mind about 12 times over the years how that sort of interface should best look like [16:34:07] haha yeah, at least with code there is much more flexibility in what you can do from MCC standpoint [17:32:55] indy91, I started work on some SIVb H2 venting code, having a bit of trouble finding accurate positions for the vents though, you wouldn't happen to know of any documentation on this? [17:34:06] well my Apollo 12 MCC branch is basically done [17:56:47] AlexB_88, nice! [17:56:51] n7275, I'm sure I have something [18:41:50] actually not easy to find [18:47:04] http://www.apolloexplorer.co.uk/pdf/saturnv/Third%20Stage.pdf [18:47:19] PDF page 3 [18:47:26] forward skirt assembly [19:03:43] ahh okay. that's probably good enough for what I'm doing. [19:06:10] I was trying to find a station number in the Saturn V coordinate system [19:06:22] that would at least give a very precise number in one axis [19:06:33] are these stages created at the stage separation event and do any of these stage classes exist inside of the staurn class? [19:07:52] they do exist [19:07:58] put it all in SIVB500Systems I guess [19:11:04] okay. so this should be able to work pre and post sep without too much trouble [19:14:01] I don't know about thrusters [19:14:28] that would need to be defined in sat5mesh and the separate S-IVB class I guess [19:14:56] just look how the LOX vent is handled [19:15:13] SIVBSystems::Timestep first checks if that thruster is even defined [15:29:39] good morning [15:30:33] hey [15:33:31] I fixed a tiny little bug in OpenOrbiter yesterday so we're like 0.0001% closer to a release [15:38:39] haha [15:38:49] what was it? [15:42:40] in the atmosphere config menu, when you selected a different model or planet, windows gives Orbiter a pointer [15:43:04] because OpenOrbiter is 64 bit, it's a 64 bit pointer [15:43:18] which Orbiter was casting to an int32 [15:44:14] and then back to an int64 [15:45:15] ha, fun [15:45:20] OpenOrbiter is 64bit only? [15:45:27] so it if the module in question was loaded in a low memory address, and the upper half of the uninitialized re-cast pointer was all 0s it would work [15:46:22] it can be build as either 32 or 64 with a cmake config change [15:46:24] there are some ifdefs [15:52:27] but at some point windows will obsolete 32 bit applications, so getting 64 bit. builds working was a big priority for Martin [16:17:06] I think I found my way through the Saturn class at least enough to impliment this venting feature [16:17:56] how are you simulating tank pressure etc? [16:21:37] prior to separation it will be with the simplified method we use now for the pressure indicators in the CM, but post separation, it'll just be an hTank with some hydrogen in it [16:22:08] uhh [16:22:14] prior to CSM separation? [16:22:53] the only phase where the LH2 venting acceleration is relevant for us is between orbital insertion and TLI/or CSM sep [16:24:46] ahh I was thinking the biggest impact would've been on the Apollo 7 rendezvous... [16:25:09] Apollo 7 had an unscheduled vent that they could not fully explain even after the mission [16:26:14] well that changes my strategy a bit then [16:26:44] I don't think the S-IVB-200 series even had the CVS nozzles [16:26:54] except for AS-203 [16:27:23] but that mission of course was a lot lighter than a S-IVB-500 in Earth orbit because most of the propellant was already burned [16:27:33] oh how I want for a docked-stage Saturn 5... [16:27:45] so they used a different system to get similar thrust as a Saturn V S-IVB would [16:28:19] so yeah, I was talking about the Saturn V only CVS [16:28:35] gotcha [16:30:06] all S-IVB had the non-propulsive vent systems [16:30:22] that is what might have actually been a bit propulsive on Apollo 7 [16:30:33] there were several vents there [16:30:42] I can do the same thing with the tanks, just need to do it in a different place [16:31:41] wonder if it was ice on a vent causing asymmetric non-non-propulsive venting [16:31:46] you might want to start with simulating LOX and LH2 separately [16:31:53] yeah [16:32:00] but that's where I stopped thinking about it because it became too complex :D [16:32:58] we should have really accurate boiloff pressures now, so in some aspects it might be even simpler than what we have now. [16:33:43] right now it just randomly does a percentage every 10 seconds or os [16:33:45] so* [16:34:21] I'm sure I can make that a bit more deterministic :) [16:35:02] it will depend on LH2 propellant left [16:35:16] I think the O2/H2 burner can be done as a separate case [16:35:23] can come later [16:35:36] LVDC will switch on/off the CVS [16:36:08] but that's already sufficiently simulated I think [16:37:36] oh they did figure it out [16:37:46] "The deviation in the S-IVB orbit was caused by a series of unscheduled LH2 nonpropulsive [16:37:47] vents which impinged on the open SLA panels." [16:38:01] from the Apollo 7 S-IVB evaluation report [16:38:38] very interesting [16:38:45] don't think the mission report mentions this [16:39:14] nice job with inter-center communication :D [16:40:15] but good to finally know the reason [16:40:46] this made the 2nd phasing maneuver by the CSM necessary [16:40:55] and with this information we could even simulate it [16:41:07] simulate NPV and check on the SLA state [16:41:17] in theory, let's not do that just yet [16:44:01] but the NPV might still be something you need to implement for the pressure simulation [16:44:26] I'll have to check if our LVDC consistently on all missions opens and closes the right valves for that [16:49:13] actually, trajectory wise, the mission where the CVS really matters is Apollo 9. The lunar missions are higher at TLI but after TLI that doesn't matter much. Apollo 9 stays in Earth orbit though and on Turry's mission we once again saw that the initial orbit is too low at SPS-1. [13:21:19] good morning. [13:25:14] hey Matt [13:25:24] got my wall of text yesterday? :D [13:29:12] oh? [13:29:36] not sure what you mean [13:31:29] about Apollo 9 and the CVS? [13:31:34] yeah [13:31:42] no [13:31:45] Apollo 7 [13:31:47] mostly [13:32:46] after you said "I'm sure I can make that a bit more deterministic :)" [14:04:18] ooooooh [14:04:21] yea [14:04:37] I'm a bit slow this morning [14:05:11] good info [14:09:12] I made about 6 commits last night, doing and undoing various ideas. I will probably squash those before pushing... [14:09:51] "no one needs to see this mess" [14:11:30] so in the long term we probably want two NPV thrusters and two CVS thrusters [14:11:42] NPV thrusters going to the sides and cancelling each other out [14:11:55] only in the special case of Apollo 7 not [14:12:04] and CVS thrusters only on the S-IVB-500 [14:13:14] there are some plumbing diagrams in the Saturn systems handbook that seem to imply the coëxistence of both on 500 vehicles [14:13:20] is that incorrect? [14:14:20] the NPVs are regulated to open at higher pressures though according to the diagrams [14:14:38] yeah, non-propulsive vents are on all S-IVBs [14:15:54] okay. [14:19:38] CVS only on Saturn Vs [14:19:45] and an experimental version on AS-203 [14:53:42] Apollo 7 landmark 141, can't see a thing of it [14:54:01] junction of two runways [14:54:19] airport still exists, but textures not high res enough it seems [15:02:17] oh I remember trying to find the 3 pixels that represent that one [15:02:29] in Brazil right? [15:05:48] https://i.imgur.com/iakJFWa.png [15:06:03] yeah [15:06:24] haha yep that's the kne [15:06:41] s/kne/one [15:07:21] I don't think I'll change the landmark that we use for 7, it's really just a question of texture quality [15:07:37] if that is good enough you would be easily able to spot it [15:49:56] it looks like Martin has a branch up for adding star color/spectral type [15:54:31] should make picking stars out visually a bit easier [17:42:12] the surprising thing there for me is that Martin still has branches [17:49:09] he popped up about a few months ago and has been making commits like it's his day job [18:29:46] oh, commits all over the place or working on specific features? [18:43:38] looks like mostly bugfix stuff and untangeling the dx7 client from the core [18:44:15] d3d9 now builds with the main Orbiter repo [20:40:13] night! [13:39:33] hey [14:07:35] hey Matt [15:26:36] well I got myself the old coarse align errors [15:26:42] prepared to try and debug it [15:26:55] got some scenarios that should help [15:27:24] but where to start. IMU code, Virtual AGC, Colossus code... [16:36:14] good thing I haven't tried to push my IMU bugs-- err, features yet :) [16:52:02] ha, well, probably wouldn't make it any worse [16:52:16] I'd like to solve this before saving many more Apollo 7 mission scenarios [16:53:12] probably a good plan [16:54:32] potentially futile plan if it's really difficult to figure out [16:57:06] what [16:57:14] this time the alarms didn't happen [17:01:06] 3 times in a row no alarm [17:01:16] didn't change the procedure [17:01:30] great start to the debugging [17:07:10] oh no [17:09:04] now I got it again [17:09:49] only failed to drive the IMU all the way in roll [17:09:55] pitch and yaw are right [17:11:05] potentially it is caused by when exactly I am changing the optics switches [17:11:15] that's the only thing that was any different [17:15:32] oh potential clue [17:15:49] when the issue is not happening then I only get positive pulses to the IMU [17:15:54] 000023.901: DRIVECDU index 2 RegCDU 34 cducmd 30 pulses 14000 [17:15:56] like that [17:16:05] but then I got the program alarms I see something like this [17:16:10] when* [17:16:18] 000035.411: DRIVECDU index 0 RegCDU 32 cducmd 40030 pulses 37777764000 [17:16:44] that doesn't look healthy [17:16:57] maybe some sort of issue with signed vs unsigned in IMU code... [17:17:40] could just be the way it is printed [17:17:56] yeah [17:18:09] %o in printf will always output something like that, I think [17:20:00] I'm always a bit suspicious of debug prints [17:20:39] yeah [17:20:50] still, that was the difference between a failed and a succesfull coarse align [17:21:09] one had some negative pulses [17:21:17] successful only had positive [17:25:24] I can see that it's driving roll in the first direction at first [17:25:31] wrong direction [12:18:59] good morning [15:30:33] hey [15:32:23] so I have figured out one thing. In P52 option 1 or 2, when the new attitude comes up it also moves the FDAI error needles [15:32:51] if I press PRO too quickly, while the AGC still outputs FDAI attitude error commands then I always get the coarse align error [15:33:23] it's like it reacts too slowly to change the type of data it outputs, error needle vs. coarse align commands [15:51:12] morning! [15:51:15] oh that's interesting [15:55:12] hey Mike [15:55:21] yeah, need to do some more testing if it always happens [15:55:37] somehow I can't believe that this was the issue all along that lead to those alarms [15:56:26] it could be an issue in the strange and old special code for coarse aligning [15:56:36] I'm sure it wouldn't happen in your Virtual AGC update :D [15:57:46] hehehe [15:58:04] so you don't think this was an issue with the real thing? [15:58:32] well, probably not [15:58:41] I'll check multiple scenarios and ropes [15:59:06] it also depends on the way you have your DAP attitude error set up probably [15:59:13] verbs 60 to 62 [15:59:51] with V62 it shows proper attitude error, not current DAP error [16:00:04] that gives you larger deflections on the needles [16:00:09] takes more time to drive them [16:01:36] it only happens if the yaAGC code (BurstOutput) is still in the process of outputting attitude error data for the FDAI [16:01:43] and then you press PRO and the IMU coarse align starts [16:03:02] it basically uses the last commands that were only meant to drive the FDAI attitude error [16:03:15] and uses them for coarse align in a potentially wrong direction [16:04:30] hmmmmm [16:04:34] interesting [16:05:40] oooooh [16:05:46] you know why it never happens in later ropes [16:06:00] because it gives you the option for coarse align vs. pulse torque [16:06:11] so there is no chance to PRO too quickly and start the coarse align [16:06:21] because there is another display in between [16:07:22] we have never seen it after Apollo 9 for precisely this reason [16:07:49] oh! [16:07:55] yes that makes sense :D [16:09:57] if you look at BurstOutput, it does not "count out" all the commands at once, it saves them in CountCDUX etc [16:09:59] using DriveCountSaved [16:10:09] so it can take time [16:10:37] if it starts a coarse align while that still happens then it doesn't stop sending out the rest of the commands [16:11:04] I mean, I am not 100% sure of course this isn't correct behavior [16:11:11] but I would be kind of surprised if it was [16:11:31] I have looked at the order of commands with ICDU enable, coarse align etc, that looks about right [16:12:09] I bet you would want to just rewrite everything about BurstOutput :D [16:12:43] oh yes [16:12:51] I strongly want to replace all of that nonsense with real counters haha [16:15:16] you kind of already did... [16:15:46] it was just me refusing to break all the AGC I/O apart and build it up again :\ [16:18:33] hehehe [16:18:37] we'll get to it someday [16:21:19] yes [16:21:31] but before someday, I'll try to figure out if I can fix this current issue somehow [16:21:43] or find out more about it [16:23:23] maybe I should finally make the push and handle ICDUs correctly [16:41:28] what's the state of the rope reader? You haven't written here in a few days, I was already suspecting that you would just dropped the finished product on us [16:54:09] haha sorry, was on vacation [16:54:14] the board is being delivered tomorrow [16:54:37] and if things go well I *might* have a chance to read the first module(s) with it a week from today [16:55:33] also, I'm placing the order for the Block I backplance PCB right now [16:55:47] and hopefully will get the order out for the aluminum chassis for it tonight [16:56:06] *backplane [16:59:35] wow a week from today [16:59:57] I know it's as optimistic as an Artemis 1 launch window, but still :D [17:00:10] I hope you had a good vacation [17:00:14] I hope it wasn't Florida [17:01:52] it was not haha [17:02:08] we were camping along the coast of Lake Superior [17:02:13] and it was very nice :) [17:02:53] sounds very nice. Temperatures still good for that sort of thing? [17:04:09] we've had about a week transition period from too hot too dry summer to all day rain, cold autumn... [17:06:21] would not really want to do camping in either haha [17:08:46] yeah it was great [17:09:20] it was a bit cold but not too cold [17:09:37] the first couple of days were rainy a bit but then it was crystal clear after that [18:04:56] yeah not sure I can do much about this coarse align issue without rewriting a lot of things [18:05:16] the "pulses" are sent out 8x slower than realistic to make it behave nice without the IMU having inertia, it seems [20:21:38] night! [12:42:09] good morning [12:44:11] hey Matt [12:45:12] did you get any further with the S-IVB vents or still mostly in the R&D phase [12:49:18] still R&D [12:49:42] I want to make sure I don't do anything that needs to be undone later [12:53:01] since both the Saturn class and the SIVB class have a sivbsystems class, I think it makes more sense to put the SIVb PanelSDK stuff in there [12:54:36] for the separate S-IVB there already is a systems config [12:55:48] yes. that's what I added my tanks to [12:55:51] it's probably tricky to "sync" the PanelSDK tank to the propellant state [12:56:12] might be a template for other systems though, like APS and DPS [12:57:32] I wonder if it would be possible to keep the PanelSDK stuff intact when it changes vehicles at CSM sep [12:57:44] there are vessel pointers to consider [12:58:29] yeah I wondered about that. just exchange pointers to the same tank objects [12:58:56] s/tank/system [12:59:00] how I did that with the IU is not a very good system... [12:59:53] a cleaner system would probably be separate stages for everything. [13:04:06] which as scary as that sounds would probably reduce a lot of complexity. a lot of stuff already communicates between classes by pointer. [13:05:24] yeah, I feel like the only big downside to doing it that way is aerodynamics [13:07:11] that is much easier to get right for the whole vehicle if it's one vessel in the simulation [13:11:33] I think the way to do that is to pick one vessel as the "aerodynamics vessel" and disable forces and moments in the others [13:13:45] yeah, probably the smart solution [13:14:15] it wouldn't allow for any unknown combinations or vessels docked together [13:14:21] but we don't really have that with Apollo [13:15:46] of vessels* [13:17:42] before I enable 100% of orbital drag that might be something to revisit though [13:17:49] Apollo 9, CSM+LM docked together [13:17:51] yes [13:18:23] right now if CSM+LM are in the least draggy attitude they would still both have normal drag [13:18:29] individually [13:18:38] which is then about 2x too much drag [13:24:00] Orbiter feature request: supervessel aerodynamics :D [13:28:01] we're clearly on the same wavelength. I was just looking at the SuperVessel.cpp file lol [13:34:56] haha [13:43:41] I have a local branch with a CM class that I started a few days ago more as a placeholder than anything else, but after I finish this hydrogen vent project I'm going to experiment with it a bit [13:45:59] a CM only class? I think my approach to this would be to go stage by stage. Implement everything the S-IC needs to do in the S-IC vessel, change all launch scenarios to be S-IC+rest docked together, delete S-IC stuff from Saturn class [13:46:02] same with S-OO [13:46:04] S-II* [13:46:08] same with S-IVB [13:46:16] and then rename the Saturn class CSM class [13:46:30] that would be an incremental approach, but yours could work too of course [13:48:30] I was thinking of doing it the other way around. leave the Saturn class intact and build replacements "outside" of it. then we could have versions that don't break older scenarios but still impliment a docked Saturn stack in the launch scenerios [13:49:07] yeah, makes sense [13:50:12] and one beautiful day we press the delete key for the Saturn class [13:56:20] hey [13:58:04] hey Alex [13:59:24] indy91 that should probably be the same day we switch to 9.0 Alpha [14:15:51] hey Alex. Yeah I think NASSP 9 is a looong time away lol [14:26:24] haha yeah [14:42:47] although one of us is already working on features that I thought would be in NASSP 9 [14:42:51] right Alex? :D [14:46:03] :) [14:51:31] haha [14:52:41] I think the VCs were also supposed to be for 9 [14:54:53] I don't think there was an plan for a specific version to have the VC [14:55:18] but having the VCs in 8 is great [15:46:04] morning! [15:46:43] hey Mike [15:46:53] indy91, have you looked at the Apollo 12 MCC PR a bit? [15:53:01] its been up for a few days now, I had posted it right before going to Florida for 3 days :D [16:31:46] I can give it a quick "look at the code" review [16:37:19] yeah I am sure it's fine. The RTCC and MCC sections are too large to review line by line [16:37:26] I'll just direct all complaints about it to you [16:39:58] your ascent PAD solution is not so ideal, I think [16:40:15] is it really so different to the Apollo 11 one that it can't use the same PAD [16:40:24] maybe with the "type" variable again? [16:40:31] ah, right [16:40:47] yeah I can do that [16:40:55] let me check the differences [16:41:06] and initialise the type the same way as the maneuver pad [16:41:27] it has a dedicated section for next rev TIG [16:41:30] 465 [16:41:39] and CSM/LM weights I think [16:41:54] right [16:42:15] I would say, call the Apollo 11 Ascent PAD function [16:42:25] and then add the additional numbers to it [16:42:34] in the Apollo 12 RTCC code [16:43:06] also a not so visible difference, the word "DEDA" isn't present on Apollo 12 ascent PAD for each of the DEDA fields [16:43:30] sure, I can do that [16:43:32] ah, that's a bit annoying for the display code [16:43:57] I mean, its not so important to not have "DEDA" [16:44:29] you know, if you want we can keep it as it is [16:44:39] we can make it better later [16:45:57] sure [16:47:51] they really changed the Ascent PAD around [16:48:04] Apollo 13 is different again, has TPI instead of next rev TI [16:48:07] TIG [16:48:22] 13 through 17 mostly similar, but no CSM weight and CSM orbit instead [16:48:25] for 17 [16:54:31] one thing I want to do is have the TEIs use the AST/RTED [17:18:09] yeah I haven't tried that myself yet [17:18:40] I wonder if it would be easier for the MCC to use the MED format, even if it would be quite long inputs [17:19:13] the alternative would be to populate a lot of RTE constraints table (PZREAP) data and then call the AST function [17:19:59] hmm of course only the MED isn't enough [17:20:05] that would only work the MPT... [17:22:14] it feels like half of the RTCC code only exists to deal with state vector processing that would not be required if the MPT was initialized and an ephemeris was available :D [17:26:37] I think I have it working to the point where it puts a solution on the AST, and RTE digitals [17:26:53] ah nice [17:27:10] I cannot use EntryResults however, to give the data to the PAD/uplinks [17:27:13] I was just looking at it, if it makes sense to put any data in the MED F77 struct [17:27:24] so I guess I have to directly pull the data from the RTED [17:27:37] best from the table that also supplies the MPT [17:27:47] let's see, where does it end up... [17:28:53] PZREAP.RTEDTable [17:29:01] that has two columns [17:29:11] GMTI is the TIG in GMT [17:29:16] DV_XDV the DV [17:29:30] should be seconds and m/s [17:29:52] inconsistent as I am, there are parts that already use the correct units of hours [17:29:55] but mostly not [17:30:33] but yeah, if you calculated the primary column, PZREAP.RTEDTable[0] will have all the display and data for the MPT [17:30:56] perfect [17:31:18] the only thing I think missing would be the RTGO [17:31:26] for the final TEI pad [17:35:49] hmm, yeah, annoyingly that is not calculated for the RTE Digitals [17:35:54] it could be [17:36:05] it already simulates the reentry with CMC guidance [17:36:15] all it would need to do is store the number [17:38:11] in reality, after the RTE Digitals was calculated, they moved the maneuver to the spacecraft setting, which is like a mini MPT with one maneuver and lots of options and displays for reentry [17:39:06] Retro Elapsed Time Display has some EMS numbers [17:39:30] but we don't have that yet [17:41:35] might be overkill, but maybe let it calculate the lunar entry PAD [17:41:40] and just use the one number :D [17:42:17] right [17:43:45] I really need to just go through the whole RTCC and convert everything to the latest stuff, like using EphemerisData instead of SV [17:43:55] there are so many layers, so many unnecessary conversions.. [17:55:48] hmm [17:56:07] BU PETIR LV HB1 [17:56:12] is that .05G time? [18:02:59] that is 3 different things [18:03:08] BU means the backup reentry mode [18:03:35] HB1 is constant G [18:04:10] further down the lat and long IPB is impact prediction for the backup reentry mode [18:04:52] PETIR is EI time I believe... [18:05:06] LV is lift vector [18:05:19] shows 0.0 for 0.0° roll [18:05:31] so BU = HB1, PETIR = a time, LV = 0.0 [18:06:37] ah ok [18:07:16] PET is phase elapsed time [18:07:23] Ill use RMMYNI to get 0.05G time/velocity and RTGO [18:07:34] ok [18:07:55] it needs Earth-centered true coordinates, so there needs to be a conversion like in the Lunar Entry PAD [18:08:23] ok [18:08:26] 0.05g time is actually stored [18:08:29] RollPET [18:08:59] maybe we should just change it to also store the RTGO [18:09:06] then you don't need to add anything, only access the data [18:10:24] I think that is the best solution [18:10:29] at the end of struct RTEDigitalSolutionTable [18:10:38] add RTGO as a new double [18:11:06] in RTCC::PCRENT, there are a lot of variables nulled at the top. Null it there, too [18:11:12] ah ok [18:11:29] does it give .05G velocity? [18:11:49] yep [18:11:53] hmm [18:11:58] might need to be stored, too, then [18:12:15] great... [18:21:17] so I added the RTGO double [18:21:38] I guess that needs to be written to in PMMREDIG? [18:21:40] this is all stuff I will need to delete again when the spacecraft setting calculations are properly implemented [18:22:42] the next layer of temporary variables :D [18:24:27] PCRENT is the function with the RTE reentry calculations [18:25:36] you know, I don't really want these new variables after all [18:25:53] it's like moving the RTE in one direction, already knowing you need to all take it back again [18:27:01] I mean I can just use some of the entry PAD code in the TEI case for Apollo 12 [18:27:31] then it should be easy to change it again later [18:28:15] hmm ok [18:28:52] I can offer no easy solution haha. I just need to implement every RTCC feature ever already, then we can use it properly [18:35:16] until then, we will have the layers of intermediate solutions that I am annoyed about [19:35:47] hmm maybe I will just omit the VI0 and RTGO for now [19:43:19] actually [19:43:30] I think I got it working with RMMYNI [19:51:00] ah nice. Where did you get the EI state vector from? [19:57:37] https://www.dropbox.com/s/zzha8zzyrr307i2/Screenshot%202022-10-03%2015.56.52.png?dl=0 [19:57:54] easier just to show the code :D [19:58:03] took it from the entry pad function [19:58:26] messy of course [20:05:43] potentially you could also get it from the AST solution [20:05:51] PZREAP.AbortScanTableData [20:06:05] that has sv_EI [20:06:16] oh [20:06:23] oh another thing you potentially have to consider, the AST could fill up... [20:06:51] GMGMED("F79,0;"); [20:07:14] I added that afterwards [20:07:22] haha, exactly what I wanted to suggest [20:07:40] also added med_f80.ASTCode++; [20:07:57] so the next TEI calculation uses the next code [20:08:19] because the F79 does not reset the code to 101 [20:08:57] oh [20:11:03] yeah that's kind of on purpose [20:11:16] PZREAP.LastASTCode keeps track of the AST numbers [20:11:50] and even if you use MED F79 to clear all AST solutions it will still increment from the number last used [20:12:03] so that each AST calculation has a unique number [20:13:05] if you would clear out all ASTs before the calculations then the AST appears in the first column [20:13:27] right [20:13:35] and then you can let the RTE Digitals use PZREAP.AbortScanTableData[0].ASTCode [20:13:53] ah [20:13:56] ok [20:26:24] so I used sv_EI in PZREAP.AbortScanTableData [20:26:39] potentially cuts out a lot of code [20:27:04] can I just do ie. entin.R0 = PZREAP.AbortScanTableData->sv_EI.R; etc? [20:28:41] its already the correct format for RMMYNI, EphemerisData2 [20:30:18] not AbortScanTableData-> [20:30:23] AbortScanTableData[0]. [20:30:34] and it's the wrong coordinate system [20:30:55] so you still need to do the ELVCNV [20:31:06] to convert to ECT [20:31:21] other than that, it should be good [20:31:40] the RTE Digitals solution is converging on that same EI state vector, so it's not any less accurate or so [20:32:09] to take that from the AST [20:37:41] ok I think I got it all [20:40:58] indy91, I updated the PR with the new TEI method [20:43:04] oh right, my "great" solution with VEHDATABUF to use the RTE functions without the MPT [20:43:31] bool found = DetermineRTESite(med_f77.Site); [20:43:37] I think the found is not needed [20:43:58] if it doesn't find that it doesn't calculate the AST at all in your code [20:44:04] and then the whole calculation will fail anyway [20:44:24] ok [20:46:02] form->GET05G = entout.t_05g; [20:46:19] does that work right? t_05g is a GMT I think? [20:46:41] I thought it was too, but in my tests in looks like its GET [20:49:48] definitely would be GMT if the input state vector to RMMYNI is GMT [20:50:14] right [20:53:25] so I think it confused me since it gave a GET of 260 hours [20:53:34] but it should be ~244 hours [20:53:41] so yeah I guess it was GMT [20:53:50] Apollo 12 launched at around 16h GMT [20:54:37] ah so that makes sense then [20:54:55] now whats the quickest way to convert GMT to GET again [20:55:24] lol GETfromGMT [20:55:27] yep [20:55:38] been using that function a lot :D [20:57:40] yeah [20:57:47] latest changes pushed [20:58:12] feels good not to have that horrible code to "bias" the DV vector to get a TEI REFSMMAT :D [20:58:47] all this for the TEI REFSMMAT haha [20:59:06] I'll take another detailed look tomorrow, but I am sure it can be merged [20:59:44] sounds good [21:00:12] good night! [21:00:25] cya! [16:46:33] morning! [16:47:03] hey guys [16:48:36] what's up? [16:49:50] continuing through Apollo 7, I'm fairly sure my orbit isn't quite rotated right [16:50:07] when the crew is talking about the "perigee torque", the aerodynamics, I'm not at perigee [16:50:21] just coming up to a PTC test [16:50:33] the DTO already says not to try that one below 200 NM altitude [16:50:45] because aerodynamics will certainly mess it up [16:50:57] so the timing of that is somewhat important, in a 90x240 orbit [16:51:03] and you? [16:51:07] I saw a picture :D [16:51:50] here's an updated picture :) https://i.imgur.com/O2ONfbf.png [16:52:30] it's fully assembled now, and everything is basically happy in the idle state with all the power switched on [16:52:49] so tonight after work I'm going to start testing/calibrating the current drivers :) [16:53:00] epic :D [16:53:23] hey guys [16:57:52] Mike that looks awesome [17:00:10] thanks :D [17:16:14] from left to right side of that board it's a bit like time travel [17:21:41] hahahaha yes it is [21:07:42] night! [16:11:30] good afternoon [16:16:55] morning! [16:19:47] hey Mike, it was 19 minutes ago :) [16:23:33] time isn't real [16:35:05] true true [16:37:28] and good evening [16:37:47] we need someone from East Asia or Australia or so, who can says instead "not so loud, I'm trying to sleep here" [16:39:55] we have a bit of a coverage gap [16:52:33] indy91, do I recall you saying something about LVDC controls for H2 venting? [16:53:09] yeah, it controls all the valves [16:53:14] via the switch selector [16:53:58] I'll need to go through all the commands and check if all the relays in the S-IVB electronics are already implemented [16:54:37] I probably skipped the non-propulsive vents at least [16:54:57] and also, I likely implemented this, if the LVDC already sends all the commands on the right schedule [16:55:21] let me look at Apollo 11 as an example... [16:55:36] no, 10, better documented [16:59:42] I'll need to put in the relays in S-IVB systems [16:59:58] for non-propulsive vents at least [17:00:19] there are two relays, one would open the vents, one closes them [17:00:34] PDF page 12 in the Apollo 13 Saturn Systems Handbook [17:00:38] 121* [17:15:00] or would those valves all be part of the PanelSDK [17:15:15] in which case there still needs to be logic for them of course, but it would be a bit different [17:15:59] thewonderidiot, that's such a great document, thanks! I wished we had something like that for all Saturn stages. It's also kind of better than what we have for CSM and LM [17:16:17] yeah having it for all vehicles would be great haha [17:16:39] I'll keep my eyes peeled for more stuff like it [17:17:59] probably wouldn't be quite the same, it's a McDonnell Douglas document [17:18:06] other stages will have a different system [17:22:59] for the CVS the logic is already in place, nothing to change there [17:23:25] just use the variable LH2ContinuousVentValveOpen [17:23:28] I would need the logic for opening the valves [17:23:43] but the NPV part is not implemented yet [17:23:48] ahh okay. [17:24:51] thrust is just going to be some isentropic flow stuff: thrust(flowrate, tank pressure) [17:28:28] and are you planning to do the NPV stuff as well or only CVS [17:32:19] I think the NPV system was only used after TLI actually [17:32:50] and it looks like the LVDC is sending out the commands for that [17:33:03] but SIVBSystems is don't anything with it yet [17:33:09] for NPV [17:34:12] I have vents defined for it, so might as well [17:35:13] ok, then I will put in the relay stuff [17:35:49] make something happen here for example: https://github.com/orbiternassp/NASSP/blob/Orbiter2016/Orbitersdk/samples/ProjectApollo/src_saturn/sivbsystems.cpp#L1010 [19:03:09] I'm going to get things working on the independent SIVb stage and then figure out how to fit it into the Saturn stuff. I have a few ideas [19:42:39] probably by just moving the PanelSDK instance between classes or something [19:45:15] just don't look at how that's done with the IU because it's bad :D [19:57:20] every time I get stuck I'll just make some commits to the docked cm branch [19:58:14] eventually one of the projects will get done [20:12:36] haha [20:36:30] what do all these LCC classes do? [20:40:36] never underestimate how easily distracted I am... [20:40:56] it's an optional feature right now, I experimented with that a while ago [20:41:09] you can add a LCC to the scenario, like a MCC [20:41:21] and then there is a LCC only MFD which can send commands to the Saturn [20:41:26] and it can run scripts [20:41:44] I was aiming to implement the EDS test, which lights up a lot of EDS related lights in the spacecraft [20:43:20] ooooh I remember now. [20:44:00] cool stuff [20:44:33] someone had found the exact names of each I/O channel between the LCC and the ML ground computer [20:44:45] so I (very partially) implemented that interface [20:44:54] really only EDS related stuff [20:49:47] that's the RCA110 I assume? [20:52:17] that's the ground computer yeah [20:52:21] one in the ML, one in the LCC [20:55:47] at some point it should be in every launch scenario [20:56:05] and you could stop and start the countdown from there [20:56:15] totally not a concept stolen from SSU [20:57:24] that will be fun to have [21:18:24] night! [15:00:10] hey [15:03:33] hey Niklas [15:38:26] I'm thinking about my favourite topic again, the RCS thrust issue, timesteps being too long to resolve the AGC commands accurately [15:39:06] I had an idea for a sort of intermediate solution. Not as complicated as saving the exact time when the AGC commanded something on/off [15:39:27] and then take that into account as well as jet on/off delays [15:40:00] but instead, just this: If RCS thrust is 0, and it's commanded on, then generate a pulse equivalent to a minimum impulse firing [15:40:16] if thrust is not 0, then go to full thrust [15:40:31] so basically, the first timestep when a thruster is commanded on gives a minimum impulse [15:42:04] oh that's a good idea [15:45:23] what would you consider a reasonable range of framerates [15:45:39] like, a minimum for which NASSP should be able to work [15:45:40] 30? [15:47:52] I think this solution would give too little thrust at bad framerates actually [15:48:18] like, for the CSM, in pitch and yaw it will not need to command thruster firing that is close to minimu, which is 14ms [15:48:40] but then with bad framerate, it only commands thrusters on for one timestep [15:48:48] and that is always minimum impulse then [15:49:52] but too little is probably better than too much [15:50:13] hmm yeah. you would have to set some max dt value for this feature [15:52:13] you could look it it like this: what's the biggest error you could have as a function of frame rate [15:52:27] yeah, I am making myself some graphs for that right now [15:52:55] when the framerate is faster than minimum impulse firings it would use 100% thrust in any case [15:53:02] so no changed behavior [15:55:40] probably between dt= min and dt=2 *min is where it would work best [17:01:02] https://i.imgur.com/oBgbVZY.png [17:01:20] this shows what happens if the AGC commands a 15 milliseconds firing [17:01:27] at different framerates [17:01:49] the "desired" line includes the fact that it takes longer to switch a jet on than to switch it off [17:02:06] so if there an electrical on signal for 15ms you only get the equivalent thrust of about 10ms [17:02:24] the blue line is our current behavior [17:02:46] it excludes the fact that, the worse the framerate gets, more often a command from the AGC isn't recognized [17:03:03] because it switches a jet on and off again in one timestep, so the RCS never sees it [17:03:08] I have a graph for that, too [17:04:27] https://i.imgur.com/MCppCZ5.png [17:07:08] at those bad framerates it always does the minimum impulse logic in the "new" curve [17:07:29] that's why better framerate are too much thrust actually, just like right now [17:13:43] https://i.imgur.com/X6EwWbx.png [17:14:10] this is probably the most relevant graph [17:14:26] how much thrust we would actually get for different length of commands [17:14:36] as a percentage of what would be correct [17:15:09] morning! [17:16:00] hey Mike [17:16:04] how are the voltages [17:16:20] I like it [17:16:26] hey Mike [17:16:28] totally not a question I ask because I know you are a robot [17:16:57] yeah at 60 fps this looks great. At 144 fps it's identical to now, because 1/144 second is smaller than the minimum impulse [17:17:19] if we go below 60 the thrust gets smaller, because it usually fires a minimum impulse [17:17:38] even if the desired thrust duration was double [17:18:43] https://i.imgur.com/UC5vZT9.png [17:18:44] 40 fps [17:19:00] dips as low as 50% [17:21:27] I do already have a branch though with the precise AGC timing, for the LM. This solution would be really simple for the CSM though. [17:22:17] I'll finish Apollo 7 and then I'll look at the branch I already have from a few months ago [17:24:39] all of the volts are happy :D [17:24:59] what is the time resolution that the AGC can fire thrusters on? [17:25:02] I've tested the entire board now, and just need to tune some of the drivers and get it all assembled into the chassis [17:29:43] perfect :D [17:30:38] n7275, the AGC uses TIME6 for RCS commands, I believe one bit in that counter is 0.625 milliseconds [17:30:49] so it can send out really finely timed commands [17:31:16] looking at the CSM RCS DAP, it sends out commands ranging from 14 to 100 milliseconds [17:36:51] good afternoon [17:53:06] hey Alex [17:53:27] oh man, a contour plot of step length vs on time for a fixed duration looks wild [17:56:11] how does it look? [17:56:40] wild [17:56:42] :P [17:58:47] I just realized I have no way to send it right now :( imagine a moiré pattern [18:06:24] wild [18:17:53] indy91, I was curious if I could add the k factor update to Apollo 12 MCC [18:18:11] looks like it should work except ags_t vags is inaccessible [18:18:42] looks like its protected in LEM_AEA [18:18:54] hmm [18:19:05] I guess I used friend class with ARCore or something [18:19:09] and only accessible by ARCore since its friends [18:19:11] right [18:19:42] oh you know what, you can't do that [18:19:51] because this needs to run in a thread [18:19:54] ah [18:20:01] MCC calculations do also run in a thread :D [18:20:43] it's a bit experimental still how that is done [18:20:51] yeah saw that note lol [18:23:54] maybe make MCC friend class as well? [18:25:32] RTCC* [19:10:26] oh yeah [19:10:36] makes more sense for RTCC to be a friend class than ARCore really [19:13:15] the k factor is calculated before ascent too [19:13:28] I think I can add it to the remarks section of the ascent PAD [19:13:55] in reality it was voiced up a few minutes before the ascent PAD [20:37:28] sounds good [20:39:20] night!