• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Hummingbird - Open Source for Small Satellites - GSAW 2012
 

Hummingbird - Open Source for Small Satellites - GSAW 2012

on

  • 1,116 views

This presentation about the Hummingbird project won best presentation at the GSAW 2012 event in Los Angeles - http://csse.usc.edu/gsaw/index.html ...

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/

Statistics

Views

Total Views
1,116
Views on SlideShare
1,116
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Hummingbird - Open Source for Small Satellites - GSAW 2012 Hummingbird - Open Source for Small Satellites - GSAW 2012 Presentation Transcript

    • 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)
    • 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
    • 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
    • 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 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
    • 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 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
    • 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
    • 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