HedgehogNodeClient
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 vianpm 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 instancelet 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.