Watney Astrometry - solveri tähtikuvaukseen

Aloittaja Jusas, 30.01.2022, 20:31:08

« edellinen - seuraava »

Jusas

Tervehdys!

Ajattelin aloittaa aiheesta tänne keskustelun: eli olen tässä noin viimeisen puolentoista vuoden aikana työstänyt omaa astrometristä solveria, jolle nimeksi lopulta tuli Watney Astrometry. Nyt vihdoin olen todennut että aika ja koodi on kypsä sen kunnolliselle julkaisulle, joten tässä sitä nyt sitten ollaan.

Projektin koti ja lähdekoodi:
https://github.com/Jusas/WatneyAstrometry

Pilvessä pyörivä demo-solveri:
https://watney-astrometry.net

Mitä ihmettä, mistä nyt on siis on kyse?

Noh, tosiaan tuossa 2020 syksyllä aloin pohtimaan taivasta kuvatessani, että kuinka nämä astrometriset solverit (astrometry.net, ASTAP) oikein toimivat. Samalla myös kaiversi mieltä että kuinka vaikea esim. astrometry.net on käytettävyydeltään tai etenkin asennettavuudeltaan, ja olin huomannut kuinka muutama muukin paini samantyyppisten ongelmien kanssa. Esimerkiksi solverin jakamiseen pienelle joukolle ihmisiä ei ollut mitään hyvää keinoa, sillä astrometry.netin palvelinasennus oli sellaista salatiedettä, että sitä tuskin osasi kukaan. Aikoinaan herran wuonna 2018 yritin lähestyä tätä ongelmaa rakentamalla kevyen rajapinnan astrometry.netin konsolipohjaisen solverin päälle (astrometry-api-lite), mutta ratkaisu ei ollut erityisen hyvä, ja kuten aina, klassisen Windows-asennuksen kanssa oli melkoista häslinkiä. Astrometry.net kun ei siis pyörähdä käyntiin natiivisti Windowsissa, vaan vaatii WSL:n (Windows Subsystem for Linux) ylipäätänsä toimiakseen. Aika ajoi tästäkin ratkaisusta ohi WSL2:n ja astrometry.netin päivitysten myötä, ja koska tällaista asetelmaa oli ikävä ylläpitää niin oli helpompaa vain antaa asian olla.

Asioista viisastuttuani lähdin miettimään, että olisiko realistista lähteä toteuttamaan kokonaista solveria itse. Tutustuin ASTAPin dokumentaatioon ja sen solverin algoritmin periaatteisiin, ja selvisi että ASTAPin ratkaisu oli sinänsä melko nerokas eikä tuntunut ollenkaan mahdottomalta toteuttaa sama itsekin. Siitä se sitten oikeastaan lähti. Päätin ottaa tämän haasteena, ja pikkuhiljaa yksi asia kerrallaan toteuttamaan sitä kaikkea mitä kokonainen solveri lopulta vaatiikaan, liikkeelle lähdettiin kuvan lukemisesta ja tähtien havaitsemisesta kuvasta.

Ehkä vielä haluaisin erotella ne syyt miksi tähän hommaan läksin:

- Oma mielenkiinto
- Olemassaolevat ratkaisut eivät ole riippuvuuksista vapaita, ovat vaikeita asennettavia tai käytettäviä
- Olemassaolevien ratkaisujen käytetyt ohjelmointikielet ovat hankalammin lähestyttäviä (c, python, object pascal) kuin valitsemani kieli, C#
- Moni olemassaoleva astronomiaan/kuvaukseen käytetty ohjelmisto on kirjoitettu C#:lla, joten kirjastomainen toteutus voisi hyödyttää laajaa yhteisöä

Hommahan tietysti lopulta paisui vähän muuhunkin kuin pelkkään koodikirjastoon, täytyyhän olla työkalut jolla solveria käytetään, joten luonnollisena jatkeena komentorivipohjainen sovellus piti kehittää. Lisäksi Watneyn toiminnan demonstrointia varten halusin toteuttaa pilvipohjaisen solverin, jotta kynnys testata solveria olisi mahdollisimman alhainen. Lopulta myös käyttöönotto olemassaolevien sovellusten kanssa tulisi olla mahdollisimman yksinkertainen, joten toteutin itsenäisesti ajettavan REST API -sovelluksen, joka tarjoaa sekä Watneyn oman natiivin API:n (jolle ei luonnollisesti ole vielä yhtäkään käyttävää sovellusta) että Astrometry.net yhteensopivan API:n - toisin sanoen mikäli olemassaoleva sovellus tukee astrometry.net online solveria, Watneyn voi ottaa käyttöön korvaamaan sen, koska rajapinta on yhteensopiva.

Eli lopulta tuotoksena tuli sovelluskokonaisuus, jolla toivon mukaan on tulevaisuudennäkymiä.

Nyt huutelenkin vähän tänne suuntaan, että mikäli mielenkiinto heräsi ja käytät jotakin solveria jo nyt, niin olisi mahtavaa jos kokeilisit Watneyta tavalla tai toisella. Luonnollisesti jos käytät solveria olemassaolevien sovellusten kautta, niin tässä vaiheessa käyttö lähinnä rajaantuu joko huvikseen tuon pilvipohjaisen solverin testaamiseen tai Watneyn käyttämiseen tuo astrometry.net yhteensopivuus-API:n kautta. Tai kenties olet sovelluskehittäjä ja otat kirjaston suoraan käyttöösi, mitä sovellusta ikinä kehitätkään. Yksi seuraavista listallani olevista asioista on Watneyn komentorivisovelluksen tuen kehittäminen KStars/Ekosiin, joka on melko laajalti käytetty ilmainen sovellus.

Kaikenlaista hassunhauskaa voi solverista vielä löytyä - mutta tänään Watney näki vihdoin päivänvalon. Itse olen tätä jo parvekekuvauksissani testaillut nimenomaan KStars/Ekosilla käyttäen tuota yhteensopivuusrajapintaa, ja iloisin lopputuloksin.

Toivottavasti tästä on nyt hyötyä yhdelle jos toisellekin harrastajalle :)

Terveisin,
Jussi Saarivirta

naavis

Tämähän vaikuttaa mielenkiintoiselta! Täytyy pian ottaa kokeiluun. Monet kerrat on itsekin tullut mm. Astrometry.netin toimintaperiaatteita selvitettyä ja tehtyä omia protoja, mutta siitä ei ole syntynyt mitään valmista.

Jusas

Potentiaalinen käyttäjäkunta pikkuhiljaa laajenee - olemme tehneet Rob Lancasterin kanssa kollaboraatiota (StellarSolver-kirjaston kehittäjä) ja seuraavaan KStarsin versioon on tulossa tuki Watneylle. Itseasiassa se on jo nyt saatavilla lähdekoodissa, mikäli itse vain kääntää ohjelman. Tähtien havaitsemiseen tuettuna on sekä Watneyn oman sisäänrakennetun star extractorin käyttö että StellarSolverin tarjoaman extractorin käyttö profiileineen.

Samaan aikaan olen parannellut suorituskykyä sekä lisännyt muutamia pieniä ominaisuuksia, nykyinen versio on huomattavasti vikkelämpi blind solven kanssa kuin ensijulkaisu. Pitäisikin ajaa ja päivittää benchmarkit uudelleen, on jo sen verran erilaiset lukemat mittarissa. Jopa blind solven kanssa voidaan puhua jo sekunneista tai kymmenistä sekunneista ihan Raspberry Pi-tasoisen laitteen kanssa.

Jusas

Ilokseni voin ilmoittaa, että juuri julkaistu KStars 3.5.8 tukee Watneytä yhtenä solverivaihtoehtona. Eli jos haluatte tukea kotimaista vaihtoehtoa, tässä teille on nyt sellainen  :azn:

Seuraavana mielessä on ollut dotnet FITS-kirjaston vääntäminen (kunnollista kun ei näytä oikein olevan, paitsi vanhalle .NET Frameworkille joka ei tue kuin Windowsia), ja/tai jonkinlaisen FITS-tiedostojen indeksointisovelluksen kehittäminen hyödyntäen solveria. Yhtälailla solverissa on vielä pari tunnistettua paikkaa performanssin parantamiseen, mutta tärkein milestone on nyt saavutettu siinä mielessä että solveria on nyt mahdollista käyttää osana laajalti käytettyä ilmaista KStarsia.