From philcrump.co.uk
Jump to: navigation, search
Screenshot of habrotate v0.6.1

HABrotate is a simple piece of software that controls PstRotator with automatically calculated AZ/EL using the Payload Position Telemetry from the database at habitat.habhub.org. This is the database that feeds the map at spacenear.us

The software is compiled for Microsoft Windows and has been tested on:

  • Windows XP SP3 32-bit
  • Windows 7 32-bit
  • Windows 7 64-bit


Github Code Repository: github.com/philcrump/habrotate

Thanks to Daniel Richman for the earthmaths.py code that performs most of the tricky bearing/distance calculations.

Thanks to Noel G8GTZ for patient testing of early versions.


  • Unpack the .zip archive
  • First Installation
    • Rename config.json.dist to config.json
    • Edit the config.json file for your station, for details see Configuration.
  • Double-click the shell.bat file, that will give you a command shell in the directory.
  • Type: habrotate-cli.exe and press enter.
    • If this doesn't give you an error, double-clicking on habrotate-cli.exe directly will work in the future.
  • The program will list the active flights in the Habitat Database, any that have a launch date today will be highlighted with - TODAY
    • Select the flight by typing in it's number, and pressing enter.
  • The program will now query habitat for the flight's latest position (from any payload) every 10 seconds, calculate the Distance, Azimuth and Elevation and send the UDP Control String to PstRotator.

PstRotator Setup

  • Under the 'Communication' menu, open 'UDP Control Port..' and check it is set to 12000
  • Under the 'Setup' menu, tick 'UDP Control'

And you should be good to go!


station_latitude, station_longitude

  • Enter the Latitude, Longitude of your station, specifically the antenna rotator, here.


  • "auto" will cause this to be queried from the Google Maps API.
  • Only used for Elevation, so you can leave this as auto unless you have an AZ/EL setup and the Google Maps value is inaccurate.

udp_ip, udp_port

  • These are where habrotate sends the control packets to, and should be the client PstRotator interface. If you are running it on the same machine then the defaults will be fine.

hysteresis, overshoot

  • The rotator will not be moved unless the error is great than the number of degrees specified by hysteresis. Movement of the rotator will then overshoot by the specified number of degrees to minimise rotor movement.
  • Overshoot must be small than hysteresis, or else oscillation could occur. The program will not run in this condition.

Known Issues

  • Assumes all Payloads in a single Flight will always be at the same position. - GitHub Issue #1
    • Not always true - eg. Helioss/Vortex
  • In the absence of flight telemetry, the antenna should be pointed to the launch site - GitHub Issue #6
  • Server side code is slower than it should be to respond for latest position, and latency worsens with server load - GitHub Issue #2

Issues should be filed in the Github Issue Tracker