Skip to content

NodeJS client library for the Hedgehog Educational Robotics Controller

License

Notifications You must be signed in to change notification settings

PRIArobotics/HedgehogNodeClient

Repository files navigation

HedgehogNodeClient

Build Status Code Coverage Dependency Status

NodeJS client library for the Hedgehog Educational Robotics Controller

Development

Tools

The following tools are used for development of the Hedgehog NodeJS library.

  • Dependency Management: NPM
  • Build Automation: Grunt (installing Grunt CLI globally is advisable)
  • Testing: Mocha (installed via NPM, run via npm test)
  • Coverage: Istanbul/nyc (installed via NPM, run via npm test)
  • Linting: TSLint (installed via NPM, run via grunt tslint)
  • Protobuf Compiler: protoc (can be downloaded here, run via grunt protoc)
  • Code generation: gsl (optional; requires Python 3.6, installed via pip install gsl[antlr,yaml], run via npm run gsl-protocol)

Setup

$ npm install       # Install required NPM modules
$ grunt protoc      # Generate Protobuf Javascript files
$ grunt build       # compile TypeScript sources

Optionally, set up code generation to adapt the TypeScript implementation of the Hedgehog protocol (requires Python 3.6):

$ pip install gsl[antlr,yaml] hedgehog-protocol-spec
$ npm run gsl-protocol

The generated code is tweaked in a few places, so make sure to diff the output against the git version, and re-apply any tweaks.

Running tests

In order to execute all tests, simply execute:

$ npm test

Usage Example

// Create a hedgehog client instance
let hedgehog = new HedgehogClient('tcp://127.0.0.1:10789');
try {
    // Control motors and servos
    // hedgehog.move(port, power)
    await hedgehog.move(0, 100);
    await hedgehog.move(2, 100);
    
    // hedgehog.set_servo(port, enabled, position)
    await hedgehog.setServo(0, true, 1023);
    
    // Read sensor values
    // hedgehog.getAnalog(0) returns a promise which resolves to the sensor value
    // Thus, with async await syntax, we can do:
    const value = await hedgehog.getAnalog(0);
    
    // Same with digital sensors
    const value = await hedgehog.getDigital(8);
} finally {
    hedgehog.close();
}

Coding Styleguide

Code is linted via TSLint. Read the styleguide entry in the hedgehog-ide project's wiki.

About

NodeJS client library for the Hedgehog Educational Robotics Controller

Resources

License

Stars

Watchers

Forks

Packages

No packages published