crowdsourcing object location in cluttered environments
- Overview
- Setup and dependencies
- How to run
- Architecture
- Current status
- Troubleshooting and Resources
ViewShare uses crowdsourcing to enable a user to find objects in cluttered environments. A user who is blind can open ViewShare and request to find an object. Doing this sends a notification to a crowdworker, who can then click on the object in a series of pictures. The app then uses ARKit to localize the objects in 3D for the original requester with haptic feedback.
Part of the goal of ViewShare is to serve as an example framework of a crowdworker app, which we believe to be a useful tool for future researchers at our lab. More information coming soon!
ViewShare is being developed by OCCaM Lab at the Olin College of Engineering. Currently, we are developing a web app crowdworker interface and updating documentation for the iOS app.
To use on your computer, clone this repository and open it by cding into your ViewShareCrowdWorker repository and typing open View\ Share.xcworkspace. (You should always open the workspace so it works well with CocoaPods).
ViewShare is written in Swift 4 and Xcode 9 and should work iOS devices with an A9 or later processor.
CocoaPods is a package manager for Swift projects.
To install, run:
sudo gem install cocoapodsTo install the dependencies for this project and then open it:
cd ViewShareCrowdWorker
open View\ Share.xcworkspaceTo add a new Pod to the project, add it to your Podfile. You can go to cocoapods.org, search for your pod, and find TODO ADD MORE HERE. Once you've modified your Podfile, run:
pod installThis should add that dependency to the project.
For more information, check out the CocoaPods Guides!
If you're part of OccamLab, talk to someone about getting access to the Firebase console. Once you have access to the console, click the gear at the top of the menu on the left side on the screen and then choose Project settings from the options provided. Finally, scroll down to "Your Apps" and download GoogleService-Info.plist.
Otherwise, make a new project on the Firebase console. You will need to add the bundle ID that can be found in the Info.plist file.
Download GoogleService-Info.plist and put it in the ViewShareCrowdWorker directory.
Jazzy generates pretty documentation for Swift projects. See our documentation here!
To install, run:
sudo gem install jazzyTo update the documentation, run:
jazzy --min-acl internalComing soon!
From the ViewShareCrowdWorker directory in Terminal, run this command:
open .xcworkspacePress the play/build triangle in the left corner of the Xcode toolbar.
If you have a developer signing error (which you may only see when trying to build it to a real device, instead of a simulator), check your signing certificate.
Coming soon!
For more details about the iOS code, check out the docs.
There are three scenes in this project: Assignments (Collection View Controller), Zoomed Photo View Controller, and Preview Collection View Controller.
CollectionViewController handles both the login UI (with Firebase Auth) and the collection of assignments. When an assignment is opened, its data is passed to ZoomedPhotoViewController, and the app segues to the ZoomedPhotoViewController and PreviewCollectionViewController scenes.
The ZoomedPhotoViewController scene takes up the majority of the screen and allows the crowdworker to zoom in the photo and select the location of an object. It also handles listening for new photos from and sending locations clicked on images to the Firebase database, which is how the crowdworker and requesting user sides of ViewShare interact.
The PreviewCollectionViewController scene is a collection of images associated with the currently open assignment. ZoomedPhotoViewController and PreviewCollectionViewController communicate about switching between images in a job using a Notification Center.
Coming soon!
Firebase provides NoSQL databases. Our ViewShare database schema is available in our Documentation folder on the Google Drive for OccamLab members or by request. We use Firebase to store Firebase cloud messaging tokens, user IDs, job IDs, assignments, notifications, image IDs, and responses, as well as storing images with Firebase Storage.
Right now, the active branches are add-documentation and Webapp.
add-documentation is focused on getting the project as it was before (an iOS app and Firebase integration) documented, which means a comprehensive README, inline comments, and published generated documentation up.
Webapp is focused on setting up a web-based version with the capacity of the crowdworker side of the iOS app, also integrated with Firebase.
Our potential next steps include:
- more user testing!
- research on crowdworking
- some code cleanup
- documentation on the requesting user side of the project
- deployment to TestFlight
Look here for instructions to resolve this error:
username is not in the sudoers file. This incident will be reported.
If running Jazzy errors with this message:
Could not parse compiler arguments from `xcodebuild` output
and the `xcodebuild` log file contains this:
xcode-select: error: toll 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
try running:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer