NodeJS client library for the Hedgehog Educational Robotics Controller
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)
$ 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.
In order to execute all tests, simply execute:
$ npm test
// Create a hedgehog client instancelethedgehog=newHedgehogClient('tcp://127.0.0.1:10789');try{// Control motors and servos// hedgehog.move(port, power)awaithedgehog.move(0,100);awaithedgehog.move(2,100);// hedgehog.set_servo(port, enabled, position)awaithedgehog.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:constvalue=awaithedgehog.getAnalog(0);// Same with digital sensorsconstvalue=awaithedgehog.getDigital(8);}finally{hedgehog.close();}Code is linted via TSLint. Read the styleguide entry in the hedgehog-ide project's wiki.