Orbiter-Forum  

Go Back   Orbiter-Forum > Orbiter Addons > Addon Development
Register Blogs Orbinauts List Social Groups FAQ Projects Mark Forums Read

Addon Development Developers post news, updates, & discussions here about your projects in development.

Reply
 
Thread Tools
Old 07-20-2015, 01:25 AM   #31
boogabooga
Bug Crusher
 
boogabooga's Avatar
Default

Good point. I was talking about Jarvis specifically, but I agree about the other fuels.
boogabooga is offline   Reply With Quote
Old 07-20-2015, 05:02 PM   #32
Lisias
Space Traveller Wanna-be
 
Lisias's Avatar
Default

Quote:
Originally Posted by fred18 View Post
 I will. It will be a bit embarassing: since i'm not a professional programmer the code sometime will look silly to the expert people, but I think that could be useful to everyone to have the code available for this. If i had the vinka one, now my life would be a lot easier.
People that are experts on coding, rarely are experts on the problem. The inverse is also true.

But the nice thing about Open Source is that you can have both in your project without doubling your costs. :-)

The only really tricky issue is interfacing - it's a huge pain to publish an interface and, when a lot of people are already using it, you discover you messed up and need to change it. A lot of people will probably get angry with you ( been there, done that =P ). But this is a problem you don't have for now - the interfaces you will realize are already defined.

Just don't be afraid of rewrite everything two or three times and you will probably ending up with a good codetree.

Last edited by Lisias; 07-20-2015 at 06:22 PM.
Lisias is offline   Reply With Quote
Old 07-20-2015, 06:11 PM   #33
Face
Beta Tester
 
Face's Avatar

Default

Quote:
Originally Posted by Lisias View Post
 The only really tricky issue is interfacing - it's a huge pain to publish an interface and, when a lot of people are already using it, you discover you messed up and need to change it. A lot of people will probably get angry with you ( been there, done that =P ). But this is a problem you don't have for now - the interfaces you will realized are already defined.
Please don't frighten the good man. The important interface is already defined: Vinka's multistage format. If people get angry about changed additions, they can always go and use the old version. Or implement their own thing.

The real problem in this regards is versioning of the runtime. I've already written about that in the genericvessel thread, proposed a solution, and implemented it, too. I consider it solved.

Keep on going, fred18, you have the right idea.

Last edited by Face; 07-21-2015 at 02:14 PM. Reason: "have written", not "have wrote"
Face is offline   Reply With Quote
Old 07-20-2015, 06:44 PM   #34
Lisias
Space Traveller Wanna-be
 
Lisias's Avatar
Default

Quote:
Originally Posted by Face View Post
 Please don't frighten the good man.
Not my intention! But I got pretty fried when I broke an interface once.

Quote:
Originally Posted by Face View Post
 The important interface is already defined: Vinka's multistage format. If people get angry about changed additions, they can always go and use the old version. Or implement their own thing
I wasn't talking about interface evolution (in the sense of "next version"), I was meaning breaking it. Little things as changing the order of the values on an enumeration - ideally, everybody use the symbolic value, but there're some useful tricks using increments and static_casts and if you change the order of the enum, these tricks can stop working (and this is *really* hard to debug).

Of course, failing to synchronize the header with the DLL while deploying didn't improved my situation. :-)


Quote:
Originally Posted by Face View Post
 The real problem in this regards is versioning of the runtime. I've already wrote about that in the genericvessel thread, proposed a solution, and implemented it, too. I consider it solved.
This threadl? I will give it a peek


Quote:
Originally Posted by Face View Post
 Keep on going, fred18, you have the right idea.
Just to clarify... English is not my mother language. Did I anyhow (involuntarily) stated that fred18 was in some kind of error?

Last edited by Lisias; 07-20-2015 at 07:02 PM.
Lisias is offline   Reply With Quote
Old 07-20-2015, 09:32 PM   #35
Face
Beta Tester
 
Face's Avatar

Default

Quote:
Originally Posted by Lisias View Post
 I wasn't talking about interface evolution (in the sense of "next version"), I was meaning breaking it.
You can break interfaces if you don't care about compatibility. It doesn't matter if you made the new interface incremental - and thereby compatible - or not, it will always be a new version. Just either a direct ancestor or a logical branch.

And this later relationship is what you need to transport to the user. But I don't want to hijack the thread for this discussion, it was already beaten to death in the thread I mentioned.

Quote:
Originally Posted by Lisias View Post
 This threadl? I will give it a peek
It is this one: http://www.orbiter-forum.com/showthread.php?t=33130

Quote:
Originally Posted by Lisias View Post
 Just to clarify... English is not my mother language. Did I anyhow (involuntarily) stated that fred18 was in some kind of error?
Well, your advice of not being afraid of having to rewrite everything two or three times to get to a good code base could certainly be seen as... discouraging. It also implies that he is doing it wrong now, otherwise he wouldn't have to rewrite it, right?

Also his statement that he finds the prospect of opening the code embarrassing is telling that he is not feeling that comfortable with his work yet. So I thought encouraging him might lessen that angst a bit.

IMHO there really is no reason to be afraid of opening code to the community.
Face is offline   Reply With Quote
Old 07-21-2015, 12:48 PM   #36
Lisias
Space Traveller Wanna-be
 
Lisias's Avatar
Default

Quote:
Originally Posted by Face View Post
 You can break interfaces if you don't care about compatibility. [...] But I don't want to hijack the thread for this discussion, it was already beaten to death in the thread I mentioned.
My point is that you can break it even by caring - and this is the only situation that can be embarrassing. :-)

But I agree, there's no need to discuss this.


Quote:
Originally Posted by Face View Post
 Well, your advice of not being afraid of having to rewrite everything two or three times to get to a good code base could certainly be seen as... discouraging. It also implies that he is doing it wrong now, otherwise he wouldn't have to rewrite it, right?
I don't see how this could be discouraging, I was trying to be encouraging! Some posts above he stated:

Quote:
Originally Posted by fred18 View Post
 I will. It will be a bit embarrassing: since i'm not a professional programmer the code sometime will look silly to the expert people, but I think that could be useful to everyone to have the code available for this. If i had the vinka one, now my life would be a lot easier.
And what I'm trying to say is, besides inadvertently breaking interfaces (what's different to changing it on purpose), there's no such thing as an embarrassing code. You can write the worst CPP code in the World that everything is alright: you can rewrite the thing better later until you be satisfied with the resulting code (or stopping to care, what is ok too).

He will made mistakes? Everybody does (including me). But almost all of them are easily fixable with some rewriting later when someone else pinpoint you better ways (or you learn it by yourself) - it's how it worked for my, at least.

Do not fear the error: embrace it. In Extreme Programming, there's a motto where we say: "Fail early, fail often". The failures you don't commit early will be committed later when there would be more code to be fixed. :-)

The only embarrassing mistake is the one you deny to acknowledge.

Quote:
Originally Posted by Face View Post
 Also his statement that he finds the prospect of opening the code embarrassing is telling that he is not feeling that comfortable with his work yet. So I thought encouraging him might lessen that angst a bit.
It was what I intending to to.

Quote:
Originally Posted by Face View Post
 IMHO there really is no reason to be afraid of opening code to the community.
Baby steps, perhaps? How about he rostering people he thrust to code review the project in order to get confident before opening the source?

Last edited by Lisias; 07-21-2015 at 12:52 PM.
Lisias is offline   Reply With Quote
Old 07-21-2015, 01:44 PM   #37
Face
Beta Tester
 
Face's Avatar

Default

Quote:
Originally Posted by Lisias View Post
 Baby steps, perhaps? How about he rostering people he thrust to code review the project in order to get confident before opening the source?
Well, if he doesn't open the source, the project is actually quite useless IMHO. It would just be another proprietary framework people can't trust to build upon, lest they are in danger to get stuck with yet another unmaintained (and unmaintainable) upstream.

In light of this, what good would a private review do? Deferring public release until a perceived quality is reached, defined by a small team of trusted people? I think especially in terms of XP thinking ("fail early, fail often"), it would be better to go public as soon as possible.
Face is offline   Reply With Quote
Thanked by:
Old 07-21-2015, 02:44 PM   #38
Lisias
Space Traveller Wanna-be
 
Lisias's Avatar
Default

Quote:
Originally Posted by Face View Post
 In light of this, what good would a private review do? Deferring public release until a perceived quality is reached, defined by a small team of trusted people? I think especially in terms of XP thinking ("fail early, fail often"), it would be better to go public as soon as possible.
yes, I share your opinion: the sooner the code go public, the better.

However, I'm trying to address a "peoppleware" :-) "issue", fred18's uneasiness on turning his code public.
Lisias is offline   Reply With Quote
Old 07-21-2015, 03:08 PM   #39
Face
Beta Tester
 
Face's Avatar

Default

Quote:
Originally Posted by Lisias View Post
 However, I'm trying to address a "peoppleware" :-) "issue", fred18's uneasiness on turning his code public.
I see. "Peopleware" is a nice term. Indeed it is important to think about it with open source projects.
Face is offline   Reply With Quote
Old 07-21-2015, 05:26 PM   #40
fred18
Addon Developer

Default

Hi guys,

I didn't expect to promote such a discussion

Actually my thinking is quite simple: I think that the code in the end will work fine, and that it is already not too bad, since I've been developing for orbiter for a while now. I'm not a professional so sometimes the code will look silly as said, but I won't stop developing, no worries

Thank to both of you for your consideration!

PS: I'll release the code already with the basic version of MS2015 (the Vinka's replica), so it will be open source immediatly.
fred18 is offline   Reply With Quote
Old 07-28-2015, 05:43 PM   #41
fred18
Addon Developer

Default

Hi guys,

I'm not far from the end of the default Vinka implementation, complete with autoguidance etc.

I'm finishing the autoguidance implementation and I wonder if the following command are actually used or not (never saw them in use):

spin, AoA, target, Attitude

as well as Disable(pitch) and Disable(roll).

As far as disable I've used only "jettison" up to now, never saw a Disable pitch or disable roll call.

About the other I can actually implement them, but I have to figure out how to do it properly.

What are your thoughts about this?

cheers guys

Fred
fred18 is offline   Reply With Quote
Thanked by:
Old 07-28-2015, 06:13 PM   #42
kerlix
Donator
Default

Quote:
Originally Posted by fred18 View Post
 Hi guys,
...as well as Disable(pitch) and Disable(roll).

As far as disable I've used only "jettison" up to now, never saw a Disable pitch or disable roll call.


What are your thoughts about this?

cheers guys

Fred

First off, awesome job. I'm no programmer. At all. But having this "modernized" is such a great idea. Thank you for your time in doing this.

As for the "disable" calls: (Not knowing a thing about programming or how the module(s) work) Does this module support failures? For example, it could be used to disable certain parts of the ascent programming in the event of an engine failure, etc. to enable realistic abort procedures. Or something along those lines if a dev decided to get that detailed in their work.

That's the only thing that I could think of. But again, I have no knowledge on the subject and what the modules are able to do/handle.


If this offered no help at all, I apologize. I'm just grateful to you for your work on this, as well as to all the others here that are offering their assistance.
kerlix is offline   Reply With Quote
Old 07-28-2015, 06:21 PM   #43
boogabooga
Bug Crusher
 
boogabooga's Avatar
Default

I used spin when I upgraded the New Horizons launch.
http://www.orbiter-forum.com/showthr...1&postcount=20

The target apoapsis (?) which was supposedly a command for the multistage guidance WOULD have been very useful, but IFAIK it didn't work.

I have seen a bug in the multistage guidance where the pitch gets stuck after the routine ends, and you end up spinning around endlessly with no way to control your attitude. Perhaps Disable(pitch, etc.) was meant to prevent the bug from occurring?

Disable(pitch) WAS used by the Neptune-1 add-on.
boogabooga is offline   Reply With Quote
Old 07-28-2015, 07:40 PM   #44
fred18
Addon Developer

Default

Quote:
Originally Posted by kerlix View Post
 First off, awesome job. I'm no programmer. At all. But having this "modernized" is such a great idea. Thank you for your time in doing this.


Quote:
Originally Posted by kerlix View Post
 Does this module support failures?
Will do. Once finished it will have a customizable probability for failures of engines or for rocket explosion. I will implement this at the very end anyway, I want to concentrate first on the more common operations.
Quote:
Originally Posted by kerlix View Post
 If this offered no help at all, I apologize. I'm just grateful to you for your work on this, as well as to all the others here that are offering their assistance.
Comments and suggestions are always helpful

Quote:
Originally Posted by boogabooga View Post
 I used spin when I upgraded the New Horizons launch.
Noted, I'll check because I found some buggy behaviour of vinka on that, I'll fix it

Quote:
Originally Posted by boogabooga View Post
 The target apoapsis (?) which was supposedly a command for the multistage guidance WOULD have been very useful, but IFAIK it didn't work.
I'll see if I can make it work, think so

Quote:
Originally Posted by boogabooga View Post
 I have seen a bug in the multistage guidance where the pitch gets stuck after the routine ends, and you end up spinning around endlessly with no way to control your attitude. Perhaps Disable(pitch, etc.) was meant to prevent the bug from occurring?

Disable(pitch) WAS used by the Neptune-1 add-on.
Could be, I'll see how to manage to avoid the same situation killing the autopilot with all the relevant thrusters at the end of the guidance program. Anyway to obtain disable pitch and roll I'll simply lock the relevant thruster to level 0 and see if this works!

Thanks guys!

---------- Post added at 20:40 ---------- Previous post was at 19:32 ----------

Quote:
Originally Posted by boogabooga View Post
 I used spin when I upgraded the New Horizons launch.
http://www.orbiter-forum.com/showthr...1&postcount=20
I see this in the guidance file, no spin call:

Code:
-10=PlaySound(Sound\Vessel\countdown1.wav)
-5=engine(0,100,5)
0=engine(100,100,1)
2=roll(3, 75, 93.1, 65, 1)
20.0=pitch(65.43, 64.98, 5.0)
25.0=pitch(64.98, 61.39, 5.0)
25=engine(100,60,1)
26=engine(60,60,19)
30.0=pitch(61.39, 57.32, 5.0)
35.0=pitch(57.32, 53.49, 5.0)
40.0=pitch(53.49, 49.88, 5.0)
45.0=pitch(49.88, 46.53, 5.0)
45.01=engine(60,100,0.99)
46=engine(100,100,1)
50.0=pitch(46.53, 43.52, 5.0)
55.0=pitch(43.52, 40.82, 5.0)
60.0=pitch(40.82, 38.40, 5.0)
65.0=pitch(38.40, 36.24, 5.0)
70.0=pitch(36.24, 34.30, 5.0)
75.0=pitch(34.30, 32.56, 5.0)
80.0=pitch(32.56, 31.01, 5.0)
85.0=pitch(31.01, 29.61, 5.0)
90.0=pitch(29.61, 28.69, 5.0)
95.0=pitch(28.69, 4.1, 25)
120=pitch(4.1, 4.1, 80)
200=pitch(4.1, 4.1, 10)
203=fairing()
210=pitch(4.1, 1.0, 36)
210.01=engine(100, 60, 34)
246=pitch(1.0, 1.0, 10)
256=pitch(1.0, 0, 12)
268=pitch(0, 0, 224)
492=engine(100, 0, 1)
493=engine(0, 0, 2)
fred18 is offline   Reply With Quote
Thanked by:
Old 07-28-2015, 08:10 PM   #45
kerlix
Donator
Default

Could it be somewhere else in the scenario file? Spin-up during the EPO before the ejection burn?


EDIT: I'd download the referenced ZIP myself and look through the code myself but I'm currently at work. I may not be able to code, but I've got a partial idea of what the code means. I just don't think my employer would be too happy with me downloading Orbiter files............

Last edited by kerlix; 07-28-2015 at 08:18 PM.
kerlix is offline   Reply With Quote
Thanked by:
Reply

  Orbiter-Forum > Orbiter Addons > Addon Development


Thread Tools

Posting Rules
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Jump


All times are GMT. The time now is 10:30 PM.

Quick Links Need Help?


About Us | Rules & Guidelines | TOS Policy | Privacy Policy

Orbiter-Forum is hosted at Orbithangar.com
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Copyright 2007 - 2017, Orbiter-Forum.com. All rights reserved.