Git Product home page Git Product logo

sparc-auburn / lab-assistant-io Goto Github PK

View Code? Open in Web Editor NEW
2.0 5.0 2.0 1.63 MB

The purpose of this project is to create a virtual assistant to assist SPARC members using Node.JS. The virtual assistant will be fully featured including abilities to help in the lab to automating a home. It will include a system that allows for easy to use management of lab equipment and various administrative features. The virtual assistant could also be integrated on a mobile robotic platform to allow more capabilities that a static computing platform could. Our current iteration of the virtual assistant is named Karen.

Home Page: http://sparc-auburn.github.io/

License: Apache License 2.0

JavaScript 10.17% CSS 87.93% HTML 1.90%
lab lab-assistant voice virtual assistant sparc auburn-university dialogflow auburn nodejs

lab-assistant-io's Introduction

Lab Assistant IO

Project Purpose

Project Diagram

The purpose of this project is to create a virtual assistant to assist SPARC members using Node.JS. SPARC stands for Student Projects and Research Committee and is a student led organization in the Department of Electrical Engineering at Auburn University. The virtual assistant will be fully featured including abilities to help in the lab to automating a home. It will include a system that allows for easy to use management of lab equipment and various administrative features. The virtual assistant could also be integrated on a mobile robotic platform to allow more capabilities that a static computing platform could. Our current iteration of the virtual assistant is named Karen.

Project Overview

This project is programmed in Node.JS. Node.JS provides a powerful yet fast back end to run the assistant. This project was originally developed in Python and is being transitioned into Node.JS to decrease response time and utilize the networking advantages of Node.JS. To see the original project visit SPARC-Auburn/Lab-Assistant. Express.JS is utilized to provide a robust framework for the software. Pug is used instead of HTML to provide a simpler way to generate the browser based interface.

Packages

The assistant interacted with through a main server set up on the desired device. Packages are used to manage the intelligence of the assistant and can be turned on and off to allow flexibility. User commands are passed in from the main server into the enabled packages. The packages return a response back to the main server on what to The packages communicate with a natural language processor named DialogFlow.

  • Default - A collection of basic responses.
  • Lab - A collection of responses and functions pertaining to assisting users in the SPARC lab.
  • Home - A collection of responses and functions pertaining to home automation and light control.
  • Weather - A collection of responses and functions pertaining to processing weather commands.
  • Personal - A collection of functions pertaining to personal commands like reminders, time, and alarms.
  • Knowledge - A collection of functions to search Google, Bing, Wolfram Alpha, Wikipedia, or etc.
  • Fallback - A collection of fallback responses if previous suites did not catch.

DialogFlow

Project Diagram

To help give the virtual assistant the ability to understand the English language, we are using a Google owned service called DialogFlow. It is a natural language processor in which it deconstructs user inputs into intents (meaning) and entities (specifics). Through customization and training, a machine learning algorithm can be tuned to allow the assistant to more intelligently communicate.

The DialogFlow documentation walks through an example of how it works: https://dialogflow.com/docs/getting-started/basics

Client Servers

To interact with various devices across a network, client servers can be setup.

  • Windows Server - Interacts with Windows applications, control mouse and keyboard, etc.
  • Robot Server - Interacts with robotic platforms.
  • Home Server - Interacts with various IOT devices and microcontrollers for the purposes of home automation.
  • Lab Server - Interacts with various IOT devices and microcontrollers for the purposes of lab automation.
  • Slack Server - Interacts with Slack message groups.

Notable Libraries and Modules

Running the Assistant

Windows

  1. Ensure the following are installed:
  2. Clone directory https://github.com/SPARC-Auburn/Lab-Assistant-IO into desired location.
  3. Open command prompt and change directories into Lab-Assistant-IO/main_server
  4. Setup the node module by running npm install.
  5. Start an instance of the main server by running npm start.
  6. Open up Google Chrome and navigate to https://localhost:8443/
  7. You should now see a website displayed that you can interact with the assistant.
  8. If you need to stop the program use "CTRL-SHIFT-C".

Mac OSX

Debian Linux (Ubuntu, Raspbian, etc.)

Contributing to the Project

Please see the CONTRIBUTING.md document in this repository for recommendations on how to contribute.

lab-assistant-io's People

Contributors

joshjab avatar mcberry23 avatar sbs0034 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

todun azimuthadv

lab-assistant-io's Issues

Command Handler only searches first package

The following code when run only returns results from the first package (social). The second package (lab) should return a response when the req.body.question is What is SPARC?.

router.post('/', function (req, res, next) {
  console.log("<",req.body.question);
  var response = undefined
  var i = 0;
  for (i = 0; i < packageList.length; i++) {
    var keepgoing = packageList[i](req.body.question, function(data_received){
      response = data_received;
      if (response != undefined && response != ""){
        res.send({'ttsText': response});
        return false;
      }
      else{
        return true;
      }  
    })
    if(!keepgoing) break;
  }
});

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.