×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Satellite confusion

  • Posts: 18
  • Thank you received: 14

Replied by Romain Fafet on topic Satellite confusion

I have done a small script in python for satellite tracking but I haven't yet tested it on real hardware.

You need Python (follow instructions on indilib.org/support/tutorials/166-instal...on-raspberry-pi.html) and PyEphem:
$ pip3 install --user pyephem

Here is the script in python:
# --- Settings ---
# Change following parameters according to your need
 
# Geographic location
latitude = '43:43:47.0'
longitude = '6:54:00.0'
 
# Satellite TLE (can be retreived on https://www.space-track.org)
TLE_line_1 = '1 25078U 97077B   16358.24735839  .00000123  00000-0  34052-4 0  9990'
TLE_line_2 = '2 25078  86.3977  85.5078 0003714 108.4484 251.7118 14.38084761998341'
 
# INDI settings
host = 'localhost'
port = 7624
driver_name ="Telescope Simulator"
 
# Script settings
update_delay = 1 # delay in s between updates
 
# --- Code ---
import PyIndi
import time
import sys
import threading
import ephem
from math import pi
 
# default client
class IndiClient(PyIndi.BaseClient):
    def __init__(self):
        super(IndiClient, self).__init__()
    def newDevice(self, d):
        pass
    def newProperty(self, p):
        pass
    def removeProperty(self, p):
        pass
    def newBLOB(self, bp):
        pass
    def newSwitch(self, svp):
        pass
    def newNumber(self, nvp):
        pass
    def newText(self, tvp):
        pass
    def newLight(self, lvp):
        pass
    def newMessage(self, d, m):
        pass
    def serverConnected(self):
        pass
    def serverDisconnected(self, code):
        pass
 
 
 
 
# connect the server
print("Connection to " + host + ":" + str(port) + " ... ", end='')
indiclient=IndiClient()
indiclient.setServer(host,port)
if (not(indiclient.connectServer())):
    print("FAILED")  
    print("No indiserver running on "+indiclient.getHost()+":"+str(indiclient.getPort()))
    sys.exit(1)
print("OK")
 
# get the telescope device
print("Get driver '"+ driver_name + "' ... ", end='')
device_telescope=None
telescope_connect=None
device_telescope=indiclient.getDevice(driver_name)
while not(device_telescope):
    time.sleep(0.5)
    device_telescope=indiclient.getDevice(driver_name)
print("OK")
 
# wait CONNECTION property be defined for telescope
print("Wait CONNECTION property be defined ... ", end='')
telescope_connect=device_telescope.getSwitch("CONNECTION")
while not(telescope_connect):
    time.sleep(0.5)
    telescope_connect=device_telescope.getSwitch("CONNECTION")
print("OK")
 
# if the telescope device is not connected, we do connect it
if not(device_telescope.isConnected()):
    print("Driver not connected, try to connect it ... ", end='')
    # Property vectors are mapped to iterable Python objects
    # Hence we can access each element of the vector using Python indexing
    # each element of the "CONNECTION" vector is a ISwitch
    telescope_connect[0].s=PyIndi.ISS_ON  # the "CONNECT" switch
    telescope_connect[1].s=PyIndi.ISS_OFF # the "DISCONNECT" switch
    indiclient.sendNewSwitch(telescope_connect) # send this new value to the device
    t=10
    while not(device_telescope.isConnected()) and t>0:
        time.sleep(1)
        t-=1
    if not(device_telescope.isConnected()):
        print("FAILED")  
        print("Failed to connect the driver")
        sys.exit(1)
    print("OK")
 
# We want to set the ON_COORD_SET switch to engage tracking after goto
# device.getSwitch is a helper to retrieve a property vector
print("Set tracking mode ... ", end='')
telescope_on_coord_set=device_telescope.getSwitch("ON_COORD_SET")
while not(telescope_on_coord_set):
    time.sleep(0.5)
    telescope_on_coord_set=device_telescope.getSwitch("ON_COORD_SET")
# the order below is defined in the property vector, look at the standard Properties page
# or enumerate them in the Python shell when you're developing your program
telescope_on_coord_set[0].s=PyIndi.ISS_ON  # TRACK
telescope_on_coord_set[1].s=PyIndi.ISS_OFF # SLEW
telescope_on_coord_set[2].s=PyIndi.ISS_OFF # SYNC
indiclient.sendNewSwitch(telescope_on_coord_set)
telescope_radec=device_telescope.getNumber("EQUATORIAL_EOD_COORD")
while not(telescope_radec):
    time.sleep(0.5)
    telescope_radec=device_telescope.getNumber("EQUATORIAL_EOD_COORD")
print("OK")
 
# Configure PyEphem
print("Configure PyEphem ... ", end='')
obs = ephem.Observer()
obs.lon = longitude
obs.lat = latitude
satellite = ephem.readtle('TARGET',TLE_line_1,TLE_line_2)
print("OK")
 
while 1:
    # compute satellite coordinates
    obs.date = ephem.now()
    satellite.compute(obs)
    print(obs.date)
    print("    RA: ",satellite.ra)
    print("    DEC:",satellite.dec)
    print("    ALT:",satellite.alt)
    print("    AZ: ",satellite.az)
 
    # We set the desired coordinates
    telescope_radec[0].value=ephem.hours(satellite.ra)*24/2/pi
    telescope_radec[1].value=ephem.degrees(satellite.dec)*360/2/pi
    indiclient.sendNewNumber(telescope_radec)
 
    time.sleep(update_delay)   
The following user(s) said Thank You: pauledd, fehlfarbe, Radek Kaczorek, Andrew, Petrus Hyvönen
7 years 3 months ago #13298

Please Log in or Create an account to join the conversation.

  • Posts: 1309
  • Thank you received: 226

Replied by Andrew on topic Satellite confusion

This looks amazing. Haven't tried it yet. But I can tell this is some nice work. Is it possible to enable GPSD for automatically setting location? And can this work while offline if I update the TLE's from space-track first?
7 years 3 months ago #13306

Please Log in or Create an account to join the conversation.

  • Posts: 1309
  • Thank you received: 226

Replied by Andrew on topic Satellite confusion

How do I run this?
7 years 2 months ago #13344

Please Log in or Create an account to join the conversation.

  • Posts: 1309
  • Thank you received: 226

Replied by Andrew on topic Satellite confusion

I am getting a Syntax Error on line 59 when running it in terminal.
print("connection to " + host + ":" + str(port) + " ... ", end= ' ')
7 years 2 months ago #13345

Please Log in or Create an account to join the conversation.

  • Posts: 314
  • Thank you received: 34

Replied by pauledd on topic Satellite confusion


Try to run with python above 2.7. I had to switch to python 3.x
--= human, without Windows™ =--
pls excuse my bad english! :)
Last edit: 7 years 2 months ago by pauledd.
7 years 2 months ago #13346

Please Log in or Create an account to join the conversation.

  • Posts: 1309
  • Thank you received: 226

Replied by Andrew on topic Satellite confusion

I have installed Python 3.x. It is version 8.1.1. For some reason the upgrade command to 9.0.1 is downloading the upgrade package, but installs version 8.1.1
7 years 2 months ago #13368

Please Log in or Create an account to join the conversation.

  • Posts: 314
  • Thank you received: 34

Replied by pauledd on topic Satellite confusion

I dont know what distribution you are using. I am on gentoo linux and here we have version 3.5.2 as latest.
--= human, without Windows™ =--
pls excuse my bad english! :)
7 years 2 months ago #13369

Please Log in or Create an account to join the conversation.

  • Posts: 18
  • Thank you received: 14

Replied by Romain Fafet on topic Satellite confusion

I forgot to mention that python 3 was required. I am still working on it and I will write the documentation when it will be finished.

Has anyone tried it? Could you give me your feedback on the tracking ?
7 years 2 months ago #13370

Please Log in or Create an account to join the conversation.

  • Posts: 314
  • Thank you received: 34

Replied by pauledd on topic Satellite confusion

Just with the simulators, works so far. Waiting for clear sky for a real test. I recently tried to catch a
satellite in kstars by slewing to its track some minutes before it enters the field of view. But I did not find it
in the exposure. Maybe it was not bright enough or the track was wrong or something else... I'll report back on success.
--= human, without Windows™ =--
pls excuse my bad english! :)
7 years 2 months ago #13374

Please Log in or Create an account to join the conversation.

  • Posts: 1309
  • Thank you received: 226

Replied by Andrew on topic Satellite confusion

I have Python v3.5.2 installed, and is producing that invalid syntax error
7 years 2 months ago #13390

Please Log in or Create an account to join the conversation.

  • Posts: 314
  • Thank you received: 34

Replied by pauledd on topic Satellite confusion

It might be not enough to have it installed. You also need to run python3x explicitly if there is also python2 coinstalled, and that depends on your linux distribution.
But have you tried:?
python3 pyephem.py
--= human, without Windows™ =--
pls excuse my bad english! :)
7 years 2 months ago #13398

Please Log in or Create an account to join the conversation.

  • Posts: 314
  • Thank you received: 34

Replied by pauledd on topic Satellite confusion

I tried to reproduce the track of a satellite:

Target Date: 30. Dez. 2016 17:24 UTC+1 (Berlin)
Location:
latitude = '51:3:29.34'
longitude = '13:46:33.24'
Target: ARIANE 40 R/B (Catalog Number: 22830)
Space-Track Data:
0 ARIANE 40 R/B
1 22830U 93061H   16364.00328609 -.00000053  00000-0 -24714-5 0  9995
2 22830  98.8887   9.4732 0011806  66.9235 346.0813 14.31413803213905

If I start kstars and set the target date the satellite is just above the star Mizar (Ursa Major) (only visible disabled).
I also checked in stellarium, the satellite is at the same position.


But when I enter the data in the pyephem script and run it , it tracks a complete different position in kstars:


It seems the script uses the system time in UTC to show the position in kstars but wouldnt it be usefull (i dont know if it is possible) if it where using the time that is currently set in kstars (in cases I want to simulate a session)?
--= human, without Windows™ =--
pls excuse my bad english! :)
7 years 2 months ago #13402

Please Log in or Create an account to join the conversation.

Time to create page: 0.525 seconds