Advertisement
sumguytwitches

TseTse fly to kerbin orbit

Jun 8th, 2023 (edited)
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. function info {
  2. parameter message.
  3.  
  4. set logmessage to round(missionTime,1):tostring():padleft(6) + " " + round(altitude):tostring():padright(6) + ": " + message.
  5. print logmessage.
  6. }
  7.  
  8.  
  9. //Set Vars
  10. set steeringmanager:rollcontrolanglerange to 180.
  11. set proprad to 5.8.
  12. set rotormods to ship:modulesnamed("ModuleRoboticServoRotor").
  13. set rotors to list().
  14. for rm in rotormods {
  15. local rotor to lexicon().
  16. set rotor["part"] to rm:part.
  17. set rotor["mod"] to rm.
  18.  
  19. set rotor["blades"] to list().
  20. for bm in rm:part:ModulesNamed("ModuleControlSurface") {
  21. local b to bm:part.
  22.  
  23. local blade to lexicon().
  24. set blade["mod"] to bm.
  25. set blade["offset"] to vdot(-b:Facing:starvector, b:position - b:parent:position).
  26. set blade["proprad"] to proprad.
  27.  
  28. bm:setfield("deploy", true).
  29.  
  30. rotor["blades"]:add(blade).
  31. }
  32.  
  33. rotors:add(rotor).
  34. rm:setfield("torque limit(%)", 100).
  35. }
  36.  
  37. set first to true.
  38. set taraoa to 4.5.
  39. set deploycopy to 9.
  40. Fuelcells on.
  41. set displayIndex to 0.
  42.  
  43. //Lock Vars
  44. set rpmtarget to 460.
  45. lock aoa to arcsin(srfprograde:topvector * facing:vector).
  46. //Functions
  47.  
  48. //Control Loop
  49. on round(time:seconds * 10) {
  50. if(bays) {
  51. set rpmcopy to rpmtarget.
  52. for rotor in rotors {
  53. local currrpm to rpmcopy.
  54. rotor:mod:setfield("rpm limit", rpmcopy ).
  55. set calcAirspeed to (2 * constant:pi * (rotor:blades[0]:proprad + rotor:blades[0]:offset) * currrpm/60).
  56. set deploycopy to max(3, taraoa + arctan2(airspeed, calcAirspeed)).
  57. for blade in rotor:blades {
  58. blade:mod:setfield("deploy angle", deploycopy).
  59. }
  60. }
  61. } else {
  62. if(first)
  63. {
  64. for rotor in rotors {
  65. rotor:mod:setfield("rpm limit", 0 ).
  66.  
  67. for blade in rotor:blades {
  68. blade:mod:setfield("deploy angle", 25).
  69. }
  70. }
  71. set first to false.
  72. }
  73. }
  74.  
  75. return first.
  76. }
  77.  
  78. //Flight
  79. brakes off.
  80. lock x to 90.
  81. lock p to max(aoa,min(75,(airspeed-120)/2)).
  82. info("lock p to max(aoa,min(75,(airspeed-50)/2)).").
  83. toggle ag5.
  84. lock throttle to (100e3-apoapsis)/500.
  85. lock steering to heading(x,p).
  86.  
  87. //Triggers
  88. when alt:radar > 10 then gear off.
  89.  
  90. set rocketing to false.
  91. when (altitude > 7500 and ship:verticalspeed < 1 or airspeed > 400 ) then {
  92.  
  93. info("switching to rockets").
  94. lock rpmtarget to 0.
  95. bays off.
  96. toggle ag6.
  97. stage.
  98. lock p to 35.
  99. info("lock p to 35.").
  100. wait 0. set rocketing to true.
  101. }
  102.  
  103.  
  104.  
  105. when apoapsis > body:atm:height - 10e3 then {
  106. info("locking to srfprograde").
  107. lock steering to srfprograde.
  108. }
  109. when apoapsis > 100e3 or altitude > body:atm:height then {
  110. info("locking to prograde").
  111. lock steering to prograde.
  112. }
  113.  
  114. when altitude > body:atm:height then {
  115. info("adjust throttle for orbit").
  116. lock throttle to 30-eta:apoapsis.
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement