Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - danielhampf

Pages: [1]
Open a Discussion / Accidental illumination of other satellites
« on: February 12, 2024, 09:52:38 AM »
Hello all,

I keep being asked (every few years or so), if there is a danger of our ranging laser accidently hitting another satellite. Of course we know what we are tracking, and if we are not tracking, the laser is off.

But- satellites may pass in front of each other. Some random third-party satellite may be caught in the beam.

Has anybody ever made a study on this? What is the likelyhood? Especially with stronger laser for space debris or the moon, I suppose you really don't want to catch a down-looking Earth observation or spy satellite?


Data and Software Questions / CPF Download from new https server
« on: January 16, 2020, 09:28:24 AM »
Hello all,
you've probably seen the emails about the NASA CPF server changing to https. I now adapted our python script in order to download the CPFs from that new server. I used the requests package rather than curl as I suggested by CDDIS examples. It's a bit tricky since they decided to use a login system which is not very suitable for automated download. Anyway, it works now. I post the code here for your convenience.
A few notes to the code. It's made to work with python3 and the python requests package installed. You need to obtain Earth Data login credentials first and then insert them here in the code (line ~37 / 38). The code will download the V1 CPFs, if you want the new ones, you have to change the target folder. Please note that the script will delete all existing files in the local target folder. If you use the function in a graphical interface, your callback function can update a progress bar etc. If it returns "false", the downloads will be cancelled. The function will return the number of downloaded CPFs.
The script is not entirely by me, it also uses code I found on the Earth Data site.
Comments and cheers welcome, as always.

import os
from glob import glob
import requests

class SessionWithHeaderRedirection(requests.Session):
    AUTH_HOST = ''
    def __init__(self, username, password):
        self.auth = (username, password)   
   # Overrides from the library to keep headers when redirected to or from
   # the NASA auth host.
    def rebuild_auth(self, prepared_request, response):
        headers = prepared_request.headers
        url = prepared_request.url
        if 'Authorization' in headers:
            original_parsed = requests.utils.urlparse(response.request.url)
            redirect_parsed = requests.utils.urlparse(url)
            if (original_parsed.hostname != redirect_parsed.hostname) and \
                    redirect_parsed.hostname != self.AUTH_HOST and \
                    original_parsed.hostname != self.AUTH_HOST:
                del headers['Authorization']
def download_CPFs_ssl(local_dir, update_callback):
    # remove old files
    if not os.path.isdir(local_dir):
    filelist = glob(os.path.join(local_dir, "*"))
    for f in filelist:

    # define urls and credentials
    url = ""
    username = ""
    password = ""

    # make the request to the web site to get filenames
    session = SessionWithHeaderRedirection(username, password)       
    response = session.get(url + "*?list")
    # check if response is okay
    if response.status_code is not
        log.error("Could not connect to CPF server. HTML code: %d" % (response.status_code))
        return False   
    # parse the response and make list of filenames
    lines = response.text.split('\n')
    filenames = []
    for line in lines:
        if line.startswith("#"):    # comment lines
        if line.strip() == "":      # empty lines
        filename, size = line.split()

    # download each file and save it
    excl_list = ["MD5SUMS", "SHA512SUMS", "index.html"]
    for i, filename in enumerate(filenames):
        if filename in excl_list:
        filepath = url + filename
        response =
        with open(os.path.join(local_dir, filename), "wb") as f_out:
        keep_running = update_callback(100. * i / len(filenames))
        if not keep_running:
    return i
if __name__ == "__main__":           
    def print_progress(p):
        return True
    download_CPFs_ssl("./CPF/", print_progress)

Open a Discussion / Re: MPE
« on: November 28, 2017, 11:02:06 AM »
Hello everyone,
since our system is mentioned here I thought I should comment. I have just spoken with the laser safety expert in our institute about this. Since I personally know very little about this topic, I will only summarise his comments.
He has checked the above posts and finds many statements which he thinks might be wrong or at least misleading, and therefore dangerous. His main point was: Calculating MPE is a quite difficult business, and almost impossible to do for a general case. Pulse duration, pulse repetition rate, wavelength, beam diameter and divergence are only some of the factors to take into consideration.
We have a detailed analysis of our current system, that defines what precautions are necessary at what point. Indeed, we are currently eye-safe at a distance of a few hundred meters from the transmitter. If we decrease our divergence in the future, this might change. Our procedures will always reflect the specific analysis.
Toshi, since you helped us so much with the data analysis, I suppose we could try to help you with a safety analysis of a proposed system. However, our laser safety officer is reluctant to do public statements in this forum which people might misunderstand, but rely on and possibly do dangerous things with. But if you could send me your specs via PM, I will try to get an analysis from him.
Best regards,

Timing / Pulse collision avoidance
« on: November 27, 2017, 08:34:48 AM »
Hello everybody,
I am currently re-working our trigger hard- and software and I was wondering about pulse collision avoidance schemes at high rep rates. Currently, we use either:
1) Standard continuous triggering, ignoring pulse collisions. Works okay up to ~5 kHz in our configuration.
2) Burst mode: One ToF fire, one ToF quiet/receive. Works well at all rep rates, but you always loose half of the time.
I suppose for the really high rep rates, burst mode is about the best we can do. But what about 1 to 10 kHz? Do you have any recommendations of pulse collision avoidance schemes? I suppose we could trigger at, say, 5 kHz and reduce to 4.5 kHz every time the ToF come close to N x LI (laser interval). But is that the best we can do? What do you use? What would be an ideal scheme?

Telescopes / Re: CCTV/ICCD/EMCCD cameras for tracking
« on: January 31, 2017, 12:56:46 PM »
Dear Kalvis,
we have been using the Andor Zyla sCMOS camera for about 3 years now and are quite happy with it. It comes as camera link or USB3 version, of which the latter was much more practical to use (we have 3 of these now, 2 USB and one older CL). To your questions:
1) Programming API is pretty good in my opinion, it's a C library that also exists in a precompiled form. I imported the DLL to python and went on from there.
2) There are a number of trigger options, which should enable you to do what you want. E.g. you can trigger via TTL input. The shutter is fully electronical, global or rolling. The camera is also pretty fast, up to some 50 Hz or so if you really push it hard.
3) Pixel size is 5,5 um, the sensor is 2560 x 2160 pixels, which gives us (at 3m focal length) a FoV of 0.3 deg and a scale of 0.5 arcsec per pixel. Pretty useful. And it's cmount.
4) No problems whatsoever so far in rather harsh outdoor conditions. The camera is also rather small and lightweight, which is also nice.
I can also mention that we tested two other cameras that were less useful in this context: First a FLI astro-CCD that had a gigantic chip and thus FoV, but a slow shutter and readout, so you could only take one picture every five seconds or so, and the timing was not accurate either (otherwise very good camera). And an Andor iXon emCCD which is very sensitive, but the camera is somewhat bulky and heavy and the chip is rather small. Unless you expect very low light levels I do not see much point in using any emCCD at the moment.
Ah, and maybe good to know: You'd pay something like eight to ten thousand Euro for it. Maybe a bit expensive for your needs, don't know.
If you need a rather cheap, reliable camera, I can recommend pretty much everything from PointGrey. Sturdy industrial cameras with a good interface, high frame rates, small size, cmount, ethernet or USB connection. Not very sensitive and not very large chip though. We use them for beam monitoring and occasionally on our transmitter telescope.
Hope that helps somewhat...

Pages: [1]