Giter Site home page Giter Site logo

msoftware / invisible-highway Goto Github PK

View Code? Open in Web Editor NEW

This project forked from experience-monks/invisible-highway

0.0 2.0 0.0 722 KB

Invisible Highway is an experiment in controlling physical things in the real world by drawing in AR. Simply make a pathway along the floor on your phone and the robot car will follow that path on the actual floor in your room. A custom highway with scenery is generated along the path to make the robots a little more scenic on your phone screen.

License: MIT License

C++ 11.05% C 3.42% Perl 2.10% C# 77.74% ShaderLab 5.69%

invisible-highway's Introduction

Invisible Highway

image

Remember how fun remote control cars were to play with as a child? Well, what if you could control where the car goes by drawing invisible highways in your living room? What if you could watch as an imaginative and fun scene is dynamically generated around your car as it drives through the roads you’re creating.

This playful experiment examines just how AR can be used to intuitively control physical objects.

Originally prototyped by Anna Fusté and Judith Amores from the MIT Media Lab, the two researchers who worked with Google Creative Lab over the summer to experiment with AR and developing new and meaningful interaction models with our environment. Google then brought on global design and experience studio Jam3, to design and build out the concept, and add dynamic functionality that would seamlessly meld the physical and digital worlds.

Google Blocks was used for initial modelling. The car was built using an off the shelf model from Adafruit with DIY additions. The app is built in Unity and communicates with the robot via Bluetooth.

You can read about this and other AR Experiments here.

Hardware

Bill of Materials

To create the robot you will need the following:

  • 1x robot
  • 1x IMU
  • 2x encoders for the motors
  • A cover for the robot. Print it on A4 without scaling to fit, cut and assemble it so that it looks like this and paint with a color which is not found in the environment you will be using the robot, so that the Chroma Key shader can pick it up

Setting up the Robot

  • Download VS Code
  • Install the PlatformIO extension
  • Open the "Robot-Firmware" folder in VS Code
  • Connect the robot via USB
  • Press the upload button in the bottom left of VS Code

PlatformIO should automatically install the dependencies. if you get build errors due to missing libraries:

  • Open the file platformio.ini
  • Click the terminal icon on the bottom bar of vs code
  • For each number in the lib_deps (?) section of the ini, run in the terminal: pio install # where # is the number from lib_deps

Using the Adafruit Bluefruit LE Connect app, connect to the robot and issue a few commands to make sure everything is working as expected.

Software

Installation

To install the app on an ARCore-compatible device do the following:

  • Install all the ARCore pre-requisites on the device (for instance the ARCore service)
  • Pull this repository and using a version of Unity 2017.1 beta9 or later open the InvisibleHighway.unity scene
  • You will need to import the ARCore UnityPackage and ensure all the project settings conform to ARCore requirements.
  • You will need to buy and import the Bluetooth LE for iOS, tvOS and Android package
  • Switch your platform to Android in Unity build settings
  • Build and Run for your device.

Usage

  • Make sure your Robot is turned on.
  • Launch the app, preferably in landscape mode.
  • Observe the blue LED on the Robot turn on to indicate that the bluetooth connection with the app is established.
  • Keep the app pointing to the floor and move it slightly around so that it can recognize the floor as the main ground plane.
  • Once the floor is recognized a white reticule will appear on the sceen. Tap anywheer on the screen to add a point to the path that the Robot will follow.
  • Keep tapping to add more points and create a full path. Don't create sharp corners as the road assets were not made for that. When done, press the next button.
  • The wireframe of the Robot's cover has appeared (if you are using a different cover than the one provided you will need to update this mesh in Unity).
  • Align perfectly the wireframe with the physical Robot so that the app can understand your Robot's position and orientation and tap on the screen.
  • If you are happy with the calibration, tap the done button to start the experience!

Known Issues

Android Permissions

The first time you run the app you will be asked for the required permissions (camera and bluetooth). After you accept you might see an error that ARCore failed to connect. Just restart the app to resolve this issue.

We believe this will be resolved in future versions of ARCore as hinted in the documentation.

Additional Credits

We acknowledge and are grateful to these developers for their contributions to open source software. You can find the source code, project links, and license information below.

invisible-highway's People

Contributors

doukasd avatar colin-yao avatar morrisai avatar peteraltamirano avatar

Watchers

Michael jentsch avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.