You are on page 1of 42

Collecting and Analysing

Spaceborn Data

Ivelin Andreev

DATA SATURDAY
Sofia, Oct 08th
Speaker Bio
• Software Architect @
o Digital Company
• Microsoft Azure MVP
• External Expert Eurostars-Eureka, Horizon Europe
• External Expert InnoFund Denmark, RIF Cyprus
• Business Interests
o Web Development, SOA, Integration
o IoT, Machine Learning
o Security & Performance Optimization
• Contact
ivelin.andreev@icb.bg
www.linkedin.com/in/ivelin
www.slideshare.net/ivoandreev
Thanks to our Sponsors
Upcoming Events

JSTalks, 2022
Nov 18-19
http://jstalks.net/
Agenda
• Introduction and Terms
• Azure Space Ecosystem
• Setting up Spacecraft Resource
• Setting up Infrastructure
• Consuming Connection
• Orbital Analytics with Synapse
Takeaways
• Azure Space
o https://azure.microsoft.com/en-us/blog/new-satellite-connectivity-and-geospatial-capabilities-with-azure-space

• Summary Videos
o Contact space satellites to access data
o Use Azure Orbital to communicate with satellites
o Azure Orbital Analytics with Power Apps
o Orbital for Geospatial Analytics with Synapse

• Setup Orbital
o https://docs.microsoft.com/en-us/azure/orbital/downlink-aqua

• Geospatial Analytics with Synapse (Samples)


o Ship Detection: https://github.com/microsoft/ShipDetection/
o Building Footprint: https://orca-docs.blackshark.ai/

• AZ Orbital Analytics GitHub


o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/docs/Glossary.md
o https://github.com/Azure/azure-orbital-integration
Introduction
Satellite/Spacecraft Basics
• Spacecraft
o Vehicle/machine designed to fly in outer space

• Orbit
o Regular, repeating path that one object in space takes around another one
o An object in an orbit is called a satellite

• Uplink/Downlink
o Extremely sensitive antennas on satellite
o Receive from Earth (Uplink), transfer to Earth (Downlink) respectively

• The Challenge
o Setting up a ground station is complex, lengthy and expensive task
o Satellite communication is not straightforward (digitalized RF signal)

• AZ Orbital Ground Station


o Bring satellite data into your cloud environment, where data is securely delivered to your virtual network
Azure Space Ecosystem
Azure Space Ecosystem
• Azure Space
o Services, partnerships and strategy (i.e. Airbus) to integrate cloud and satellite technology
o AZ Space Products: Azure Orbital, Azure Modular Data Center (MDC),
Space Orbital Emulator, SpaceEye, Project Turing

• History
o Azure Orbital (Preview) announced Sep 2020
o Azure Orbital (GA) from 29 Aug 2022

• Benefits
o Collaboration with leading space community companies
o Extend Azure capabilities with space infrastructure
o Accelerate time to insight from Earth observations
o Develop space applications faster
o Develop applications cheaper (shared high gain antennas)
Azure Orbital

• Establishes connection between satellite


networks and the cloud
• One set of APIs across multiple sat. networks
• AZ Orbital GSaaS main parts
o Own Microsoft ground stations
o Partner ground stations
o Processing station to ingress data from satellite

• Orbital Capabilities
o Register a satellite
o Create contact profile
o Schedule contact
GA Announced 29.08.2022
Microsoft Ground Station (Quincy, WA)
Azure Orbital Workflow
1. Register a spacecraft
o Required attributes: NORAD ID, TLE, licensing

2. Create a contact profile


o Set center frequency and bandwidth
o Minimum elevation, auto tracking

3. Schedule contact
o Select spacecraft
o Select contact profile
o Select date/time window

Note: Satellite transfer is 280TB/day!!!


AZ Orbital Setup
Azure Orbital during the Preview

Fill-in AZ Orbital Onboarding form:


https://forms.office.com/r/fk32xNmDyx

Onboard to Azure Orbital Preview URL:


https://aka.ms/orbital/portal

Await a 'Preview Access Granted' email


from Azure Orbital (typically 12 h), use onboarding link even after access granted
Step 1: Microsoft.Orbital Resource Provider
• Register Microsoft.Orbital resource provider
o Subscription > Resource Providers > Microsoft.Orbital (select latest version)

• Provider still not documented


o https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-services-resource-providers
Step 2: The Spacecraft
Spacecraft object definition
• Links (Immutable)
o RF details of center frequency
o Bandwidth MHz
o Polarization (RHCP, LHCP, Linear Vertical)

• Ephemeris (Updatable)
o The latest TLE (two-line element)
o Determines path of antenna to follow during contact
o TLE is prone to expiration and needs to be updated

• Licensing
o Because of regulatory requirements
o Scheduling and contact denied w/o authorization
Spacecraft Configuration
• AZ Portal > Spacecrafts
• NASA’s AQUA public satellite
Field Value
Subscription Select your subscription
Resource Group Select your resource group
Name Ivo Space 1
Region West US 2
NORAD ID 27424
https://celestrak.org/NORAD/elements/active.txt
TLE title line AQUA
TLE line 1 Enter TLE line 1 from Celestrak
TLE line 2 Enter TLE line 2 from Celestrak

https://docs.microsoft.com/en-us/azure/orbital/downlink-aqua
NORAD Two-Line Element Set Format
• TLE data for each satellite consists of three lines in the following format:
Get TLE from Celestrak
• Orbit satellite catalogue and
visualization
• 3D visualization down since
01.09.2022 due to lack of funding
• TLEs available
https://celestrak.org/NORAD/elements/active.txt
• TLE explained
https://celestrak.org/columns/v04n03/
Satellite Links & Deployment
• Define spacecraft's capabilities by adding link configurations

If you have not been onboarded to AZ Orbital, Deployment Failure


{
"status": "Failed",
"error": {
"code": "InvalidResourceType",
"message": "The resource type could not be found in the namespace 'Microsoft.Orbital' for api version '2022-03-01'."
}
}
Spacecraft Authorization/Licensing
• Fill in spacecraft authorization form
https://forms.office.com/r/QbUef0Cmjr
o No “Spacecraft resource authorized” email (Authorization takes ~12h)
o There is/was a bug
• Authorization status is not updated
• But resource JSON shows
Step 3: Other Resources
• VNet
• Subnets
o Set subnet with at least \24 mask
o Set subnet virtual delegation Azure Bastion subnet
• Orbital VMs
o OS: Linux (Ubuntu 18.04 or higher) Azure Orbital subnet (delegation)
VM in subnet (NOT OK)
o Size: at least 32 GiB of RAM (!!! Pricing !!!)
o Ensure that the VM has at least one standard public IP
Azure Orbital subnet (delegation)
o Create a tmpfs on the virtual machine. VM NOT in subnet (OK)
o Install SOCAT utility
• Prepare VNET for AZ Orbital integration
Step 4: Orbital Contact Profile (That was tough!!!)
• Save and reuse contact configurations
o Required before scheduling a contact to ingest data from a satellite into Azure.
o i.e. Min elevation 10 deg, X-band autotrack, PT5M minimum contact

• Create EventHub for telemetry


o Same Sub, RG and Region
o https://docs.microsoft.com/en-us/azure/orbital/contact-profile
o https://docs.microsoft.com/en-us/azure/orbital/downlink-aqua
Event Hubs Ground Station Telemetry
• Grant Azure Orbital the rights to send telemetry
o EventHub > IAM Access Control
o Add Role Assignment to “Azure Event Hubs Data Sender”
o Assign “User, group, or service principal”
o Select “'Azure Orbital Resource Provider”

• Capture to file (.avro) on EventHub


o File stored to AZ Storage

• View capture
o https://dataformat.net/avro/viewer-and-converter
o Body is Base64 encoded
Step 5: Links and Channels
• Link – the whole band with unique polarity and direction
• Channel – specifies frequency, bandwidth, endpoints
• Contact profile sample JSON (check URL for sample values)
o https://docs.microsoft.com/en-us/azure/orbital/concepts-contact-profile
Gain (db) how well the antenna
converts RF signal to el. power

Noise T (deg. K) – eq temperature


to produce noise in a system

Unique IP
in 49152 – 65535 range

Demodulation – broadcast=15Mbps;
playback=150Mbps
Step 6: Schedule Contact
• The Satellite Dish
o Parabolic antenna (6-8m) with a focus in the sky
o Multiple antennas available per site to solve redundancy

• Scheduling
o Triggers antenna movement to follow satellite ($$$)
o Uses TLE to discover satellite position
o TLE expires
o Optimization provided by partners

• Contact
o At connection time ~150Mbit/s of RF signal is digitized
o Data captured raw and unformatted

• Ground services integrated to Azure


Create a Contact
• Scheduling a contact triggers a deployment
• Access will be granted to Microsoft stations only
Step 7: During a Contact
• Prepare to “listen” shortly before the time of contact
• Start listening on Step 5 port (i.e. 56001) and capture to file
socat -u tcp-listen:56001,fork create:/media/aqua/out.bin
o Verify access to output folder (i.e. use WinSCP tool for remote connection)

o 10 min communication (1GB-10GB) – depends on demodulation configuration


o Once your contact has executed, move the output file from the tmpfs to preserve it

• Note: Operation will fail if using a subnet that is already in use (this includes
the VM). Documentation update shall follow up soon
Step 8: Processing Payload
• Instructions
o https://docs.microsoft.com/en-us/azure/orbital/satellite-imagery-with-orbital-ground-station

• Direct Broadcast Data


o Output from all instruments onboard (AQUA has six)

• Realtime Software Telemetry Processing System (RT-STPS) by NASA


o Process Direct Broadcast Data to Level-0 Production Data Set (.pds)
o Only Linux, Installed as a server, near realtime processing

• International Planetary Observation Processing Package (IPOPP) by NASA


o Shall be on separate machines for production workloads than RT-STPS
o Process Level-0 dataset, create Level-1 and Level-2 products
Step 8: Paying for it
• Announced 2022, Aug 29th
Azure Orbital Analytics
• Custom Vision over satellite imagery
• Process earth imagery data
• Extract time series from the observations for
understanding and prediction
Azure Orbital Analytics Reference Architecture
• Capabilities to use AI to discover insights from spaceborn data
o Orbital Analytics for AZ Synapse applies AI over satellite imagery

• Sample Solution Diagram


• Objective 1
o Basic drag-drop tools to build workflow

• Objective 2
o Be open as possible
o Uses Azure Batch (containers not supported)

• Documentation
https://docs.microsoft.com/en-
us/azure/architecture/industries/aeros
pace/geospatial-processing-analytics
Lake Murray, USA, California
Infrastructure Setup
• Instructions (Infrastructure Setup):
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/deploy/README.md

• Bicep Template Deployment (~1h)


o Use git bash
o Clone GitHub repo gh repo clone Azure/Azure-Orbital-Analytics-Samples
o Azure login, set subscription az login; az account set -s <subscription_id>
o Run setup.sh ./deploy/setup.sh <envCode> <loc> <pipelineName> <envTag>
o Cleanup - use Cleanup.sh instead of AZ Resource deletion

• Notes
o (fixed) environmentCode shall be unique to avoid conflict as storage account name is generated from its hash
• Now the subscription ID is used which is sufficiently unique (i.e. Orbital did not work)
o Region – you may not be allowed to deploy some services in some regions, (i.e. WEurope instead of WestUS2)
o (fixed) Synapse.sparktool.bicep Spark autoscale minnode count cannot be 1
o (fixed) Synapse deployment may have been created at a previous attempt and may force change environment code
Infrastructure Configuration and Preparation
• Synapse Pipeline for Custom Vision model for object detection from GeoTIFF
• Copy GeoTIFF sample data to storage account (480MB)
o ../deploy/scripts/copy_geotiff.sh [environmentName]
o Location is [environmentName]-data-rg > storage account

• Custom Vision Model


• Option 1: Publicly hosted (Preferred)
• Option 2: Download and host in own container registry
• Option 3: Own model in own container registry
o Synapse Configuration Files (samples)
• https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/deploy/README.md#running-the-pipeline-
custom-vision-model
Azure Synapse (Prerequisites)

1. Instructions (Synapse Prerequisites)


https://docs.microsoft.com/en-us/azure/architecture/industries/aerospace/geospatial-processing-analytics
2. Install Synapse packages
o Select Spark pools > Packages
o Upload …\deploy\environment.yml
o Publish changes

3. Check packages by running in a Python notebook


o import pkg_resources for d in pkg_resources.working_set: print(d)
Azure Synapse Pipeline Deployment
• Why Synapse Analytics
o Workflow engine; Integrations out of the box; drag-drop UI

• Pipeline
o Logical group of synapse activities that perform a task
o Takes GeoTIFF images as input
o Runs geospatial analysis with Azure Synapse Analytics
o Produce GeoJSON with coordinate polygons

• Add Pipeline from Gallery


• Gallery Instructions (Pipeline configuration, updated 2022.10.07 21:00 EET, Issue #82)
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/deploy/gallery/instructions.md

• Configure Pipeline Specification JSON (RawData AZ BLOB


o Linked Services – connection strings to data stores for Synapse
Files (RawData Data Lake Storage v2

Dataset (Azure File storage)


Pipeline 1: Transformation
• Instructions
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/docs/Pipeline-Activities.md

• Transforms Pipeline
o Foreach file, stitch multiple geotiffs
o Spark job to run Python to crop files
o Convert to PNG
o Python script to transform raw raster geotiff to 512 by 512 tiles of PNGs
o Uses config folder JSON configuration
o [envcode]-data-rg > [storage account] > [envcode]-test-container
Pipeline 2 : Object Detection
• Custom Vision Object Detection
o Copy files, starts custom vision model (pool geolocation), copies the result to AZ storage, object detection in pool

o Pipeline configuration
Thanks to our Sponsors

You might also like