SlideShare uma empresa Scribd logo
1 de 26
Hummingbird: an Open
Source Ground Segment
for Small Satellites
 A true story of doing things different

GSAW 2012
Gert Villemos (Villemos Solutions)
Mark Doyle (Logica) and Johannes Klug (Logica)
What is ‚Hummingbird„

•     An open source software framework (Apache License)

•     For building ground segment systems for small satellites

•     A „back to basics‟ approach

•     Using simplicity as a design principle

•     Pushing as much functionality as possible to existing
      technologies


                                www.hbird.org and facebook

© Logica 2012. All rights reserved          HTML5 and JavaScript rock!   No. 2
The world



                 5 years…




                                                                  8 years…

© Logica 2012. All rights reserved   HTML5 and JavaScript rock!              No. 3
The world we live in




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 4
Business Plan


                                                                  2.0
                                                                  1.0




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!         No. 5
Back to Basics




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 6
Thesis

• Ground segment systems for satellites is no longer special;
  we move data from A to B

• Modern network technologies can be used and are better.
  Lets stop reinventing the wheel

• Complexity is inherited (… and often cultural) and propagates
  through our systems. It is the root of all evil

• Find the root course and remove it. Ground segment system
  can be really simple




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 7
‚New„ Implementation Concept


              Us                                                                  Someone else




                                                           This is hardly brain surgery




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                                  No. 8
Technology Stack (fantastic four)

•   Spring
•   Camel
•   ActiveMQ
•   Cometd



... and yes, its all Java




      ... But components in other
     languages can be integrated



© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 9
Evolution

Hummingbird 0.1
• Classical separation into tiers (transport, business, presentation)
• CCSDS stack Frames → Packets → Parameters
• Distribution of predefined types
• Centered on centralized „System Model‟ (think runtime XTCE)

Hummingbird 0.2
• CCSDS stack „banned‟ to transport tier, fully encapsulated
• True asynchronous processing
• Semantic information model, non-relational databases
• Distribution of „what-ever‟ with plugable services



© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 10
System Integration



                                                   GHttp JPA
                                              JBI         Krati
                                                     SAX    Crypto
                                        APNS
                                             AMQP
                                                Nagio
                                                  RNG       RNC JDBC
                                                s HL7 JMX
                                     JMS       Kestre
                                               UDP      SMTP HDF
                                          SQL l
                                            IRC       Comet
                                                    SIP       SRMI
                                      FTP     TCP        LDAP
                                                      XMPP
                                                      d
                                        SNMPPOP RSS SSH REST
                                              JCloud AWS
                                      Mina
                                          DNSs    PAX JT400
                                                              File
                                      Atom iMAP Hazelcas
                                                                   t




© Logica 2012. All rights reserved    HTML5 and JavaScript rock!       No. 11
Semantic Data
Demand complete                                               Scalable               Extendible
rethinking of processing                                                  stateOf
model. An architectural
driver.                                                                                 State X
                                                       Name
                                                                                        Description
                                                        Raw Value
                                     withRaw
  Description                                           Eng Value
                                                                           stateOf
                                                        Description
                                                                                       Description

                                                        State A

Description                                             State B

                                     stateOf            State C
                                                                                     Description
                Non-normalised                                           stateOf

© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                      No. 12
Service


                               B                                               B
                                                                                          p4

         Limit Check Service                                        p1        p2   p3
         Consumes: Parameter message
         Emits: State Parameter
         Description: The limit check service
         takes as input a parameter, checks its                     e1             e2     e3
         limit and emmits a state parameter
         corresponding to the limit with value
         „true‟ (in limit) or „false‟ (out of limit).
                                                                  Parameter        State Heartbeat
         Heartbeat Service
         Consumes: None
         Emits: Heartbeat
         Description: Issues a ‚alive„ message at
         intervals.




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                                      No. 13
First Flight




Coming up
• EstCube (University of Estland)
• Strand (Surrey Satellites)
• TechDemoSat-1 (UK Space Agency)

© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 14
Initial Results

 • Having implemented guestimated 10% of the functionality of
   similar existing systems
 • Commanding (scheduling, pre release
   validation, release, verification and history)
 • Monitoring (parameter creation, limit check, consistency
   check, calibration and history)
 • Orbit and contact prediction                   New code base 1k LoC




Existing code
                                                                   Projected code base
base ~1m Lines
                                                                   10k LoC
of Code (LoC)


 © Logica 2012. All rights reserved   HTML5 and JavaScript rock!                    No. 15
Value

• Highly motivated staff, learning by doing

•     Concepts feedback into winning „normal‟ work

•     Door opener to new, and frequently unexpected,
      markets

•     Great PR

•     Neither predictable nor quantifiable but very real




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 16
Business Model

•     Open Source Core

•     Enterprise Edition
•     Liability
•     Tested
•     Proven
•     Documented
•     Evolution plan
•     Ahead of the curve

•     Services and added value products



© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 17
Conclusions

•     Nothing is more convincing than to stop talking and start
      doing

•     Standard technologies (of course) work for space data
      systems

•     System integration can be very simple, we make it complex

•     ‚Managing„ an open source community is not simple




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 18
?              ?   !       ?
                                         !     ?           ? !        !   ?




                                              Questions?



     Read more at: www.hbird.org and facebook


© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                   No. 19
Business Tier


                                                                  CometD Streaming
          Spring Component Assembly




                 Camel Integration



                              ActiveMQ Distribution




                                                                   Services


© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                      No. 20
WARNING: Source code ahead!




 ... the message is not in the code itself, but in the changes to the code


© Logica 2012. All rights reserved   HTML5 and JavaScript rock!              No. 21
The Modern Code Base
 public class Manager implements IManager {

     protected IWorker worker = new Worker();

     public void manage() {
       worker.work("1:2:3");
     }
 }



 public class Worker implements IWorker {

     protected IPublisher publisher = new Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
       for (String element : elements) {
         long value = Long.parseLong(element);
        publisher.display(value);
       }
     }
 }



 public class Publisher implements IPublisher {

     public void display(long value) {
       System.out.println("Test value: " + value);
     }
 }


© Logica 2012. All rights reserved    HTML5 and JavaScript rock!   No. 22
The Modern Code Base
 public class Manager implements IManager {

     protected IWorker worker = new Worker();

     public void manage() {
         worker.work("1:2:3");
     }                                                                Only three lines of
 }
                                                                      business logic here...

 public class Worker implements IWorker {

     protected IPublisher publisher = new Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
         for (String element : elements) {
           long value = Long.parseLong(element);
          publisher.display(value);
         }
     }
 }



 public class Publisher implements IPublisher {

     public void display(long value) {
   System.out.println("Test value: " +
 value);
     }
 }
© Logica 2012. All rights reserved       HTML5 and JavaScript rock!                            No. 23
The Modern Code Base
 public class Manager implements IManager {                        <bean id=“manager” class=“foo.Manager”/>

     protected IWorker worker = new Worker();                      <bean id=“worker” class=“foo.Worker”/>

     public void manage() {                                        <bean id=“publisher” class=“foo.Publisher”/>
       worker.work("1:2:3");
     }                                                             <route>
 }                                                                       <from uri=“timer://foo?period=60000”/>
                                                                         <to uri=bean:manager" />
                                                                         <to uri=“bean:worker”/>
                                                                         <to uri=„bean:publisher"/>
 public class Worker implements IWorker {                          </route>

  protected IPublisher publisher = new
 Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
       for (String element : elements) {
         long value = Long.parseLong(element);
        publisher.display(value);
       }
     }
 }


 public class Publisher implements IPublisher {

     public void display(long value) {
       System.out.println("Test value: " + value);
     }
 }


© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                                  No. 24
The Modern Code Base
 public class Manager implements IManager {                        <bean id=“manager” class=“foo.Manager”/>

     protected IWorker worker = new Worker();                      <bean id=“worker” class=“foo.Worker”/>

     public void manage() {                                        <bean id=“publisher” class=“foo.Publisher”/>
       worker.work("1:2:3");
     }                                                             <route>
 }                                                                       <from uri=“timer://foo?period=60000”/>
                                                                         <to uri=bean:manager" />
                                                                         <split>
                                                                                <method bean=“worker”/>
 public class Worker implements IWorker {                                       <to uri=„bean:publisher"/>
                                                                         </split>
  protected IPublisher publisher = new                             </route>
 Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
       for (String element : elements) {
        long value = Long.parseLong(element);
        publisher.display(value);
       }
     }
 }


 public class Publisher implements IPublisher {

     public void display(long value) {
       System.out.println("Test value: " + value);
     }
 }


© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                                  No. 25
The Modern Code Base
                                                                   <bean id=“manager” class=“foo.Manager”/>
 public class Manager {
                                                                   <bean id=“worker” class=“foo.Worker”/>
     public String manage() {
       return "1:2:3";
                                                                   <bean id=“publisher” class=“foo.Publisher”/>
     }
 }
                                                                   <route>
                                                                         <from uri=“timer://foo?period=60000”/>
                                                                         <to uri=bean:manager" />
                                                                         <split>
                                                                                <method bean=“worker”/>
 public class Worker {                                                          <to uri=„bean:publisher"/>
                                                                         </split>
     public String[] work(String values) {                         </route>
       return values.split(":");
     }                                                             Massive code base reduction
 }

                                                                   Only business logic in the
                                                                   code, routing in the configuration

                                                                   Fantastic code metrics (no
 public class Publisher {
                                                                   coupling)
     public void display(long value) {
       System.out.println("Test value: " + value);                 100% test coverage easy to reach
     }
 }

© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                                  No. 26

Mais conteúdo relacionado

Mais procurados

Foreman presentation at NYC puppet users
Foreman presentation at NYC puppet usersForeman presentation at NYC puppet users
Foreman presentation at NYC puppet usersohadlevy
 
Inside Sql Azure - Cihan Biyikoglu - SQL Azure
Inside Sql Azure - Cihan Biyikoglu - SQL AzureInside Sql Azure - Cihan Biyikoglu - SQL Azure
Inside Sql Azure - Cihan Biyikoglu - SQL AzureCihan Biyikoglu
 
Openflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson CollaborationOpenflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson CollaborationEricsson Labs
 
Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical ISSGC Summer School
 
2010 10 provxg_datagovuk
2010 10 provxg_datagovuk2010 10 provxg_datagovuk
2010 10 provxg_datagovukJun Zhao
 
Sparse Content Map Storage System
Sparse Content Map Storage SystemSparse Content Map Storage System
Sparse Content Map Storage Systemianeboston
 
Granularity in linked open data
Granularity in linked open dataGranularity in linked open data
Granularity in linked open dataGordon Dunsire
 
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsTendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsManoel Lemos
 
Lte security overview
Lte security overviewLte security overview
Lte security overviewaliirfan04
 

Mais procurados (15)

JavaYDL9
JavaYDL9JavaYDL9
JavaYDL9
 
09slide
09slide09slide
09slide
 
The NERD project
The NERD projectThe NERD project
The NERD project
 
Frame mode mpls
Frame mode mplsFrame mode mpls
Frame mode mpls
 
Foreman presentation at NYC puppet users
Foreman presentation at NYC puppet usersForeman presentation at NYC puppet users
Foreman presentation at NYC puppet users
 
Inside Sql Azure - Cihan Biyikoglu - SQL Azure
Inside Sql Azure - Cihan Biyikoglu - SQL AzureInside Sql Azure - Cihan Biyikoglu - SQL Azure
Inside Sql Azure - Cihan Biyikoglu - SQL Azure
 
Openflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson CollaborationOpenflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson Collaboration
 
Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
2010 10 provxg_datagovuk
2010 10 provxg_datagovuk2010 10 provxg_datagovuk
2010 10 provxg_datagovuk
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Sparse Content Map Storage System
Sparse Content Map Storage SystemSparse Content Map Storage System
Sparse Content Map Storage System
 
Granularity in linked open data
Granularity in linked open dataGranularity in linked open data
Granularity in linked open data
 
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsTendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
 
Lte security overview
Lte security overviewLte security overview
Lte security overview
 

Destaque

Personal Learning Networks
Personal Learning NetworksPersonal Learning Networks
Personal Learning NetworksLauren Rorke
 
Senior Project Speech
Senior Project SpeechSenior Project Speech
Senior Project Speechsheb4657
 
Senior project Pictures
Senior project PicturesSenior project Pictures
Senior project Picturessheb4657
 
Senior Project Stand and Deliver
Senior Project Stand and DeliverSenior Project Stand and Deliver
Senior Project Stand and Deliversheb4657
 
Senior Project Research Paper
Senior Project Research PaperSenior Project Research Paper
Senior Project Research Papersheb4657
 
My Final Dissertation
My Final DissertationMy Final Dissertation
My Final DissertationMichele Capra
 

Destaque (6)

Personal Learning Networks
Personal Learning NetworksPersonal Learning Networks
Personal Learning Networks
 
Senior Project Speech
Senior Project SpeechSenior Project Speech
Senior Project Speech
 
Senior project Pictures
Senior project PicturesSenior project Pictures
Senior project Pictures
 
Senior Project Stand and Deliver
Senior Project Stand and DeliverSenior Project Stand and Deliver
Senior Project Stand and Deliver
 
Senior Project Research Paper
Senior Project Research PaperSenior Project Research Paper
Senior Project Research Paper
 
My Final Dissertation
My Final DissertationMy Final Dissertation
My Final Dissertation
 

Semelhante a Open Source Ground Segment for Small Satellites

SD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons LearnedSD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons LearnedTed Leung
 
The Forces Driving Java
The Forces Driving JavaThe Forces Driving Java
The Forces Driving JavaSteve Elliott
 
OpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosOpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosBrent Salisbury
 
Cloud Foundry Demo SD Forum Cloud Sig Feb09
Cloud Foundry Demo SD Forum Cloud Sig Feb09Cloud Foundry Demo SD Forum Cloud Sig Feb09
Cloud Foundry Demo SD Forum Cloud Sig Feb09Chris Richardson
 
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2Sid Anand
 
Turmeric SOA Cloud Mashups
Turmeric SOA Cloud MashupsTurmeric SOA Cloud Mashups
Turmeric SOA Cloud Mashupskingargyle
 
AKKA and Scala @ Inneractive
AKKA and Scala @ InneractiveAKKA and Scala @ Inneractive
AKKA and Scala @ InneractiveGal Aviv
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Brent Salisbury
 
Notes on a High-Performance JSON Protocol
Notes on a High-Performance JSON ProtocolNotes on a High-Performance JSON Protocol
Notes on a High-Performance JSON ProtocolDaniel Austin
 
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...gogo6
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedTed Leung
 
Visualizing content in metadata stores
Visualizing content in metadata storesVisualizing content in metadata stores
Visualizing content in metadata storesXavier Llorà
 
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph Ceph Community
 
ghfghg
ghfghgghfghg
ghfghghoefo
 
Critical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software DesignCritical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software Designtop500
 
NIG系統報表開發指南
NIG系統報表開發指南NIG系統報表開發指南
NIG系統報表開發指南Guo Albert
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetupsEran Gampel
 

Semelhante a Open Source Ground Segment for Small Satellites (20)

SD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons LearnedSD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons Learned
 
The Forces Driving Java
The Forces Driving JavaThe Forces Driving Java
The Forces Driving Java
 
OpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosOpenStack and OpenFlow Demos
OpenStack and OpenFlow Demos
 
Cloud Foundry Demo SD Forum Cloud Sig Feb09
Cloud Foundry Demo SD Forum Cloud Sig Feb09Cloud Foundry Demo SD Forum Cloud Sig Feb09
Cloud Foundry Demo SD Forum Cloud Sig Feb09
 
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
 
Turmeric SOA Cloud Mashups
Turmeric SOA Cloud MashupsTurmeric SOA Cloud Mashups
Turmeric SOA Cloud Mashups
 
AKKA and Scala @ Inneractive
AKKA and Scala @ InneractiveAKKA and Scala @ Inneractive
AKKA and Scala @ Inneractive
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012
 
Notes on a High-Performance JSON Protocol
Notes on a High-Performance JSON ProtocolNotes on a High-Performance JSON Protocol
Notes on a High-Performance JSON Protocol
 
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons Learned
 
Visualizing content in metadata stores
Visualizing content in metadata storesVisualizing content in metadata stores
Visualizing content in metadata stores
 
Introducing JSR-283
Introducing JSR-283Introducing JSR-283
Introducing JSR-283
 
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
 
ghfghg
ghfghgghfghg
ghfghg
 
Critical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software DesignCritical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software Design
 
NIG系統報表開發指南
NIG系統報表開發指南NIG系統報表開發指南
NIG系統報表開發指南
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetups
 

Último

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Último (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

Open Source Ground Segment for Small Satellites

  • 1. Hummingbird: an Open Source Ground Segment for Small Satellites A true story of doing things different GSAW 2012 Gert Villemos (Villemos Solutions) Mark Doyle (Logica) and Johannes Klug (Logica)
  • 2. What is ‚Hummingbird„ • An open source software framework (Apache License) • For building ground segment systems for small satellites • A „back to basics‟ approach • Using simplicity as a design principle • Pushing as much functionality as possible to existing technologies www.hbird.org and facebook © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 2
  • 3. The world 5 years… 8 years… © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 3
  • 4. The world we live in © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 4
  • 5. Business Plan 2.0 1.0 © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 5
  • 6. Back to Basics © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 6
  • 7. Thesis • Ground segment systems for satellites is no longer special; we move data from A to B • Modern network technologies can be used and are better. Lets stop reinventing the wheel • Complexity is inherited (… and often cultural) and propagates through our systems. It is the root of all evil • Find the root course and remove it. Ground segment system can be really simple © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 7
  • 8. ‚New„ Implementation Concept Us Someone else This is hardly brain surgery © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 8
  • 9. Technology Stack (fantastic four) • Spring • Camel • ActiveMQ • Cometd ... and yes, its all Java ... But components in other languages can be integrated © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 9
  • 10. Evolution Hummingbird 0.1 • Classical separation into tiers (transport, business, presentation) • CCSDS stack Frames → Packets → Parameters • Distribution of predefined types • Centered on centralized „System Model‟ (think runtime XTCE) Hummingbird 0.2 • CCSDS stack „banned‟ to transport tier, fully encapsulated • True asynchronous processing • Semantic information model, non-relational databases • Distribution of „what-ever‟ with plugable services © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 10
  • 11. System Integration GHttp JPA JBI Krati SAX Crypto APNS AMQP Nagio RNG RNC JDBC s HL7 JMX JMS Kestre UDP SMTP HDF SQL l IRC Comet SIP SRMI FTP TCP LDAP XMPP d SNMPPOP RSS SSH REST JCloud AWS Mina DNSs PAX JT400 File Atom iMAP Hazelcas t © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 11
  • 12. Semantic Data Demand complete Scalable Extendible rethinking of processing stateOf model. An architectural driver. State X Name Description Raw Value withRaw Description Eng Value stateOf Description Description State A Description State B stateOf State C Description Non-normalised stateOf © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 12
  • 13. Service B B p4 Limit Check Service p1 p2 p3 Consumes: Parameter message Emits: State Parameter Description: The limit check service takes as input a parameter, checks its e1 e2 e3 limit and emmits a state parameter corresponding to the limit with value „true‟ (in limit) or „false‟ (out of limit). Parameter State Heartbeat Heartbeat Service Consumes: None Emits: Heartbeat Description: Issues a ‚alive„ message at intervals. © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 13
  • 14. First Flight Coming up • EstCube (University of Estland) • Strand (Surrey Satellites) • TechDemoSat-1 (UK Space Agency) © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 14
  • 15. Initial Results • Having implemented guestimated 10% of the functionality of similar existing systems • Commanding (scheduling, pre release validation, release, verification and history) • Monitoring (parameter creation, limit check, consistency check, calibration and history) • Orbit and contact prediction New code base 1k LoC Existing code Projected code base base ~1m Lines 10k LoC of Code (LoC) © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 15
  • 16. Value • Highly motivated staff, learning by doing • Concepts feedback into winning „normal‟ work • Door opener to new, and frequently unexpected, markets • Great PR • Neither predictable nor quantifiable but very real © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 16
  • 17. Business Model • Open Source Core • Enterprise Edition • Liability • Tested • Proven • Documented • Evolution plan • Ahead of the curve • Services and added value products © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 17
  • 18. Conclusions • Nothing is more convincing than to stop talking and start doing • Standard technologies (of course) work for space data systems • System integration can be very simple, we make it complex • ‚Managing„ an open source community is not simple © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 18
  • 19. ? ? ! ? ! ? ? ! ! ? Questions?  Read more at: www.hbird.org and facebook © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 19
  • 20. Business Tier CometD Streaming Spring Component Assembly Camel Integration ActiveMQ Distribution Services © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 20
  • 21. WARNING: Source code ahead! ... the message is not in the code itself, but in the changes to the code © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 21
  • 22. The Modern Code Base public class Manager implements IManager { protected IWorker worker = new Worker(); public void manage() { worker.work("1:2:3"); } } public class Worker implements IWorker { protected IPublisher publisher = new Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 22
  • 23. The Modern Code Base public class Manager implements IManager { protected IWorker worker = new Worker(); public void manage() { worker.work("1:2:3"); } Only three lines of } business logic here... public class Worker implements IWorker { protected IPublisher publisher = new Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 23
  • 24. The Modern Code Base public class Manager implements IManager { <bean id=“manager” class=“foo.Manager”/> protected IWorker worker = new Worker(); <bean id=“worker” class=“foo.Worker”/> public void manage() { <bean id=“publisher” class=“foo.Publisher”/> worker.work("1:2:3"); } <route> } <from uri=“timer://foo?period=60000”/> <to uri=bean:manager" /> <to uri=“bean:worker”/> <to uri=„bean:publisher"/> public class Worker implements IWorker { </route> protected IPublisher publisher = new Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 24
  • 25. The Modern Code Base public class Manager implements IManager { <bean id=“manager” class=“foo.Manager”/> protected IWorker worker = new Worker(); <bean id=“worker” class=“foo.Worker”/> public void manage() { <bean id=“publisher” class=“foo.Publisher”/> worker.work("1:2:3"); } <route> } <from uri=“timer://foo?period=60000”/> <to uri=bean:manager" /> <split> <method bean=“worker”/> public class Worker implements IWorker { <to uri=„bean:publisher"/> </split> protected IPublisher publisher = new </route> Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 25
  • 26. The Modern Code Base <bean id=“manager” class=“foo.Manager”/> public class Manager { <bean id=“worker” class=“foo.Worker”/> public String manage() { return "1:2:3"; <bean id=“publisher” class=“foo.Publisher”/> } } <route> <from uri=“timer://foo?period=60000”/> <to uri=bean:manager" /> <split> <method bean=“worker”/> public class Worker { <to uri=„bean:publisher"/> </split> public String[] work(String values) { </route> return values.split(":"); } Massive code base reduction } Only business logic in the code, routing in the configuration Fantastic code metrics (no public class Publisher { coupling) public void display(long value) { System.out.println("Test value: " + value); 100% test coverage easy to reach } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 26