Hummingbird: an OpenSource Ground Segmentfor Small Satellites A true story of doing things differentGSAW 2012Gert Villemos...
What is ‚Hummingbird„•     An open source software framework (Apache License)•     For building ground segment systems for...
The world                 5 years…                                                                  8 years…© Logica 2012....
The world we live in© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 4
Business Plan                                                                  2.0                                        ...
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...
‚New„ Implementation Concept              Us                                                                  Someone else...
Technology Stack (fantastic four)•   Spring•   Camel•   ActiveMQ•   Cometd... and yes, its all Java      ... But component...
EvolutionHummingbird 0.1• Classical separation into tiers (transport, business, presentation)• CCSDS stack Frames → Packet...
System Integration                                                   GHttp JPA                                            ...
Semantic DataDemand complete                                               Scalable               Extendiblerethinking of ...
Service                               B                                               B                                   ...
First FlightComing up• EstCube (University of Estland)• Strand (Surrey Satellites)• TechDemoSat-1 (UK Space Agency)© Logic...
Initial Results • Having implemented guestimated 10% of the functionality of   similar existing systems • Commanding (sche...
Value• Highly motivated staff, learning by doing•     Concepts feedback into winning „normal‟ work•     Door opener to new...
Business Model•     Open Source Core•     Enterprise Edition•     Liability•     Tested•     Proven•     Documented•     E...
Conclusions•     Nothing is more convincing than to stop talking and start      doing•     Standard technologies (of cours...
?              ?   !       ?                                         !     ?           ? !        !   ?                   ...
Business Tier                                                                  CometD Streaming          Spring Component ...
WARNING: Source code ahead! ... the message is not in the code itself, but in the changes to the code© Logica 2012. All ri...
The Modern Code Base public class Manager implements IManager {     protected IWorker worker = new Worker();     public vo...
The Modern Code Base public class Manager implements IManager {     protected IWorker worker = new Worker();     public vo...
The Modern Code Base public class Manager implements IManager {                        <bean id=“manager” class=“foo.Manag...
The Modern Code Base public class Manager implements IManager {                        <bean id=“manager” class=“foo.Manag...
The Modern Code Base                                                                   <bean id=“manager” class=“foo.Manag...
Upcoming SlideShare
Loading in...5
×

Hummingbird - Open Source for Small Satellites - GSAW 2012

1,205
-1

Published on

This presentation about the Hummingbird project won best presentation at the GSAW 2012 event in Los Angeles - http://csse.usc.edu/gsaw/index.html
To read more from this author about how the IT industry can shape the boundaries of the space industry, please visit - http://www.logica.com/we-work-in/space/related%20media/thought-pieces/2011/new-paradigms-for-space/

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,205
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Hummingbird - Open Source for Small Satellites - GSAW 2012

  1. 1. Hummingbird: an OpenSource Ground Segmentfor Small Satellites A true story of doing things differentGSAW 2012Gert Villemos (Villemos Solutions)Mark Doyle (Logica) and Johannes Klug (Logica)
  2. 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. 3. The world 5 years… 8 years…© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 3
  4. 4. The world we live in© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 4
  5. 5. Business Plan 2.0 1.0© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 5
  6. 6. Back to Basics© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 6
  7. 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. 8. ‚New„ Implementation Concept Us Someone else This is hardly brain surgery© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 8
  9. 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. 10. EvolutionHummingbird 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. 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. 12. Semantic DataDemand complete Scalable Extendiblerethinking of processing stateOfmodel. An architecturaldriver. State X Name Description Raw Value withRaw Description Eng Value stateOf Description Description State ADescription State B stateOf State C Description Non-normalised stateOf© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 12
  13. 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. 14. First FlightComing 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. 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 LoCExisting code Projected code basebase ~1m Lines 10k LoCof Code (LoC) © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 15
  16. 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. 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. 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. 19. ? ? ! ? ! ? ? ! ! ? Questions?  Read more at: www.hbird.org and facebook© Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 19
  20. 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. 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. 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. 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. 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. 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. 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

×