Latest 2.0.1
License Commercial Copyright 2017 Matt Greenfield. All rights reserved.
Platforms ios 10.0
Frameworks CoreLocation, CoreMotion

A location and activity recording framework for iOS.

Demo App Examples

Short Walk Between Nearby Buildings

Raw (red) + Smoothed (blue) Smoothed (blue) + Visits (orange) Smoothed (blue) + Visits (orange)

The blue segments indicate locations that ArcKit determined to be moving. The orange segments indicate stationary. Note
that locations inside buildings are more likely to classified as stationary, thus allowing location data to be more
easily clustered into "visits".

Tuk-tuk Ride Through Traffic in Built-up City Area

Raw Locations Smoothed (blue) + Stuck (orange) Smoothed (blue) + Stuck (orange)

Location accuracy for this trip ranged from 30 to 100 metres, with minimal GPS line of sight and
significant "urban canyon" effects (GPS blocked on both sides by tall buildings and blocked from above by an elevated
rail line). However stationary / moving state detection was still achieved to an accuracy of 5 to 10 metres.

Note: The orange dots in the second screenshot indicate "stuck in traffic". The third screenshot shows the "stuck"
segments as paths, for easier inspection.


  • Raw locations, Kalman filtered locations, and dynamically smoothed
    LocomotionSamples (combined location / motion /
    activity state objects)
  • High resolution, near real time stationary / moving state detection (with accuracy up to 5 metres, and reporting
    delay between 6 and 60 seconds)
  • Dynamic energy use management, to achieve best possible accuracy without wasteful battery consumption
  • Filtered and sanitised Core Motion accelerometer, pedometer, and activity type data
  • Coming in next release: Machine learning based activity type detection with significantly higher accuracy than
    Core Motion, and ability to distinguish between more activity types (car, train, bus, and more).


pod 'ArcKit'

Demo Apps

  • To run the demo app from this repository, do a pod install before building
  • To see the full SDK features in action in a production app (including as yet unreleased machine learning
    features) try Arc App on the App

Code Example

See the demo app source in this repo for more complete code examples.

let locoManager = LocomotionManager.highlander
let noteCenter = NotificationCenter.default
let queue = OperationQueue.main 

// watch for location updates
noteCenter.addObserver(forName: .locomotionSampleUpdated, object: nil, queue: queue) { _ in
    print("rawLocation: (locoManager.rawLocation)")
    print("filteredLocation: (locoManager.filteredLocation)")
    print("locomotionSample: (locoManager.locomotionSample())")

// start recording


Latest podspec

    "name": "ArcKit",
    "version": "2.0.1",
    "summary": "Location and activity recording framework",
    "homepage": "",
    "authors": {
        "Matt Greenfield": "[email protected]"
    "license": {
        "text": "Copyright 2017 Matt Greenfield. All rights reserved.",
        "type": "Commercial"
    "source": {
        "http": ""
    "frameworks": [
    "platforms": {
        "ios": "10.0"
    "ios": {
        "vendored_frameworks": "ArcKit.framework"

Pin It on Pinterest

Share This