Saturday, April 4, 2015

Satellite tracking with telescope

So after years of trying to get a video of the International Space Station, we finally did it! Here's the result:

This video is centered by using a weighted-average of the following video:

So how do you get a video like that? Well here's what the setup looked like a few minutes before ISS passed overhead! A telescope, some computers, in a parking lot 10 meters from our front door.

Here's a schematic diagram of the setup:

How does it work? Well, you need a telescope and a camera. A classic orange Celestron C8 (30+ years old) and a Celestron NexImage webcam get the job done. It helps to have a Telrad to center the telescope on moving targets. This is all you really need! Oh, maybe a broomstick to manually slew the telescope to ISS.

If you want automated tracking, then things get a bit more tricky. From this point on, everything is custom. For the guidescope, a Logitech webcam that has the lenses removed is attached via some Thorlabs optics to a 150mm lens. So the light coming from infinite distance (ISS is pretty far away) is focused onto the detector at a distance of 150mm. The webcam is held onto the optics with packing tape.

A custom guidescope: a Logitech webcam with lenses and case removed attached via Thorlabs optics to a 150mm lens

The guidescope sends low resolution images over a relatively large field of view, and because it's a small 25.4mm diameter lens, the amount of light collected is pretty low so it can only track bright objects such as planets, bright stars, or ISS. The guidescope is connected to a Gateway laptop that is running Labview software. The Labview software finds the coordinates of the brightest object in the image using a simple algorithm: weighted mean of all pixels above a user-defined threshold. The user also inputs desired coordinates. So there's a deltaX and a deltaY of coordinates which are used to control the Right Ascension (RA) and Declination (D) velocities. The user-defined X and Y are set to line up such that the satellite is in frame on the imaging webcam. Here's a video of the setup tracking Jupiter (before alignment of 3 axes):

At the end of the video you can see the Telrad pretty close to aligned with Jupiter!

Here it is after alignment of all 3 axes, and you can see Jupiter in the main imaging webcam.

To control the telescope, Labview sends commands via ASCOM Telescope MoveAxis rate commands. So we are updating the desired RA and D rates. These commands are sent via a USB to serial port to the Celestron Advanced GT mount hand controller. Here's a screen shot of the custom tracking software GUI:
Labview GUI screenshot

This is where it's refreshing that blogs are not peer reviewed. The following works, but I don't know why! I don't know exactly how to solve the control system for this telescope. If someone has ideas for this, please let me know. Attached is my best guess for what I'm doing, but I haven't solved it using Laplace transforms or anything like that due to the mysterious motor controller black box. Perhaps someone has a good model for how the motor controller and physical response of telescope?  The factor of 1/cos(D) is because as the declination approaches the polar axis (D=90 degrees), the RA becomes less and less sensitive. In fact, at D=90 degrees, moving RA only rotates the image, it does not actually move laterally!

It would be nice if Celestron or ASCOM allowed us to control the current (in Amps) directly to the motor. Any insight here would be appreciated! But the bottom line is that despite the uncertainty in why exactly it works, it does in fact work!

Warmup schedule

2 weeks before ISS pass:

2 days before ISS pass:

2 hours before:

  • start up laptop, check software (Labview has a tendency to crash randomly!)
  • bring telescope outside, set up telescope mount such that highest point of transit is perpendicular to polar axis of equatorial mount. So the perpendicular-to-equatorial plane should intersect the highest point of the transit. We want the highest point of the trajectory at declination = 0 degrees to get highest sensitivity on our motors.
  • Align 3 axes: Telrad, guidescope, main telescope
  • Focus main tube on bright object (moon, jupiter, bright star). 
  • check that telescope can slew over entire predicted trajectory (or as much as possible)

2 min before

  • switch to manual mode, use XBox controller to move around, get familiar with up/down, control, etc
  • start scanning the sky for ISS 

During ISS pass

  • use Xbox controller and Telrad to point telescope at moving target
  • once ISS is in the center of the Telrad and velocity is approximately correct, press "A" button to enable automatic tracking
    • if program "locks on" then great!
    • if program loses lock, then press "B" to enable manual mode and try again
  • Use Sharpcap running on second laptop to save video file from Celestron Neximage webcam, adjust exposure using Philips webcam control driver

1 minute after

90% of the time: Curse and cry due to fog on lens, algorithm error, incorrect alignment of axes, clouds, car driving by, etc etc.

10% of the time: PARTY!

1 hour after

Postprocessing of AVI file in Matlab (cropped to weighted centroid). No color adjustements, etc, performed.

Any comments or questions definitely welcome!


Oom Hank Verwest and late Aunt Barbara Verwest for kindly giving me the Celestron C8 telescope tube.

Tim Long and Rick Burke of ASCOM for posting useful information online

Thierry Legault's websiteRalf van de BerghSylvain Weiller and Atroguyz for inspiration

Thanks to my girlfriend Fernanda for spotting ISS, but mostly for keeping me company through all the failed attempts at capturing ISS :)


  1. Hi, It's Jesse, I'm continuing the discussion started on Yahoo's ASCOM group...

    You've got deltaX/Y above as desired - tracked. I'm assuming your desired is constant, viz. the center of the FOV, and thus any delta is primarily due to the satellite's motion. I'm suggesting this delta or "error" term is much larger than it needs to be if you tracked the satellite using a standard propagator such as that found on the Project Pluto site I linked.

    I'm not clear which links were broken. The only link you actually need is the one that saves a zip file of his C/C++ source. I have/had no problem accessing this source over several years. It's old school (pre-OOP) stand-alone code that compiles w/o issue. I've even written a Matlab wrapper for it (and I'm no expert). I've not written any Labview in ten years but that's likely doable as well. The idea is that you can use this code to create a set of satellite positions that should give you a decent open loop track of any satellite you have the TLE for. Your deltaX/Y terms should become much smaller making things easier for your closed loop control. You don't fuss w/the polar axis nor should it be necessary. Your closed loop control system becomes more 'generic' as it can also be incorporated by others using other open loop tracking such as that provided by TheSkyX, SiTech ( who I think uses the Project Pluto source) and even PC-TCS (alas no longer in business).

    Hopefully I've been a little more clear. You can email me: jmgoldba at yahoo and I can reply w/the propagation source if you're interested and still have trouble w/links.


    1. Hi Jesse,
      Thanks very much for the ideas. It sounds like a challenge, but possibly doable! The only downside would be that by moving the mount I'm able to track any orbit. With your proposed method I would need to be polar aligned, which would prevent looking at any satellites close to N or S due to the inherent deficiences of my GE mount when it comes to tracking satellites near the poles. I'll think about your ideas some more though. In the near future I'll just stick with what I have and improve focus/collimation, but it would be neat to do TLE prediction and "close the loop" using a guidescope as you suggest. That could allow for tracking many satellites in a night. That would be fully automated tracking! As they say in academia, this is "future work"! (aka who knows if I'll ever get around to it!)


    2. Hello,
      Alas GE's are not ideal for tracking. We performed some open loop tracks on our GE using an add-on software package available for our PC-TCS mount control software. I would select a target from and determine start/stop times using his Pass Details chart to ensure the mount stayed on the same side of the pier.

      That being said, we've upgraded one of our mounts to use the SiTech controller and recently received the hardware to upgrade another. Dan Gray from SiTech is very interested in satellite tracking. He includes open loop tracking w/the software (and many other useful features). A YouTube track video is at: Another YouTube video demonstrating his alt-az controller (for satellite tracking?) is at: I don't recall if he's working on a closed loop capability but it'd be nice to have, especially with a smaller FOV.

  2. Hi Bob!

    Thank you for your contribution to a long standing problem. Did you move the C8 from its fork mount to the german mount yourself ? I currently own an old C8 with a fork mount + wedge and I'd like to move it to a modern german equatorial mount. Do you have any tips about that procedure for those wishing to do the same thing ? Which mount are you using?


    1. Hi Matt,
      Thanks for the kind words! Yes, I spent a few months playing with the fork mount. It was actually from England, so I took apart a commercial 220V 50Hz inverter and added a variable resistor to the RC part of the circuit to be able to have variable speed. It sort of worked, but I much prefer the GE mount. I bought a mount online from It's pretty straight forward to set up the new mount if you know how an Allan key works ;) It ended up being lighter than the old cast-iron fork I was using which makes it more practical too. I thought it was a Celestron CG-5 Computerized Mount, but it says "Advanced GT" on the side.


    2. By the way does anyone want to buy a fork mount? It's vintage ;)

  3. Thank you Bob, this definitely sounds encouraging! I'll have to do it too. Wishing you more ISS fun... and good luck for your PhD.

  4. This comment has been removed by a blog administrator.

  5. This comment has been removed by a blog administrator.