Jank Mission Design Tool

From Stanford SSI Wiki
Jump to navigation Jump to search

This is a guide

Welcome! This article is intended to guide you through an SSI process. While its authors have made efforts to make it useful, if you have questions, please ask the authors on Slack. They will be able to both help you and improve this resource for future SSI-ers.

This article was written by Joan Creus-Costa SlackLogo.png@{{{display-name}}} .

The Jank Mission Design Tool (also known as JMDT) is a piece of software developed by Satellites as part of the development of SSISAT-1. It's available on GitHub


  • C++ code with a Python wrapper for plots and glue. It's very fast: about 800 simulated days in orbit per second using the most simple settings (and a time step of 10 seconds), and a respectable 150 simulated days per second using WGS84, and simulating both solar panels and drag.
  • Takes 3D models of an arbitrary satellite as input, so it can figure out what power the satellite is getting from any orientation, and what the frontal area for drag is. Painfully enough, it even takes into account when parts of the satellite are blocking part of the solar panels. This is computed on the GPU using OpenCL.
  • Three gravity models: point mass, WGS84, EGM96.
  • Three atmospheric models: none, US1976 and NRLMSISE-00.
  • Adams-Bashforth-Moulton integrator.
  • Can simulate two satellites at a time.
  • Change the control "mode": pointing at the other satellite, point radially, point prograde, point at the Sun. This changes the solar output and total drag, which can be useful when designing a mission and evaluating the power requirements and availability.
  • When the time comes, one can *somewhat* trivially perform hardware in the loop with this tool as the physical plant and, before that, debug control algorithms.


  • Joan Creus-Costa <jcreus@stanford.edu>
  • Sasha Maldonado <amaldona@stanford.edu>

Installation on Corn

JMDT provides a handy script to install it on Corn, Stanford's shared computing cluster.

  • Install an SSH client. If you're on Linux or Mac, you have one installed already and do not need to do anything. If you're on Windows, Stanford recommends Mobaxterm.
  • SSH into corn: ssh -AX [your sunet id]@corn.stanford.edu. For example, ssh -AX amaldona@corn.stanford.edu. You will likely need to use two-factor authentication.
  • Clone jmdt: https://github.com/stanford-ssi/jmdt.git
  • cd jmdt
  • ./let_there_be_jank
  • source ~/.bashrc
  • Compile jmdt: make
  • Run a Python script, like python diff_drag.py

To edit files, you can either use God's own editor, vi, or use gedit, a good graphical editor. After editing C++, you'll have to recompile: you can do that with make. If you edit a Python file, re-running it will do the job.

JMDT is hosted through GitHub, and in order for you to collaborate on it, you will need to upload your changes and download others' changes regularly. See Git and GitHub for details on how to do so.