This post kicks off a series about software. I present a set of open-source Python-based tools which enable powerful functionality in computation, programming, and visualization. Before starting I think it is important to address one question:

How is this relevant to navigation systems?

Indirectly. Guidance, navigation, and control (GNC) algorithms are designed, tested, and implemented in any number of languages and hardware. It is precisely the flexibility, availability, and extendibility of python which makes it most useful to a field like GNC engineering.

What is Python?

Python is a general-purpose, high-level programming language used in a wide variety of fields. Combined with an extensive selection of open-source libraries, Python can provide an interactive computational environment paralleling commercial tools. Functionalities like plotting, data input/output, calculus and linear algebra tools are all available in Python. With the added advantage of being a programming language, Python brings flexibility and extendibility to a project.

So is this just another software language? Well, in some sense it is. The toolset we will present are largely based on Python. But the skills and discipline acquired through using these tools apply much more generally and will streamline one's work flow when using other tools.

100-ways to Get Started

Sign Post

The landscape of tools and even the multitude of installation options can be daunting for new comers. This series sheds light on these options and hopes to save you time in finding the right setup for your needs. Before jumping into the links and downloads, consider the following environments and see which catches your eye.

Bare Bones: Terminal and Editor

Text Editor and Terminal

If you like to make your own pizza dough, then this bare bones setup is for you. This light-weight setup involves firing up the python interpretor and separately opening your favourite text editor.

Notebook: Mix Text, Code, and Plots

Web-based Notebook with cells

This setup combines code with the superb rendering capabilities of modern web browsers. This environment runs in the browser and allows one to both write and run code, add paragraphs of text (including Latex equations), and embed plots all into a single notebook file. This is amazingly useful for documentation or course lessons. When saved, both input and output results are captured all into a single self-contained file.

Not good enough? The notebook file can be easily converted into other formats like Latex, html, or PDF.

Integrated Development: Think MATLAB Workspace

IDE window

Hook up that huge external monitor as this single program packs together all the tools required to iterate quickly on a piece of engineering or scientific software. In one corner is the built-in text editor. The python interpretor sits nearby (aka command-line window). Other supporting windows may contain a list of current variables and documentation for function usage.


Depending on the application, each of these three environments have their strengths and weaknesses. There is nothing wrong with having all three installed and switching between them depending on your needs. This brings highlights the closing point: you have lots of flexibility. This can be a strength and a weakness as it can be daunting at first. But if you stay the course, this flexibility will pay-off as being empowering.