Coder Social home page Coder Social logo

scribblesv2's Introduction

scribblesV2

This is the code for the webapp used to control Mr Scribbles (A dancing drawing Robot)

Intro

Some people love expressing themselves while dancing; some people do it while drawing. We thought, why don't we combine those two and create something fun? The Dancing Drawing Robot was created to help people feel more comfortable about their bodies, about their movements โ€” about being weird sometimes ;)

gif (1)

The Robot

  • Our robot was driven by the arduino microcontroller, connected to DC and servo motors. The robot moves from left to right using the DC motors and has arms that rotate 180 using the servo motor. View the entire video here

The Poses

  • We picked out famous dance moves and trained a model on ml5 to recognise the poses. These poses were meant to act as a replacement for the standard front, back etc buttons on controllers used for robots.

Connecting the robot and the poses.

  • We created a webpage that had a "menu" of poses available to the user. This webpage initiated an instance of our ml5 model to recognise the poses captured by the webcam.
  • This webpage was connected to a websocket server(built on NODEJS).
  • The server on receiving the data forwards the data to our arduino through serial communication.

Try replicating the poses on the top to move the robot. When a pose made by the user matches any of the ones on the top, the colour changes to that pose colour as a feedback. There was also alive stream for the remote users to be able the see the robot move and draw.

Code

public/sketch.js

  • Here is where the client logic resides.
  • A new instance of the trained ml5 model is created that helps identify the poses made by the user and on appropriate identification sends the data to the server.

server.js

  • The server runs on expressJS.
  • It acts as an messenger between the arduino and client. It waits for incoming messages from the client and transmits it to arduino using the serial communication library.
  • It handles the following conditions
    WAITING_CLEARED - A newly connected client can control the robot
    IN_USE - If a client is already controlling the robot
    WAITING_CLEARED - A client in waiting has been cleared for use

Find the webapge on https://tranquil-dawn-67895.herokuapp.com/

More on our development process here

To try out the robot, feel free to reach out Just a quick start of the robot and you will be able to control it remotely.

scribblesv2's People

Contributors

stuti-43m avatar

Watchers

 avatar

Forkers

43-stuti

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.