Write Code, Fix The Space Station, Win $10,000


If you want something great to add to your astronaut application, this is your chance. If you can figure out a way to optimize the position of the solar panels for the International Space Station, you’ll win $10,000 from this TopCoder competition.

Positioning the solar arrays on the ISS is an incredibly complex task; if parts of the arrays are in the shadow of other parts, they’ll bend due to the temperature difference and eventually break. NASA would like more power to run science experiments and other cool stuff, so they’re turning to hackers so they can optimize the amount of power generated on the ISS.

Your goal, as a contestant in this completion, is to define the angular position and velocity for each of the joints that connect the solar panels to the station for every point in a 92-minute orbit. Limitations on any solution  include making sure the masts for each panel aren’t in a shadow more than they need to be, making sure the cycle can be repeated each orbit, and making sure the most power is generated on board.

The completion is open, so if you haven’t done enough matrix algebra this weekend feel free to sign up. In any event, you’ll get a cool CAD model of the ISS.


126 thoughts on “Write Code, Fix The Space Station, Win $10,000

  1. Here in france, any decent developper will cost you 600€ a day. That’s about $800. So, the winner (team) will earn 12 days worth of work… I bet the winner will spent at least twice this time, and for that price they will have tenth of team imagining solutions and only one get paid…

    This is not a contest, this is a scam.

        1. Not to mention they obviously aren’t just going to drop the raw code from the contest straight on the ISS and hope it all goes well. Teams of people will surely be going through every line optimizing it and adapting it to work with everything.

          1. Its likely this is used to get rid of some current contractor its an opportunity to get yourself in I think. With all the simulation software they have this would be easy i think, just let a genetic algorithm find an optimal solution by letting it evolve.

            Why didnt NASA post this at the python forums ?

      1. . The contestants with the 10 highest non-zero final scores will be awarded the following prizes.

        1st $10,000
        2nd $5,000
        3rd $3,000
        4th $1,750
        5th $1,500
        6th $1,250
        7th $1,000
        8th $750
        9th $500
        10th $250

        +2 weekly bonus rounds for lack of a better description.

        Week 1 Week 2
        1st $1,000 $1,000
        2nd $750 $750
        3rd $500 $500
        4th $250 $250

        So that is 10 to 18 payouts.

        1. oh and almost forgot the best part “5 stickers that have flown in space and 5 letters of recommendation”

          “There will also be final bonus prizes for the top 5 final finishers. The 1st, 2nd, 3rd, 4th, and 5th place final winners will receive stickers from NASA which have actually orbited the Earth. These stickers were flown on Space Shuttle Endeavour, on mission STS-134, May 16, 2011.”


          1. I remember reading the specs for those NASA’s Gateway Special (I think) project http://en.wikipedia.org/wiki/Getaway_Special .

            It was a way to allow small projects to fly cheaply on the Shuttle, to use up any space and weight they had left over on missions, for colleges and suchlike.

            One of NASA’s requirements was that a payload couldn’t be “crassly commercial”, and included the example of sending up a bunch of plastic discs, just to sell them afterward as “souvenir discs that have been in space!”. Seeing the offer of those fantastic stickers reminds me of that.

            Maybe there’s a future budget in stamp collectors. “First issue! Flown in space!”. Pack a couple of tonnes of stamps on board, then sell them for enough to pay for future missions.

    1. This contest leverages several of the non-monetary benefits of competing for NASA recognition, and in doing so, clears up its tiny, taxpayer-supported budget for other endeavors.
      The participants get to support the space program, scientific research, and take part in a fun competition. The winner gets a non-trivial amount of money, and the acclaim of beating out everyone else. It’s a pretty impressive CV bullet point for anyone in EE/CS, and could potentially make him/her more competitive in the job market.
      It’s not a scam.

      1. “The winner gets a non-trivial amount of money”

        Hey NASA, wake up, it’s not the 70’s anymore, $10K USD IS TRIVIAL.

        Only people going after such small potatoes will be US undergrads or Chinese or Indian code monkeys.

        1. “. . .or Chinese or Indian code monkeys.”

          Save your nationalistic egoism for the next election. Also, referring to people who are not white as “monkeys” risks being taken for a racist. Hopefully that is not the case.

      1. My company in France gives me 2780€ each month. In order to pay me that much, they need to sell me 600€ excl VAT. Once they have payed for the administrative staff, the office fees, the holidays, pensions scheme, health insurance, the days when they won’t be able to sell my work, … The 135€/day I earn cost 600€/day to our customer, and my company do not make profit in the end.

        Please, don’t confuse what you get paid at the end of the month with what your work do cost :)

        1. Billions of people all over the world get less than that. Many well educated and experienced. You need to stop being so parochial and get a sense of proportion as all you’re proving is that you’ve got a serious entitlment problem.

          1. Sounds about right for someone with the talent to provide a good solution to this problem and win the competition. That’s of course if it was guaranteed to him in a contract beforehand. With the gamble of a competition, the risk/reward ratio is just ridiculous for any competitor.

        1. That’s what it cost, not what you earn. The difference is taxes and management overhead. The figure is still over what I think it would really cost you to hire a young engineer from a consulting company (I think it starts around 450€/day)

          1. @James: *Especially* if you’re self-employed. You ask the client E3000 for a full-time week’s work of consulting. If they feel that’s unreasonable, then either your clients are asking you to perform very trivial tasks, or feel that you aren’t actually able to deliver E3000 worth of value to them.

    2. >This is not a contest, this is a scam.

      People aren’t being coerced. If they’re competing, it means that they judge the expected benefits of their efforts exceed the opportunity cost. One benefit is being able to say, “I got 19th out of 381 contestants in a NASA programming challenge.” NASA is [partly] offering its reputation.

    3. What the hell, what’s this selfish attitude doing here!?

      It’s not like NASA will be selling your code afterwards anyway. They are short on money and have a big program. You’re basically doing your bit for helping mankind into SPACE. If that’s not reward enough by itself, then I don’t know.

      1. Helping mankind into space? Aren’t we finding it difficult enough to just live on this planet? If you think it will be any easier for us out in space you’re missing a few facts. The time for human spaceflight has come, and gone, now.

        1. You sir are an idiot.

          “The time for human spaceflight has come, and gone, now.”…….I can not put into words how short sighted this statement is. Most of the best scientific advancements of the last 50 years have been because of human spaceflight. The future of the human race is going to be taking place off of this planet. In fact the continuing existence of the human race may depend on us leaving this planet. Yes you can claim that we should just worry about living on earth first, get it sorted out, then move on to space. However, this would be a mistake. Not only would technological innovation from government organizations like NASA stop but also from the private companies trying to make it there as well. So please sir sit down a think for a moment before you type such an ignorant statement next time and think about this. The PC that we are all using to view this webpage can almost directly trace its technological beginnings to the device that got human race to the moon. So please don’t just view human spaceflight as trivial and past its days, and instead think of it as a tool to drive human innovation to places we don’t even know exist yet.

          1. “I can not put into words”, OK then why are you trying?

            “Most of the best scientific advancements of the last 50 years have been because of human spaceflight.”

            That was then and this is now. Those advancements were going to come anyways if they were useful. NASA buys their electronics on Ebay today because the modern stuff isn’t rated for spaceflight. But you don’t know things like that.

            “The future of the human race is going to be taking place off of this planet.”

            Yeah the plaque we put on Voyager is going to outlive us in all likelihood. Especially if folks with intellects like yours are our future.

            “In fact the continuing existence of the human race may depend on us leaving this planet.”

            I hope it isn’t as bad as you make it out to be. If it is we’re doomed. Wasting resources sending humans into space will only doom us faster.

            “Not only would technological innovation from government organizations like NASA stop but also from the private companies trying to make it there as well.”

            What innovations would those be lately? Stick to things directly related to manned spaceflight as that seems to be your hang up. I’m not against space exploration, just the manned dog and pony shows.

            “So please sir sit down a think for a moment before you type such an ignorant statement next time and think about this.”

            I was sitting and watching Niel take his small step for man. I’ve been thinking about it ever since too.

            “The PC that we are all using to view this webpage can almost directly trace its technological beginnings to the device that got human race to the moon.”

            I was witness to the entire dawn of the PC industry too. It was anti-establishment driven. If you think folks like Steve Jobs and Wozniak had any great love for the military industrial establishment that NASA is part of then you’re smoking better stuff than they did.

            I’m going to let you in on a little secret now, the only reason humans have ever flown in space is to drive the propaganda machines of states. Neither the USA nor the USSR ever gave a damn about science, or the future of humanity. It was all a pissing contest. That is why we don’t do it anymore. We won! Now give it a rest you rabid Star Trek fan.

          2. I concur: people who rubbish spaceflight are basically betraying their own self-hatred in terms of being human. It’s a good thing they do this, though: it gives the more enlightened among us even more impetus to develop spaceflight properly so we can leave them behind on this planet to wallow in their own misery.

        2. “Aren’t we finding it difficult enough to just live on this planet?”

          People who make rockets tend do not find it difficult but people who only make their direct offspings in multiples usually do.

      2. This is market economics 101. NASA thinks the product they want to sell is worth 10k. The majority of sellers of that product say it is not worth it. In compromise NASA is attempting to add value by using an informal logic fallacy: appeal to authority. Essentially meaning NASA believes it is entitled to under-market prices for coders just because they are an authority.

        Now microeconomics being what it is means some people will be swayed by emotion. That is the only way this transaction will take place because, as I have said, the reward is below market-rate.

        If the entirety of the eligible people for this contest were truly logical creatures, there would be no entries at all. *alternatively going meta and people putting in sloppy code knowing that there has to be a winner, even if the winner is not effective.

    4. Only that it’s much worse. You’re assuming a tremendous amount of risk because you need a better solution that other people whose capabilities you have no way of assessing. If I want to gamble, I can buy stocks instead of participating in this pseudo-scam.

  2. And BTW,

    This Competition is open to all members of the TopCoder website, who have agreed to the terms thereof, and who are at least 18 years of age. Competitors must be:

    (i) a U.S. citizen,
    (ii) a lawful permanent resident of the U.S.,
    (iii) a temporary resident, asylee, refugee of the U.S., or have a lawfully issued work authorization card permitting unrestricted employment in the U.S., or
    (iv) a non-U.S. resident authorized in the country in which the member resides while participating in this Competition to perform services as an independent contractor.

    1. Probably for various legal reasons. Anyway, this along with unable to use anything open source on top of a relatively small payout turns this from neat to disgusting doesn’t it?

      Well I’m sure there is someone somewhere that just so happens to refuse to use open source anything, prefers to write their own compilers, never uses libraries, is a US citizen, has a masters level knowledge of math and other associated sciences, has lots of free time, no job, and needs 10,000 for grad school or something. I’m serious! There probably is one, and only one.

      1. Do you need libraries? They’re not after an OS for the whole station, they just need an algorithm. A few inputs from whatever sensors there are, and instructions where to aim the motors. The details of the problem seem to be how to most efficiently point the panel acreage toward the Sun. It’s a geometry problem.

        The actual motor-driving stuff will presumably be done by the existing hardware drivers in the system that NASA integrate the competition-winner’s code into. You’re just providing some maths and a theory.

        1. You seem to have missed something. How are you going to ensure during compile time that something isn’t linked without an open source compiler, which you can’t use for the project?

          Secondly, how are you going to write code without the drivers or interface necessary for IO?

          If all they want is an algorithm, they already have it, right there in the description.

          1. point solar cells at sun using ‘presumably done by existing hardware drivers’
          2. keep solar cells out of shadows as much as possible
          3. ???
          4. BIRRRRD MANNNNNN!!!!

          No, that is not what they are looking for. They are looking for code. Which based on the requirements given cannot be delivered without an extremely custom development environment. That would take hundreds of man-hours at minimum.

          1. >1. point solar cells at sun using ‘presumably done by existing hardware drivers’
            >2. keep solar cells out of shadows as much as possible

            Okay, now translate that into the angles and times needed for each of the joints and gimbals. There’s about 8 of them, as I recall.

            >No, that is not what they are looking for. They are looking for code. Which based on >the requirements given cannot be delivered without an extremely custom development >environment.

            So NASA have launched a competition for something which you have worked out, in 5 minutes, is impossible? Makes you wonder how they made it to the Moon several times and then built and maintained a space station for years, the lunk-heads!

            They don’t need code to drive their motors. They already have that. Presumably on some sort of overpriced mil-spec bus system. What they are specifically and definitely after is a set of angles to feed to those motors, at each particular moment of their orbit / day / year. They already have the code to move the motors, or where else would they be getting their electricity from? Among many other things, the existing drivers presumably have safety factors built-in to stop you de-orbiting the thing.

            The competition is for code to drive a simulator, which is provided. Bridging that to the real thing is still NASA’s job.

    2. Oh wow. thats to bad! i literally just this minute finished the equations to do this task but for moisture evaporators on a hypothetical desert planet with two suns. It’s a shame i live in the UK, now i’ll never get show my work to nASSa. ~( -_-)~

      1. as said below, if you are authorized to be in independent contractor, you can still participate.

        and don’t blame this on NASA, that makes you look childish. This is for compliance with laws, which NASA had nothing to do with passing.

          1. I would imagine it would be your own country, not NASA, who would put such restrictions on you. Not so much a case of being “authorised” as “not-banned”. For citizens of Iran or something, whose government might not appreciate it. I’m not aware of paperwork being required to do work for other countries’ governments, in any civilised countries. I think this is just to cover those other countries.

    3. “(iv) a non-U.S. resident authorized in the country in which the member resides while participating in this Competition to perform services as an independent contractor.”

      And what exactly does that mean? Say I live in Germany and I’ve never worked in U.S. or for a U.S. company – what do I have to do to take part in this competition?

  3. You guys calling this a scam are dumb. Where else can you get the bragging rights that your code is being used by NASA to power the ISS? That right there is an amazing thing for a resume.
    Hell, if I could do it, I would do it for free just for that aspect alone.

      1. There is a difference between being able to recognize something worthwhile to do, and being able to do it. There’s also a big difference between an uninformed opinion and being right about something. It’s up to you to learn those differences, I can’t do it for you.

  4. Seems pretty BS to me. It’s an optimization problem. Writing code to solve it in anything other than AMPL, GMPL or similar is pretty naive. I’ve been messing aboyt a lot w/ GLPK lately, so it looked as if it might be interesting. But not w/ the rules and other BS

    The restrictions on using existing code make is sound more like a scam than a legitimate quest for a solution.

  5. So this things been in space for what? Two days right……..I mean they haven’t found a way to adjust the array based on average position over it’s time in space and the amount of power it created in each position? This is NASA right? Now like some wanna be NASA.

      1. I think it’s a bit of an intellectual fishing expedition. They have this particular set of equipment, but could applying a bit of brainpower get it to do more? Nothing needs building or (expensive!) launching. Just a bit of code to upload.

        It might well not be possible, or only achieve a marginal improvement. So it’s not worth paying big money to make a project out of, but why not dangle some spare cash to see if any geniuses out there were idling over a similar problem?

        And as people have mentioned, I’d LOVE to be able to say that my software drove the solar panels on the friggin Space Station! I’d have T-shirts printed! I’d get tattoos!

    1. It would be a lot easier if you could change the attitude of the ISS. The ideal algorithm would be something like this:

      At time t, change the orientation of the ISS so the the panels are facing the sun, and the solar panel girders are pointing to the north and south poles. Bingo, every panel gets 100% sunlight for half an orbit.

      You’ll need to roll (or yaw, or pitch) the ISS about a degree per day due to the Earth going around the sun, but that’s not hard at all.

      The only problem with this are the Soyuz and Progress and other ships going to or leaving the station. I don’t even know if it’s possible to dock when the station is moving like that.

      1. I think the idea of using code to manipulate electrical motors to position the solar arrays to maximize power is a better idea that using fuel to re-position the space station as it orbits the earth. They would probably be out of fuel in less that a day if they used the above solution.

  6. The solar panels needs to be “facing” the sun at all times. So the first this you do is- ensure the ISS rotates once every 92 minutes.
    After that, you may as well have a few sensors at the bottom of tubes, to “fine track” the attitude. If one “side” is too far forward, tilt the panels SLIGHTLY and let Solar Wind push the ISS back into correct orientation. Just like sailing.

    1. Won’t work. You’re limited on the attitude control of the ISS.

      The competition says you can rotate the ISS slightly around the ‘long’ axis (the axis with the long trusses for the solar panels. You can’t rotate the ISS around any other axis.

      And solar wind? Seriously? That’s as close to zero acceleration as you can get.

      1. OK- so the ‘long’ axis needs to be at 90 degrees to the sun. Then to keep the solar panels facing the right way, you need to rotate with the SARJ (Solar Alpha Rotary Joint) around the long axis – about once every 365 days.
        Shadows (apart form Earth eclipse) only come into play, as you move the long axis away from 90 degrees. If you use the BGAs (Beta Gimbal Assemblies) to ensure each panel gets maximum exposure, the SAW masts (longerons) at the “back” will eventually have a shadow on them. At what angle? It relates to the width of the panels, and the distance between them.
        That data isn’t present on their basic web site. It should be in the CAD file

      2. Edit: Thanks to NASA’s model building site, each array is 4.6 [somethings] wide, by 14.21 [somethings] tall. the trusses S5/6 and P5/6 that seperate the arrays are 5.92 [somethings] long. So, provided you keep those long arms within +/- 38 degrees of perpendicular to the sun, one array WILL NOT cast a shadow on the other, maximising your output. Keeping shadows off longerons, your tolerance drifts out to about +/- 65 degrees.
        Oh, and shout out to NASA: how about some UNITS on your drawings? Feet or metres, should be specified on EVERY Drawing at: http://www.nasa.gov/mission_pages/station/multimedia/scalemodel/index.html

  7. writing rotational algorithms based off “matrix algebra” based off a CAD model with no geometrical or atmospheric data… grabs popcorn

    I guess this is cheaper than paying a russian or german firms fourty times the bounty, and if it doesn’t work just fund another DARPA project…

  8. Admittingly I don’t have a clue to the engineering required to find a solution, and I haven’t written the simplest of code for over 15 years or so, but respectfully I’m going to call bullshit on the scam accusation. Scam is one more misused/overused term anymore. Those who do this as their livelihood aren’t going to take time away from from real time earnings to speculate on wining a contest. Professional level amateurs who enter create code to enter the contest will be writing that code during their leisure time, time where they may or may not productive otherwise. In that case it’s misleading to assign high dollar value to that time spent. No doubt their may be those who write code as their livelihood who may decide to spend a portion of the leisure time working on this, here too it would be misleading to assign their daytime job rate, to support accusation of scam. Reserve the use of the word scam to describe the activity that tanked the world economy, crony capitalism that makes an uneven plying field for us to negotiate.

    Did NASA create this contest to benefit NASA? I hope so?

    One being an independent contractor While that’s not evil, make sure that you understand what it means before submitting your entry, in case you are awarded a prize. Basically the contest winnings will be considered income, and it will be your responsibility to pay the taxes including social security. There may be other things that will trip you up, but those are the items that trip up those are on the labor side of things, and the world of private contractor May be advisable to keep track of the time spent.

    1. I’m also a contractor, part-time. In the US >$500 annual you pay on.

      Unless there is public data on orbital timings, this project isn’t possible. Any code based off simulation will have wrong timings and fail…

  9. I love that even for something like this – where freaking NASA don’t understand how to optimise it – a bunch of commentators chime in in with “It’s actually very simple…”

    Enjoy that ten grand fellas…

    1. it is simple… They teach the math even in US public schools…

      If you had orbital timing data it’d be as simple as using timers and test with a ray tracer engine. There is also the matter of motor control interfaces which are probably classified data. I think they just was the topology of the actual code…

      Also, for some reason I don’t think the reason for this is because the Russians and Germans who are really the brains at NASA can’t do it… It’s publicity…

  10. The solution is trivial. Orient the station so that the axis of rotation of the solar panels is along the North-South axis. Haven’t any of you people played Kerbal Space Program?

  11. I think the best would be to create many random trajectories. These you optimize each locally, so that the power is a local maximum for each (2nd numerical derivative in each direction is below epsilon). You define a crossover between two trajectories as a follow the one, then quickly switch to the other and back again (for closed loops), with two swichposition parameters. You grade the inital population by their power outputs.
    Then the fun begins. You create a new population of permitted crossover trajectories. You do random variations additionally. The probability to kill one trajectory from the population is proportional to a boltzmann factor exp(-deviationtobest/T) similar to the factor in simulated annealing. Better ones stay, but bad ones have a chance to survive. You then start to freeze slowly.
    The best trajectories will survive. Until there are only the very best left.
    This would be a crossover between simulated annealing and genetic algorithms.

    Why I wont code it: because i have no time to spare, i don’t like java, and I don’t want to use c++ to call java code. Also, i am not sure if it works without a cluster. Also, I fail to understand if they consider air-friction, e.g. the night mode with special positioning, nor do I find effect of earths shadow or moon. Also, shading on modules in linearly translated into power loss, which is physically false. They have 4 cells per bypass diode, but this assumption kills the fun.

      1. Yes I am, but you would need to do much more. Also, I think that the “competition” approach could also hinder a good solution. Image what would happen if all these brains actually worked together, and not separated.Still, without the competition, nobody would know about this problem. How to drain communities of ideas and still have public attention to spread your question/problem? While encouraging collaboration? Maybe a page “Nasas challening problems”, which is interesting to academics and hackers. You contribute, you get fame. Maybe some kind of Creative Commons bA for ideas? So if they use your idea implemented by some other guys, all are attributed?

    1. It’s the 8 queens problem, with solar panels for queens. Model the assembly and the sun (I think the Earth is moot) in directx using a fast video card so that the modeling’s fast, and then have the thing check whether anything’s in shadow after the card recalculates everything, for every minute of the orbit. Personally, for ten grand, I can’t be bothered… but that’s the algorithm in a nutshell.

      1. Has anyone thought to shape the panels like trees using fractals? Nature doesn’t make flat trees and these seem to be able to absorb a great deal of light in a small area.

  12. Isn’t this just the Eight Queens problem, but with as many queens as there are joints/panels, and minute by minute solutions for the entire orbit? It sounds like something you could model in an NVidia graphics card (also modeling the light source) and then have it check to see whether anything’s in shadow (hello DirectX)….

  13. Without looking at the specifics, I would guess the panels rotate, and some function of the arms to the panels rotate, To get maximum efficiency, I would include ISS rotation, where it moves at a vector that implements a higher ratio of sun to panel contact, basically start with parts that move the most the outer parts, and can be in a constant rotational state. presuming some behind earth orbit, have the ISS itself rotate consistently in sync with vector that adds lesser need for panel adjustment.

    Ideally the Arms and panels would work the same way, where an initial ‘push’ puts them into a movement vector of best vector. Set the ISS, the Arms, and the panels in a sync where one push will keep them in sunlight for an entire orbit cycle, then each cycle add force equivalent to lost force of friction again on next orbit. Preferably the reset of ISS would be its rotational rate. so no added force is used. if all joints were 360 degree rotation, that same formula could be used for all the panels and arms, so that there would be no power use (except counter to the friction on rotation) to keep them aligned.

    Although that would probably need to be done in design stage, but is the top level best design, one push, in sync per cycle to compensate for rotational loss by friction, where each ‘rotational part’ by its own inertia stays in best vector.

    Basically either by adding mirrors, and 360 design, the formula for inertial turning to keep panels at best vector could be achieved. There is a combination of rotation, and possibly added reflective surfaces that could achieve that effect with the only power being the minimum of overcoming bearing friction. and without ever having to go against a previous force added by change of direction.

    That is the optimal solution, since a system where the only force used is overcoming bearing friction is maximum efficiency.

  14. Considering the size of the sun, the size of an orbit around earth, and distance to sun, why would the solar panels ever need to have any energy used to move them, point them at the sun, and they would stay pointed at the sun.

    If you get the sync right, you wouldn’t even have to adjust for yearly rotation around the sun, since even the elliptical difference is not that much.

    I presume you were making the comment that those with access to light don’t need any change or adjustment. You are making the presumption the path is already perfect, and that can be shown to not be the case, by the beer and travel money issue.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.