Rambly post ahead, consolidating thoughts but also open to ideas:
To start with, currently I have the RCS ISP at 117 s. I got that value I believe from astronautix, but that doesn't refer to the Soyuz itself, it's a loose value. All I know is it's highly concentrated hydrogen peroxide monopropellant, and I've seen max theoretical ISP for H2O2 ranging from 160 s to 200 s, so not sure what a realistic figure would be for the Soyuz RCS, knowing the actual thrusters aren't 100% efficient. Also assuming the stuff that's on Soyuz these days performs a bit better (in thrust they certainly do). But could it really be as low as 117 seconds? Needless to say it would relieve things a bit, the more the merrier, but if it really was that low, then so be it.
So the best source I have on an actual Igla sequencing is Chertok's account of the Soyuz-10 approach. While an amusing read due to the constant absurd micromanaging from Mishin and co., I'm finding it a bit confusing to make sense of the sequence. Partly due to extracting passage of time from text, I'm sure, the dual reporting by telemetry and crew, also curious how he's able to give such precise recollections (aka is there recorded audio somewhere). This isn't necessarily a "I must code it to behave exactly like this" to the point of it being impossible, more just trying to understand the supposed sequence, and hopefully not overthinking it.
Here's what I get out of it in order. Relevant info starts on page 324 of Rockets and People Vol. 4, the public NASA PDF:
Weird inconsistency with the first range measure given as 10-11 km, and later on being 15 km, after Igla lock on. Top brass has a meltdown over this, but no explanation given. Maybe 10 km was the closest approach and there was some drifting away before it had time to properly burn and start closing in;
DPO burn for over 45 seconds (how much of the tank evaporated just from that?), followed by a call-out of 8 m/s range rate;
The next call-out from the crew is range 15 km and rate 24 m/s. Sounds reasonable;
At 6 km, rate 27 m/s, first mention of a DPO-powered flip to point the engine at Salyut (DOS) and brake;
After the burn indication, given range and rate are 4 km, 11 m/s (basis for the initial approach speed the current addon version uses starting from ~5 km);
Immediately after this, it's said DPO is turning the ship again. This is where the mess starts for me [1];
3.5 km, 10 m/s, engine fires again for 33 seconds and rate is down to 8 m/s at 2.7 km;
Around 1.6 km, 8 m/s, another turn starts. Engine fires 7 seconds;
Down to 4 m/s at 1.2 km;
Down to 2 m/s at 950 m, engine fires again for 5 seconds, turn reported;
Last crew report and telemetry as they leave radio coverage is another engine burn, rate increases to 4 m/s at 800 m. Ground mentions just 13 m/s delta-v reserves on the main engine (the amount that still makes de-orbit possible), and 20 kg DPO left. Docking happens within 30 minutes.
[1] So at 6 km I feel confident in saying Soyuz is pointing away from Salyut (let's call it retrograde), burning off the 27 m/s down to 11 by 4 km.
Then another turn starts, and another engine burn at or below 3.5 km seems to drop that down to 8 m/s by 2.7 km. Now, 500 m at 11 m/s, that's around 45 seconds of travel time. Assuming a (documented for manual mode) max turn rate of 3 deg/s, fuel guzzling aside, that's more than one minute for a 180 degree turn. Either way, it makes no sense it would flip 180 to point prograde and reduce speed with the main engine (physics says no), and it would also be a waste of fuel and bordering on impossible time-wise to flip prograde and immediately flip back retrograde again.
So I'm assuming this is one of those perpendicular/normal burns (b in post #95 of this thread) to reduce lateral drift. Soyuz turns 90 degrees from retrograde, and if they measure range rate (comes from RF Doppler) as a "vector sum" which includes lateral motion, makes sense to me range rate would decrease after such a burn. If range rate is just the longitudinal approach speed, not factoring in lateral stuff, not sure how that sits in my head. Either way, that is quite the long burn to burn off just 2 m/s.
If Soyuz held this perpendicular orientation (main dish gimbals and remains locked in line of sight with Salyut throughout the whole approach) until the next turn around 1.6 km, said turn should have been back to retrograde, as the speed is halved. Compare this 7 second burn for 4 m/s difference to the previous one. Further reduction to 2 m/s seems to be from the 5 s burn, followed by a turn. And then another 4 s engine burn and speed doubles? Rendering the previous burn useless? I know Igla wasn't exactly the smartest of things, but...
Anyway, crew ended up taking over manual control past 200 m, docked right down the middle, and the rest is history. Shatalov tells Chertok later he was kinda sick from all the turning and burning. Another note from this account is up until Soyuz-10, there was no control over individual SSVP actions: rod, latches and hooks opening/closing. All they had was "Dock" and "Undock" commands. This lines up with the 7K-OK KSU matrix, and also with 7K-TM's as they would have introduced more control to the cosmonauts after that being the reason they almost rendered Salyut 1 useless after one botched docking.
So what's my actual take away from this, if I have an accurate picture at all: a lot more main engine action than I anticipated, seems like it was in charge of lateral drift as close as 3ish km, and retrograde burns were a thing up to 1 km at least. My main concern here is the time it takes to turn, and the fuel it takes. If DPO isn't being used as much to null lateral drift, I guess that "extra" fuel could then be used on the higher number of turns. Also wondering if all the burns really were at "round" angles (0, 90, 180) or if it wouldn't be able to do something in between and kill two birds. On different points, the crew reported seeing the station on the periscope, which would imply pointing straight at it. In any other orientation, the vzor's field of view points away from the docking target.
For my implementation, I'm thinking:
- Initial approach speed at 15-20 km range is what it is, but maybe have a limit at 30 m/s where the Soyuz trims it down, and also a lower limit. Still, if the rendezvous is well setup, closest approach should be small enough;
- The initial alignment for radio lock with Salyut should immediately detect the direction of the lateral drift. So, while pointing at Salyut, the magnitude of the relative velocity vector's x and y components. Here I'm assuming, before actual experimentation, that this direction will be approximately the same throughout the approach. This is important because the Soyuz would mainly pitch during the approach as the antenna gimbal had >180º range in pitch, but only 20º in yaw. So to keep the antenna in radio lock, only pitch can be used for the flip 'n' burns. If the first orientation towards Salyut rolls Soyuz such that the lateral drift direction is directly "up" (all y axis), then all it needs to do is pitch down 90º and use the main engine to start burning it off. Off the top of my head, since the approach should be from below and behind, this roll angle should be more or less aligned with the horizon, either way. Of course, relative inclination plays a part too. Maybe something like rolling until the (x velocity / y velocity) ratio is small enough works?;
- Once initial approach speed is set, pitch to 90º and get rid of the lateral drift. Hold this attitude and burn as needed;
- Around 6 km, flip to 180º and burn to around 11 m/s;
- From there, do one more round of 90º pitch lateral correction, flip back to 180º to slow down further;
- From 1 km down, point at Salyut and use DPO to control drift and approach speed down to contact.
This will still require some pencil and paper, but it's sounding doable if the fuel performance doesn't let me down. Still somewhat skeptical of doing this with a rendezvous to 350 km circular behind it, on 205 m/s launch Delta-V including de-orbit fuel.
Taking the opportunity to leave this here:
http://www.svengrahn.pp.se/histind/ASAT/ASAT.htm#Abstract