Jump to content

[1.12.x] Anatid Robotics / MuMech - MechJeb - Autopilot - [2.14.3] [4th March 2023]


sarbian

Recommended Posts

22 minutes ago, danielboro said:

Ksp 1.3.0 broke it

But last night i used the last MJ version in ksp1.3.1 on 6 docking

All of them worked

The only problem was docking 2 >400 parts ships whit limited rcs

The fix was limiting docking max speed to 0.1

Well, that didnt work, it still wants to flip around like a madman, even after i manually stabilize it in the direction that it overshoots. It slowly starts flinging back and forth again. using 2.7.0-776

And no, the RCS isnt balanced wrong, the same exact design was working in 1.3.0 and before

Edited by StickyScissors
Link to comment
Share on other sites

10 hours ago, linuxgurugamer said:

@sarbian

I'd like to be able to tell Mechjeb to start a launch, if the launch assistant is active.  How would I be able to tell if it's active, and how to trigger the launch.

 

So the player opened the "Ascent Guidance" window, set it up and pressed the "Engage autopilot" button. And you want to know that the button was pressed to (for exemple) start some countdown and launch ?

Assuming you linked MJ you need to get the active MJ module, then the AP ComputerModule, check enabled and stage when you want.

MechJebCore core = vessel.GetMasterMechJeb();
MechJebModuleAscentAutopilot ascentAP = core.GetComputerModule<MechJebModuleAscentAutopilot>();

if (ascentAP.enabled && someStuff)
{
	StageManager.ActivateNextStage();
}

 

Link to comment
Share on other sites

2 hours ago, sarbian said:

So the player opened the "Ascent Guidance" window, set it up and pressed the "Engage autopilot" button. And you want to know that the button was pressed to (for exemple) start some countdown and launch ?

Assuming you linked MJ you need to get the active MJ module, then the AP ComputerModule, check enabled and stage when you want.


MechJebCore core = vessel.GetMasterMechJeb();
MechJebModuleAscentAutopilot ascentAP = core.GetComputerModule<MechJebModuleAscentAutopilot>();

if (ascentAP.enabled && someStuff)
{
	StageManager.ActivateNextStage();
}

 

Ok, thanks.

I need to do this via Reflection, since I don't want a hard dependency.  But, I can reference GravityTurn to see how it works in there and move forward with that.

 

Link to comment
Share on other sites

8 hours ago, StickyScissors said:

Well, that didnt work, it still wants to flip around like a madman, even after i manually stabilize it in the direction that it overshoots. It slowly starts flinging back and forth again. using 2.7.0-776

And no, the RCS isnt balanced wrong, the same exact design was working in 1.3.0 and before

I assume what didn't work was to limit the speed to 0.1? That was my workaround also, as any speed that is not in the exact forward direction toward the target port is not recognized. So, if you need lots of lateral movement to line up, you end up going too fast and causes the back and forth.

Not sure what "flip around like a madman" is trying to describe, but have you made sure that the part that performs the control function is oriented correctly? That has screwed me up in the past.

Link to comment
Share on other sites

Back in September I believe I isolated the rover waypoint following issue to this PR:

https://github.com/MuMech/MechJeb2/commit/65eafbe720bfa20150ebb71594ac18fbd7d73fde

It would be great if @BloodyRain2k could take a look into why the rover autopilot no longer sets and follows headings properly (assuming that the username here and on github are the same)

Edited by drhay53
Link to comment
Share on other sites

Hi guys,

 

Im on the latest KSP version and the latest available CKAN MechJeb version. When I use ascent guidance it launches until apoapsis and then it goes right past the circularization node without firing the engines... is this a known thing or do I need to look into it more? I do NOT have the 'skip circularisation' option ticked. Thanks for any help!

Link to comment
Share on other sites

51 minutes ago, thevegimobil said:

When I use ascent guidance it launches until apoapsis and then it goes right past the circularization node without firing the engines

Any chance you are making the same mistake I did by using an octo2 probe without a reaction wheel? 

Link to comment
Share on other sites

45 minutes ago, thevegimobil said:

I have RCS and monoprop. It just glides right past. i will try adding additional reaction wheels to see if it is just a bit screwey

The only other time I have experienced this problem I had run out of electric. 

Link to comment
Share on other sites

-snip-

Welp, it just decided to start working. Either updating to the last dev build or flushing my settings for the millionth time solved it ¯\_(ツ)_/¯

Edit: Nope, i lied, still borked

@Gilph This is what i meant by flipping around like a madman: https://giant.gfycat.com/GlassDeliriousAngora.webm

Edited by StickyScissors
Link to comment
Share on other sites

game keeps crashing to desktop sometimes when i launch a craft.. does this have anything to do with it?

[LOG 04:12:37.773] [MechJeb2] Loading Mechjeb 2.7.0
[LOG 04:12:37.781] ScaleModList: listSize 369 maxListSize 1403
[ERR 04:12:37.815] MechJeb module MechJebModuleStagingController threw an exception in OnStart: System.NullReferenceException: Object reference not set to an instance of an object
  at MuMech.MechJebModuleStagingController.OnStart (StartState state) [0x00000] in <filename unknown>:0 
  at MuMech.MechJebCore.OnStart (StartState state) [0x00000] in <filename unknown>:0 
 

Link to comment
Share on other sites

2 comments:

1. There needs to be some diagnostics such as saying "this ship is poorly behaved, probably due to unreinforced joints, increasing epsilon values to compensate". Current behavior is to treat 200 ton behemoths as micro pods and burn all fuel trying to steer them as such.

2. Interplanetary transfer windows are pretty badly borked this release. The main issue is that it seems to ignore the phase angle such as it treats 180 degrees as being equal to 0 degrees... So I burn interplanetary and find myself in an orbit that is 180 degrees from the target. =\

 

 

Link to comment
Share on other sites

13 hours ago, AlonzoTG said:

1. There needs to be some diagnostics such as saying "this ship is poorly behaved, probably due to unreinforced joints, increasing epsilon values to compensate". Current behavior is to treat 200 ton behemoths as micro pods and burn all fuel trying to steer them as such.

MJ cannot correct for PEBKAC and ID10T class errors.  If you build a 200 ton behemoth, outfit it with the appropriate control systems.

Link to comment
Share on other sites

Hi. I probably have found a small bug/'feature'. 

The option "do not use RCS for rotation" works for manual control and stock SAS, but seems to be ignored by smart A.S.S and maneuver executer. 
Tested on a fresh KSP installation (1.3.1, gog, linux) with mechjeb .  

I'm quite sure it is an overkill in this case, but rules are rules;)
log: https://www.dropbox.com/s/jb25rj0sxn19ba0/KSP_log.zip?dl=0
savefile: https://www.dropbox.com/s/tpxa8tp6mqe7x74/mechjeb_test_save.zip?dl=0

Link to comment
Share on other sites

Is there a way in the scripting module to create a maneuver node after existing one? To run a script that creates a plan. Now the operation trajectory -> maneuver ignore other nodes, both my and the ones created by a script.

A simple example would be increasing an orbit. 
-increase Ap at Pe.
-Circularize at Ap

Or, what i really was trying to do, the trajectory to catch a lost Kerbal:
-increase/decrease Ap at Pe.
-Circularize at Ap
-match plane
-Hohmann to target
-fine tune closest approach
-match velocity

The "manual" maneuver planner has a option create a new node/change the last node, scripting one seems to place a new node on old orbit ignoring existing nodes. 

As a workaround, I can always execute node and create a new one after that in the script, as it is intended. 

Link to comment
Share on other sites

54 minutes ago, bartekltg said:

Is there a way in the scripting module to create a maneuver node after existing one? To run a script that creates a plan. Now the operation trajectory -> maneuver ignore other nodes, both my and the ones created by a script.

A simple example would be increasing an orbit. 
-increase Ap at Pe.
-Circularize at Ap

Or, what i really was trying to do, the trajectory to catch a lost Kerbal:
-increase/decrease Ap at Pe.
-Circularize at Ap
-match plane
-Hohmann to target
-fine tune closest approach
-match velocity

The "manual" maneuver planner has a option create a new node/change the last node, scripting one seems to place a new node on old orbit ignoring existing nodes. 

As a workaround, I can always execute node and create a new one after that in the script, as it is intended. 

The rendezvous planner will do this, although sometimes not the most efficient way.

Link to comment
Share on other sites

On 1/18/2018 at 6:34 PM, AlonzoTG said:

2 comments:

1. There needs to be some diagnostics such as saying "this ship is poorly behaved, probably due to unreinforced joints, increasing epsilon values to compensate". Current behavior is to treat 200 ton behemoths as micro pods and burn all fuel trying to steer them as such.

2. Interplanetary transfer windows are pretty badly borked this release. The main issue is that it seems to ignore the phase angle such as it treats 180 degrees as being equal to 0 degrees... So I burn interplanetary and find myself in an orbit that is 180 degrees from the target. =\

 

 

1. Github is linked in the first post. I am waiting for your code submission. But know that the current code already takes MOI and the available RCS in account. And I test it with quite large test ship. Unfortunately I can not help with your problem since you did not share your ship+used mods, so I can not duplicate your problem. 

2. It works fine here. And that's all I can answer with the info you provided. (see 1).

--------------------------------------------------------------------------------------------

Now, I would love to see someone with actual experience in control theory to provide some code. But so far I don't have any bored SpaceX, Lockhead or ESA engineer contributors; so you will have to deal with that.

 

 

Edited by sarbian
English
Link to comment
Share on other sites

Is there any way to set Mechjeb's Ascent Guidance to disengage when Periapsis reaches a certain number instead of disengaging (or switching to circularization mode) at a certain Apoapsis?  Real launch vehicles like the STS and upcoming SLS have been designed so that their main engines cut off when Periapsis is just this side of 0 so that the main tank is sure to burn up on reentry and while I can usually get my Apoapsis about where it should be, getting the main engines to shut off at just the right moment so I keep a slightly negative Periapsis is very difficult.

Link to comment
Share on other sites

On 1/22/2018 at 1:41 AM, Loren Pechtel said:

The rendezvous planner will do this, although sometimes not the most efficient way.

The rendezvous planner is quite far in the tech tree ;-) 
I also used SASS in surf->surf mode as an ascending guide, manipulating pitch.   

This isn't big deal. For catching kerbals and going back to the station the script in 'live' version works fine (although I have to insert 1sec timer between executing a node and creating the next one. Sometimes the new one was created while the engine was still running and breaks the next node). 

But one has to be quite careful when using it because the planner from scripts works differently (ignores all other nodes) than the manual one. I tried to look at the code to look for that difference, but I put too little time to understand anything;-)  

 Maybe the new operation trajectory->remove nodes would be useful. 

Also, stopping the script does not stops executing a node created and called by the script. Is that intentional?
"Oh, something seems wrong, I just hit stop... Why my engines still running?! Where is stop execution?! Why I closed maneuver planner?!" ;-) 
On the other hand, a script can have nothing to do with a node.

Link to comment
Share on other sites

4 hours ago, chrisl said:

Is there any way to set Mechjeb's Ascent Guidance to disengage when Periapsis reaches a certain number instead of disengaging (or switching to circularization mode) at a certain Apoapsis?  Real launch vehicles like the STS and upcoming SLS have been designed so that their main engines cut off when Periapsis is just this side of 0 so that the main tank is sure to burn up on reentry and while I can usually get my Apoapsis about where it should be, getting the main engines to shut off at just the right moment so I keep a slightly negative Periapsis is very difficult.

Use scripting module:
Set up ascending guidance in your favorite configuration, check "skip circularization".
Add to the script: 
-modules->ascending autopilot (it will use parameter you set in the ascending guidance panel)
-trajectory-> maneuver (change periapsis to 0 at apoapsis)
-trajectory-> execute node.

The autopilot will disengage at the edge of the atmosphere, the node will be created and executed. 

You can also add
-staging/engines-> staging
-trajectory-> maneuver (change periapsis /circularize  _after a fixed time of 1s_)
-trajectory-> execute node.
and automate the whole thing. 

Edited by bartekltg
Link to comment
Share on other sites

31 minutes ago, bartekltg said:

Use scripting module:
Set up ascending guidance in your favorite configuration, check "skip circularization".
Add to the script: 
-modules->ascending autopilot (it will use parameter you set in the ascending guidance panel)
-trajectory-> maneuver (change periapsis to 0 at apoapsis)
-trajectory-> execute node.

The autopilot will disengage at the edge of the atmosphere, the node will be created and executed. 

You can also add
-staging/engines-> staging
-trajectory-> maneuver (change periapsis /circularize  _after a fixed time of 1s_)
-trajectory-> execute node.
and automate the whole thing. 

Won't that shut the engine down?  I am hoping for an option that only uses a single burn.

Link to comment
Share on other sites

31 minutes ago, chrisl said:

Won't that shut the engine down?  I am hoping for an option that only uses a single burn.

It will. But mechjeb throttle to 0 and then make correction for atmospheric loss, so it is cheating too;-)

It is hard to do what you want only by adjusting direction during flight. The rocket will get a certain velocity, after a set time. The rocket could be too low for sane orbit;-) If you get to the 80x0 orbit at altitude 40km you spend quite a lot time in the atmosphere. 

You can wait with staging, but it is hard (I think) to do automatically. 
The better idea for getting to orbit with periapsis around 0 is to reduce TRW of (at least) the second stage. My test rocket with AG set to turn shape = 16deg and 80km get periapsis around -250km, and after setting thrust limiter to 70%, periapsis was -4km, circularization burn <100m/s, so doable for "small shuttle engines". A bit more tinkering and you get 0km. But you have to manipulate with not only turn shape but also with the rocket itself, at least with thrust limiters, so the burn is longer.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...