hedgehog-client
v0.7.0-rc.2
Published
Client library for the Hedgehog Educational Robotics Controller
Downloads
25
Readme
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 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.