Jia Huang
Software Engineer @ 3DRobotics
Building a Drone Imagery Service
@AutodeskForge
#ForgeDevCon
see the world from above
Site Scan
Site Scan
Survey Scan Inspect
Scan Results
5 minute flights
84 Photos
90 minute processing time
Survey Results
Site Scan Video
• https://www.youtube.com/watch?
v=6BTC1Zjo8Ic
Site Scan workflow
Site Scan workflow
• geotagging
• user controls
• prepare job
• user validation
• saves results
• render mesh
• take photos
Challenges for the 3DR Cloud
• each image is ~10MB
• up to 250 images per job
• soon <= 2000 images across multiple flights
in one job
• Mesh / ortho / point cloud results are ~100MB
to ~200MB
3DR Cloud Architecture
3DR Cloud API
▪ All written in Scala with the Akka libraries
▪ Why Akka?
▪ Lightweight
▪ Flexible
▪ Everything is a stream
▪ Why Couchbase?
▪ Blob data
▪ Add more boxes as needed
▪ NoSQL with SQL interface (n1ql)
User Service
▪ User Service keeps track of
▪ users
▪ groups
▪ permissioning
▪ Why Postgres?
▪ highly relational data
▪ use the right db for the job
Recap Service
▪ Actors encapsulate state and behavior
▪ Communicate exclusively through messages
▪ Uses Akka’s Actor system
▪ Supervisor & children
▪ Each child Recap actor keeps its own state
▪ Supervisor gets passed errors
Creating a Photoscene with Autodesk Recap
Actor Supervisor Pattern
▪ Children can crash without damaging the system
▪ Supervisors handle errors
import akka.actor.OneForOneStrategy

import akka.actor.SupervisorStrategy._

import scala.concurrent.duration._



override val supervisorStrategy =

OneForOneStrategy(maxNrOfRetries = 10,

withinTimeRange = 1 minute) {

case _: ArithmeticException => Resume 

case _: NullPointerException => Restart

case _: IllegalArgumentException => Stop

case _: Exception => Escalate

}
Actor Scheduling Pattern
▪ Actors can schedule themselves for future actions
class RecapActor(…) extends Actor with …{



implicit val system = context.system

private var scheduledTask: Option[Cancellable] = None
def receive = {
case PollScene(…) =>
scheduledTask = scheduledTask match {

case None => Some(
context.system.scheduler.schedule(10 minutes,
10 minutes, self,
PollScene(…) ))

case Some(cancellable) => scheduledTask

}
}

}
Interfacing with Autodesk Recap
▪ Handles authentication, sending & receiving to Recap
▪ Returns a Scala PhotoSceneEntity
▪ Formats, photolist, photoscene status,
processing time, and any errors
▪ Reuploads photos during error states
▪ Built on top of Akka-requests-lib
▪ https://github.com/3drobotics/cloud-akka-request
• Depends on the integration type
• State machine? Akka Finite State Machine
Mixin
• Relational? Another Postgres backed service
• Blob data?
• Keep things decoupled
Architecting future integrations
Questions?
jia.huang@3dr.com
@3drobotics
@AutodeskForge
#ForgeDevCon
Forge - DevCon 2016: Building a Drone Imagery Service

More Related Content

PDF
Forge - DevCon 2016: From Desktop to the Cloud with Forge
PDF
Forge - DevCon 2016: 10 Great Fusion 360 Sample Applications
PDF
Forge - DevCon 2016: Visual Reporting with Connected Design Data
PPTX
From desktop to the cloud with forge
PDF
Forge - DevCon 2016: Introduction to Forge 3D Print API Through Sample Applic...
PDF
Forge - DevCon 2016: Building Value-Added Integrations with Autodesk’s IoT APIs
PDF
Forge - DevCon 2016: Implementing Rich Applications in the Browser
PDF
Forge - DevCon 2016: Collaborating with Design Data
Forge - DevCon 2016: From Desktop to the Cloud with Forge
Forge - DevCon 2016: 10 Great Fusion 360 Sample Applications
Forge - DevCon 2016: Visual Reporting with Connected Design Data
From desktop to the cloud with forge
Forge - DevCon 2016: Introduction to Forge 3D Print API Through Sample Applic...
Forge - DevCon 2016: Building Value-Added Integrations with Autodesk’s IoT APIs
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Collaborating with Design Data

What's hot (20)

PDF
Forge - DevCon 2016: Cloud PDM Demystified – The Future of File Management
PDF
TechEvent 2019: Nachhaltige Client-Architekturen mit Angular Elements; Thomas...
PDF
Forge - DevCon 2016: Free your design data
PPTX
Building API in the cloud using Azure Functions
PPTX
Forge - DevCon 2017, Darmstadt Germany: Integrating Forge Data Management API...
PDF
Forge - DevCon 2017, Darmstadt Germany: Innovate with Forge
PPTX
Leveraging ArcGIS Online for Public Utility Data
PPTX
PPTX
Developing Azure Functions as custom connectors for Flow and Nintex
PPTX
Serverless in-action
PPTX
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
PPTX
Cloud Abstraction Libraries: Implementation and Comparison
PPTX
Serverless in Azure with Functions
PPTX
Using Google App Engine Python
PPTX
Azure Functions Real World Examples
PPTX
Deploying Web Apps with PaaS and Docker Tools
PPTX
Azure Web Jobs
PPTX
My slides from SharePoint Saturday Oslo
PPTX
Building solutions with the SharePoint Framework - introduction
PPT
Building 3D Models with Skycatch & Autodesk Recap API's
Forge - DevCon 2016: Cloud PDM Demystified – The Future of File Management
TechEvent 2019: Nachhaltige Client-Architekturen mit Angular Elements; Thomas...
Forge - DevCon 2016: Free your design data
Building API in the cloud using Azure Functions
Forge - DevCon 2017, Darmstadt Germany: Integrating Forge Data Management API...
Forge - DevCon 2017, Darmstadt Germany: Innovate with Forge
Leveraging ArcGIS Online for Public Utility Data
Developing Azure Functions as custom connectors for Flow and Nintex
Serverless in-action
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
Cloud Abstraction Libraries: Implementation and Comparison
Serverless in Azure with Functions
Using Google App Engine Python
Azure Functions Real World Examples
Deploying Web Apps with PaaS and Docker Tools
Azure Web Jobs
My slides from SharePoint Saturday Oslo
Building solutions with the SharePoint Framework - introduction
Building 3D Models with Skycatch & Autodesk Recap API's
Ad

Viewers also liked (14)

PDF
Forge - DevCon 2016: Forecast for Design, Make, & Use is Cloudy
PDF
Forge - DevCon 2016: Introduction to building for HoloLens
DOCX
Artificial drone intelligence technology
PPTX
The Race for Same Day Delivery in Online Retail
PDF
Harvard HKUST 2015 - Final Presentation
PPTX
Master mitie drone plan
PDF
Mitie - Solving problems with drones
PDF
Forge - DevCon 2016: Bringing BIM to Facility Management with Forge – Collabo...
PPTX
Drone delivery service
PDF
Introduction to WebVR Autodesk Forge 2016
PDF
Drones and their Increasing Number of Applications
PDF
Drone (Quadcopter) full project report by Er. ASHWANI DIXIT
PDF
Drones: Present & Future
PDF
Drone for the Future
Forge - DevCon 2016: Forecast for Design, Make, & Use is Cloudy
Forge - DevCon 2016: Introduction to building for HoloLens
Artificial drone intelligence technology
The Race for Same Day Delivery in Online Retail
Harvard HKUST 2015 - Final Presentation
Master mitie drone plan
Mitie - Solving problems with drones
Forge - DevCon 2016: Bringing BIM to Facility Management with Forge – Collabo...
Drone delivery service
Introduction to WebVR Autodesk Forge 2016
Drones and their Increasing Number of Applications
Drone (Quadcopter) full project report by Er. ASHWANI DIXIT
Drones: Present & Future
Drone for the Future
Ad

Similar to Forge - DevCon 2016: Building a Drone Imagery Service (20)

PPTX
Docker & ECS: Secure Nearline Execution
PDF
An Introduction to Celery
PDF
Advanced android app development
PDF
Node azure
PDF
Celery
PDF
Scala, ECS, Docker: Delayed Execution @Coursera
PDF
Web ui testing
PPTX
Ansible benelux meetup - Amsterdam 27-5-2015
PDF
Big Data Tools in AWS
PDF
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
PPTX
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
PPTX
[NDC 2019] Enterprise-Grade Serverless
PDF
Advanced iOS Build Mechanics, Sebastien Pouliot
PDF
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
PDF
Scheduling tasks the human way - Brad Wood - ITB2021
PDF
Varnish - PLNOG 4
ZIP
Javascript Everywhere
PPTX
How and why we evolved a legacy Java web application to Scala... and we are s...
PDF
Douglas Crockford: Serversideness
PDF
Testing for fun in production Into The Box 2018
Docker & ECS: Secure Nearline Execution
An Introduction to Celery
Advanced android app development
Node azure
Celery
Scala, ECS, Docker: Delayed Execution @Coursera
Web ui testing
Ansible benelux meetup - Amsterdam 27-5-2015
Big Data Tools in AWS
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless
Advanced iOS Build Mechanics, Sebastien Pouliot
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Scheduling tasks the human way - Brad Wood - ITB2021
Varnish - PLNOG 4
Javascript Everywhere
How and why we evolved a legacy Java web application to Scala... and we are s...
Douglas Crockford: Serversideness
Testing for fun in production Into The Box 2018

More from Autodesk (17)

PDF
Top 6 Reasons to work at Autodesk
PPTX
Forge - DevCon 2017, Darmstadt Germany - Introduction and Roadmap
PDF
Forge - DevCon 2017, Darmstadt Germany: HFDM - What, why & how?
PPTX
Forge - DevCon 2017, Darmstadt Germany: Forge AR-VR-MR experiments
PDF
Forge - DevCon 2017, Darmstadt Germany: Moving to Forge and the Cloud with yo...
PPTX
Forge - DevCon 2017, Darmstadt Germany: Control & program a real robot by man...
PDF
Make your own Pokédex with the Pokéapi & Node/Express!
PDF
Developing 3D Visualization Apps
PDF
Harnessing the Power of Customer Feedback
PPTX
Forge - DevCon 2016: Hsbcad from Acad to Revit to Cloud
PDF
Forge - DevCon 2016: Drawings! Drawings! Everywhere!
PDF
Forge - DevCon 2016: Dancing with Elephants, Leveraging Market Leaders to Gro...
PDF
Forge - DevCon 2016: Collaborative VR using Google Cardboard & the View & Dat...
PDF
Forge - DevCon 2016: Creating your next VR Walkthrough with Cloud Rendered St...
PDF
Forge - DevCon 2016: Developing & Deploying Secure, Scalable Applications on ...
PDF
Forge - DevCon 2016: Extend BIM 360 Docs with the Issues Service API
PDF
Forge - DevCon 2016: The Future of Making Buildings Forms Follow Formulae
Top 6 Reasons to work at Autodesk
Forge - DevCon 2017, Darmstadt Germany - Introduction and Roadmap
Forge - DevCon 2017, Darmstadt Germany: HFDM - What, why & how?
Forge - DevCon 2017, Darmstadt Germany: Forge AR-VR-MR experiments
Forge - DevCon 2017, Darmstadt Germany: Moving to Forge and the Cloud with yo...
Forge - DevCon 2017, Darmstadt Germany: Control & program a real robot by man...
Make your own Pokédex with the Pokéapi & Node/Express!
Developing 3D Visualization Apps
Harnessing the Power of Customer Feedback
Forge - DevCon 2016: Hsbcad from Acad to Revit to Cloud
Forge - DevCon 2016: Drawings! Drawings! Everywhere!
Forge - DevCon 2016: Dancing with Elephants, Leveraging Market Leaders to Gro...
Forge - DevCon 2016: Collaborative VR using Google Cardboard & the View & Dat...
Forge - DevCon 2016: Creating your next VR Walkthrough with Cloud Rendered St...
Forge - DevCon 2016: Developing & Deploying Secure, Scalable Applications on ...
Forge - DevCon 2016: Extend BIM 360 Docs with the Issues Service API
Forge - DevCon 2016: The Future of Making Buildings Forms Follow Formulae

Recently uploaded (20)

PPT
Module 1.ppt Iot fundamentals and Architecture
PPT
Geologic Time for studying geology for geologist
PDF
Architecture types and enterprise applications.pdf
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
CloudStack 4.21: First Look Webinar slides
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
A review of recent deep learning applications in wood surface defect identifi...
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
STKI Israel Market Study 2025 version august
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
Module 1.ppt Iot fundamentals and Architecture
Geologic Time for studying geology for geologist
Architecture types and enterprise applications.pdf
WOOl fibre morphology and structure.pdf for textiles
Taming the Chaos: How to Turn Unstructured Data into Decisions
Benefits of Physical activity for teenagers.pptx
CloudStack 4.21: First Look Webinar slides
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
A review of recent deep learning applications in wood surface defect identifi...
O2C Customer Invoices to Receipt V15A.pptx
Group 1 Presentation -Planning and Decision Making .pptx
STKI Israel Market Study 2025 version august
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Assigned Numbers - 2025 - Bluetooth® Document
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Web Crawler for Trend Tracking Gen Z Insights.pptx

Forge - DevCon 2016: Building a Drone Imagery Service

  • 1. Jia Huang Software Engineer @ 3DRobotics Building a Drone Imagery Service
  • 3. see the world from above
  • 6. Scan Results 5 minute flights 84 Photos 90 minute processing time
  • 8. Site Scan Video • https://www.youtube.com/watch? v=6BTC1Zjo8Ic
  • 10. Site Scan workflow • geotagging • user controls • prepare job • user validation • saves results • render mesh • take photos
  • 11. Challenges for the 3DR Cloud • each image is ~10MB • up to 250 images per job • soon <= 2000 images across multiple flights in one job • Mesh / ortho / point cloud results are ~100MB to ~200MB
  • 13. 3DR Cloud API ▪ All written in Scala with the Akka libraries ▪ Why Akka? ▪ Lightweight ▪ Flexible ▪ Everything is a stream ▪ Why Couchbase? ▪ Blob data ▪ Add more boxes as needed ▪ NoSQL with SQL interface (n1ql)
  • 14. User Service ▪ User Service keeps track of ▪ users ▪ groups ▪ permissioning ▪ Why Postgres? ▪ highly relational data ▪ use the right db for the job
  • 15. Recap Service ▪ Actors encapsulate state and behavior ▪ Communicate exclusively through messages ▪ Uses Akka’s Actor system ▪ Supervisor & children ▪ Each child Recap actor keeps its own state ▪ Supervisor gets passed errors
  • 16. Creating a Photoscene with Autodesk Recap
  • 17. Actor Supervisor Pattern ▪ Children can crash without damaging the system ▪ Supervisors handle errors import akka.actor.OneForOneStrategy
 import akka.actor.SupervisorStrategy._
 import scala.concurrent.duration._
 
 override val supervisorStrategy =
 OneForOneStrategy(maxNrOfRetries = 10,
 withinTimeRange = 1 minute) {
 case _: ArithmeticException => Resume 
 case _: NullPointerException => Restart
 case _: IllegalArgumentException => Stop
 case _: Exception => Escalate
 }
  • 18. Actor Scheduling Pattern ▪ Actors can schedule themselves for future actions class RecapActor(…) extends Actor with …{
 
 implicit val system = context.system
 private var scheduledTask: Option[Cancellable] = None def receive = { case PollScene(…) => scheduledTask = scheduledTask match {
 case None => Some( context.system.scheduler.schedule(10 minutes, 10 minutes, self, PollScene(…) ))
 case Some(cancellable) => scheduledTask
 } }
 }
  • 19. Interfacing with Autodesk Recap ▪ Handles authentication, sending & receiving to Recap ▪ Returns a Scala PhotoSceneEntity ▪ Formats, photolist, photoscene status, processing time, and any errors ▪ Reuploads photos during error states ▪ Built on top of Akka-requests-lib ▪ https://github.com/3drobotics/cloud-akka-request
  • 20. • Depends on the integration type • State machine? Akka Finite State Machine Mixin • Relational? Another Postgres backed service • Blob data? • Keep things decoupled Architecting future integrations