SlideShare a Scribd company logo
1 of 24
pw-sat.pl www.future-processing.com
.NETowiec w
Kosmosie2017.12.01 | Maciej Nowak
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k2
https://www.youtube.com/watch?v=oSsqaUjLTrg
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k3
PW-Sat2
 Drugi polski satelita studencki
 CubeSat 2U
 Studenci PolitechnikiWarszawskiej
• Mechanika
• Elektronika
• Eksperymenty
 Future Processing
• Oprogramowanie komputera pokładowego
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k4
PW-Sat2
 Podstawowa misja:
• przetestowanie żagla deorbitacyjnego
 Cele drugorzędne
• Test mechanizmu otwierania paneli słonecznych
• Pomiar przyjętego promieniowania
• Test czujnika Słońca
• Zrobienie zdjęcia
 Start: kwiecień 2018
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k5
CubeSat
 Nanosatelity wynoszone na orbitę przy okazji innych misji
 Powszechnie dostępne elementy elektroniczne
 Wykorzystywane do przeprowadzania eksperymentów
 Koncepcyjnie przypominają „duże” satelity ale są tańsze
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k6
Bus + Payload
Żagiel deorbitacyjny
Kamery
Payload
Bus
Układ zasilania (EPS)
Komunikacja (COMM)
Kontrola orientacji (ADCS)
Komputer pokładowy (OBC)
Czujnik słońca
Panele słoneczne
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k7
Bus + Payload
Payload
Bus
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k8
Bus + Payload
Żagiel deorbitacyjny
Kamery
Payload
Bus
Panele słoneczne
Układ zasilania (EPS)
Komunikacja (COMM)
Kontrola orientacji (ADCS)
Komputer pokładowy (OBC)
Czujnik słońca
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k9
Zadania OBC
 Przetrwać
 Wykonywanie planu misji
 Obsługa telekomend
 Zbieranie telemetrii
 Housekeeping
 Wykonywanie eksperymentów
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k10
Hardware
Laptop
 4 rdzenie, 64-bit, 2.8GHz
 16GB RAM
 512GB SSD + 1TB HDD
 Komunikacja: USB,TCP
OBC
 ARM Cortex-M3, 48MHz
 Brak FPU
 1MB SRAM
 1MB pamięci programu
 16MB pamięci trwałej
 Komunikacja: I2C, SPI, UART
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k11
Toolchain
 C++14
 GCC arm-none-eabi 5.4
 CMake + make
 GoogleTest
 RapidCheck
 QEMU (unit testy)
 Testy integracyjne – Python 2.7
 Jenkins
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k12
Toolchain
OBC EM Pamięci DeviceMock
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k13
RTOS
 Nie ma „klasycznego” systemu operacyjnego
 Stosuje się RTOS (Real-Time Operating System), np. FreeRTOS
• Łączony z docelowym programem jak biblioteka (5 plików)
• Wielowątkowość z wywłaszczeniem
• Podstawowe mechanizmy synchronizacyjne (kolejka, semafor)
 Konieczna jest ręczna kontrola ilości pamięci zużywanej przez wątki
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k14
Pętla misji
SystemState state;
while(1)
{
for(auto& u: _updates)
u.Update(state);
for(auto& a: _actions)
if(a.CanExecute(state))
a.Execute(state);
Sleep(10s);
}
Update
• Bieżący czas
• Status anten
• Warunek otworzenia żagla
Action
• Otwieranie anten
• Otwieranie żagla
• Okresowy restart
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k15
Komunikacja
Mój dom
 30Mb/s
 Dostęp cały czas
 Wysokopoziomowe protokoły
(TCP, HTTP, REST)
PW-Sat2
 Uplink 1200 bps
 Downlink 9600 bps
 5 minut dziennie
 Telekomendy
 Nieskorelowane odpowiedzi
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k16
Komunikacja
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k17
Beacon
 Wysyłany co 60 sekund stan satelity (telemetria)
 180 wartości
 1831 bitów = 228,875 bajtów
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k18
Garść
statystyk
 5 osób
 2 lata
 381 pull requestów
 1 960 commity
 1 322 unit testy
 170 testów integracyjnych
 Ponad 70k linii kodu
Dzięki!
Clean room, Centrum Badań Kosmicznych
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k20
BIS: CUTE-1.7
+ APD II
 Nanosatelita, 20cm x 15cm x 10cm, 3kg
 Wystrzelony w 2008
 Zbudowany przezTokyo Institute ofTechnology
 Oparty na PDA zWindows CE.NET
 Komunikacja z podzespołami przez USB
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k21
BIS:Konfigurac
ja
 W 1991 satelita ERS-1 nie utrzymywał orientacji na orbicie
 Powód: odwrotnie zamontowany magnetorquer (fancy magnes)
 Rozwiązanie: korekcja (mnożenie przez -1) w oprogramowaniu
 Wniosek: trzeba być przygotowanym na proste poprawki
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k22
BIS:Dane
wejściowe
 Satelita Hipparcos (1989 – 1993)
 Wymagał okresowej aktualizacji danych
 Błąd w danych 10e-6 zamiast 10E-6
• Oprogramowanie zignorowało błędny fragment (e-6)
 Efekt: wygenerowany moment obrotowy milion razy za duży
. N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k23
BIS: Command-Query
Separation
 Moduł ADCS – gotowy produkt dostępny na rynku
 Jedna z funkcjonalności: pomiar pola magnetycznego
 Sposób użycia: Polecenie (rozpocznij pomiar) + Polecenie (zwróć
wartość)
 Problem: zbyt szybkie zapytanie o wartość, powoduje anulowanie
pomiaru
 Rozwiązanie: Sleep
Dzięki!

More Related Content

More from Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

More from Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

[FDD 2017] Maciej Nowak - .Netowiec w kosmosie

  • 2. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k2 https://www.youtube.com/watch?v=oSsqaUjLTrg
  • 3. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k3 PW-Sat2  Drugi polski satelita studencki  CubeSat 2U  Studenci PolitechnikiWarszawskiej • Mechanika • Elektronika • Eksperymenty  Future Processing • Oprogramowanie komputera pokładowego
  • 4. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k4 PW-Sat2  Podstawowa misja: • przetestowanie żagla deorbitacyjnego  Cele drugorzędne • Test mechanizmu otwierania paneli słonecznych • Pomiar przyjętego promieniowania • Test czujnika Słońca • Zrobienie zdjęcia  Start: kwiecień 2018
  • 5. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k5 CubeSat  Nanosatelity wynoszone na orbitę przy okazji innych misji  Powszechnie dostępne elementy elektroniczne  Wykorzystywane do przeprowadzania eksperymentów  Koncepcyjnie przypominają „duże” satelity ale są tańsze
  • 6. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k6 Bus + Payload Żagiel deorbitacyjny Kamery Payload Bus Układ zasilania (EPS) Komunikacja (COMM) Kontrola orientacji (ADCS) Komputer pokładowy (OBC) Czujnik słońca Panele słoneczne
  • 7. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k7 Bus + Payload Payload Bus
  • 8. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k8 Bus + Payload Żagiel deorbitacyjny Kamery Payload Bus Panele słoneczne Układ zasilania (EPS) Komunikacja (COMM) Kontrola orientacji (ADCS) Komputer pokładowy (OBC) Czujnik słońca
  • 9. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k9 Zadania OBC  Przetrwać  Wykonywanie planu misji  Obsługa telekomend  Zbieranie telemetrii  Housekeeping  Wykonywanie eksperymentów
  • 10. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k10 Hardware Laptop  4 rdzenie, 64-bit, 2.8GHz  16GB RAM  512GB SSD + 1TB HDD  Komunikacja: USB,TCP OBC  ARM Cortex-M3, 48MHz  Brak FPU  1MB SRAM  1MB pamięci programu  16MB pamięci trwałej  Komunikacja: I2C, SPI, UART
  • 11. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k11 Toolchain  C++14  GCC arm-none-eabi 5.4  CMake + make  GoogleTest  RapidCheck  QEMU (unit testy)  Testy integracyjne – Python 2.7  Jenkins
  • 12. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k12 Toolchain OBC EM Pamięci DeviceMock
  • 13. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k13 RTOS  Nie ma „klasycznego” systemu operacyjnego  Stosuje się RTOS (Real-Time Operating System), np. FreeRTOS • Łączony z docelowym programem jak biblioteka (5 plików) • Wielowątkowość z wywłaszczeniem • Podstawowe mechanizmy synchronizacyjne (kolejka, semafor)  Konieczna jest ręczna kontrola ilości pamięci zużywanej przez wątki
  • 14. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k14 Pętla misji SystemState state; while(1) { for(auto& u: _updates) u.Update(state); for(auto& a: _actions) if(a.CanExecute(state)) a.Execute(state); Sleep(10s); } Update • Bieżący czas • Status anten • Warunek otworzenia żagla Action • Otwieranie anten • Otwieranie żagla • Okresowy restart
  • 15. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k15 Komunikacja Mój dom  30Mb/s  Dostęp cały czas  Wysokopoziomowe protokoły (TCP, HTTP, REST) PW-Sat2  Uplink 1200 bps  Downlink 9600 bps  5 minut dziennie  Telekomendy  Nieskorelowane odpowiedzi
  • 16. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k16 Komunikacja
  • 17. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k17 Beacon  Wysyłany co 60 sekund stan satelity (telemetria)  180 wartości  1831 bitów = 228,875 bajtów
  • 18. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k18 Garść statystyk  5 osób  2 lata  381 pull requestów  1 960 commity  1 322 unit testy  170 testów integracyjnych  Ponad 70k linii kodu
  • 19. Dzięki! Clean room, Centrum Badań Kosmicznych
  • 20. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k20 BIS: CUTE-1.7 + APD II  Nanosatelita, 20cm x 15cm x 10cm, 3kg  Wystrzelony w 2008  Zbudowany przezTokyo Institute ofTechnology  Oparty na PDA zWindows CE.NET  Komunikacja z podzespołami przez USB
  • 21. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k21 BIS:Konfigurac ja  W 1991 satelita ERS-1 nie utrzymywał orientacji na orbicie  Powód: odwrotnie zamontowany magnetorquer (fancy magnes)  Rozwiązanie: korekcja (mnożenie przez -1) w oprogramowaniu  Wniosek: trzeba być przygotowanym na proste poprawki
  • 22. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k22 BIS:Dane wejściowe  Satelita Hipparcos (1989 – 1993)  Wymagał okresowej aktualizacji danych  Błąd w danych 10e-6 zamiast 10E-6 • Oprogramowanie zignorowało błędny fragment (e-6)  Efekt: wygenerowany moment obrotowy milion razy za duży
  • 23. . N E T o w i e c w K o s m o s i e | 2 0 1 7 . 1 2 . 0 1 | M a c i e j N o w a k23 BIS: Command-Query Separation  Moduł ADCS – gotowy produkt dostępny na rynku  Jedna z funkcjonalności: pomiar pola magnetycznego  Sposób użycia: Polecenie (rozpocznij pomiar) + Polecenie (zwróć wartość)  Problem: zbyt szybkie zapytanie o wartość, powoduje anulowanie pomiaru  Rozwiązanie: Sleep

Editor's Notes

  1. Film PW-Sat2
  2. Drugi polski satelia studencki, standard CubeSat 2U (patrz model). Studenci PW – mechanika, eksperymenty, część elektroniki Future Processing – oprogramowanie komputera pokładowego
  3. Misja podstawowa – żagiel deorbitacyjny, czas na orbicie 20lat -> rok Cele drugorzędne – algo kontroli orientacji, otwieranie paneli słonecznych, pomiar przyjętego promieniowania, zdjęcie
  4. CubeSat, nanosatelity, 1U, 2U, powszechnie dostępna elektronika (sklep z częściami) Koncepcyjnie jak duże satelity Zastosowanie: eksperymenty, testy technologii
  5. Bus – potrzebne do wykonania misji, ale nie misja sama w sobie Payload – misja (to co najistotniejsze)
  6. Podział nie jest obcy, patrz systemy które rozwijamy Bus – system operacyjny, serwery baz danych, biblioteki, Commonsy, Infrastructura Payload – to na czym system zarabia – przetwarzanie zamówień, zarządzanie budynkami
  7. Pracuję na OBC, więc o OBC będę mówił. Ważne: OBC nie jest celem samym w sobie, ma służyć innym podsystemom
  8. Laptop vs OBC
  9. Toolchain
  10. Toolchain
  11. Mało pamięci, wolny procesor -> brak systemu operacyjnego w stylu Windows czy Linux RTOS – biblioteka do wątków (20 tysięcy linii z komentarzami) Ręczna kontrola pamięci
  12. Komunikacja mój dom vs satelita. Telekomendy + odpowiedzi jak UDP
  13. A oprogramowanie będziemy aktualizować tak
  14. Dzięki
  15. Japoński nanosatelita, na Windows CE.NET, dalej działa
  16. Prawdziwa historia, ERS-1 obracał się nie tak jak powinien Magnotorquer (generuje obrót poprzez oddziaływanie z polem magentycznym) był zamontowny na odwrót. Szybka zmiana ustawień i mnożenie przez -1 aby naprawić błąd przy montażu Wniosek: ustawienia na proste poprawki (np. URLe, numery portów)
  17. Warto sprawdzać dane wejściowe
  18. Korzystamy z gotowego modułu ADCS, Jedna z funkcji – pomiar pola magnetycznego Sposób użycia Problem: zleciliśmy pomiar, zapytaliśmy o wynik – zapomniał zrobić pomiar Rozwiązanie: Sleep między rozpoczęciem pomiaru a zapytaniem o wartość – jak długi? Wyznaczone doświadczalnie Wniosek: zapytania nie powinny modyfikować stanu
  19. Dzięki