Hacker News new | past | comments | ask | show | jobs | submit login

I have a question about control flow of the overall system. Note that I haven't actually run this or debugged it. Or frankly, thought about it for more than a minute or two. Its more of an architectural question.

So in dragon.clj there's a case statement to execute commands in the translate function such that the command to go down or left in an abstract calculated sense is implemented as hitting a virtual down or left keyboard key.

What happens if you have to go down AND left?

I was just thinking why not pass a Clojure list to the translate function and when list contains a down it hits the virtual s key AND if the list contains a left command it hits a virtual a key, then you could wiggle "down-left" at the same time.

I mean, obviously it works and sometimes architectural decisions have no technical reason and are arbitrary, which would be perfectly OK. I was just idly curious.

Clojure is cool, like programmer catnip, so I had to look at it.




Heh, never thought about it that way! But good question. Yes, it can translate on 2 axes at the same time, since the control loops for each axis run in separate threads, so there is no control locking. The same is with rotation - it can e.g. pitch, roll and yaw at the same time.


So if you click one of the rotate buttons after it has zeroed out the offsets will it correct? Is it using a PID model or something else?


The SpaceX simulation is simplistic enough and gives you enough data that you really don't need a PID controller to hit the target numbers.


Totally agree I’m just trying to learn PID control and seeing a few different implementations in javascript (to solve the same problem) has actually been quite informative.


Just from a layman, this is so freaking cool, thank you for writing it and sharing it!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: