nbarikipoulos/poppy-robot-cli

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Poppy Robot CLI

[![NPM version][npm-image]][npm-url]
[![JavaScript Style Guide][standard-image]][standard-url]
[![Language grade: JavaScript][lgtm-image]][lgtm-url]
[![Maintainability][code-climate-image]][code-climate-url]

This project allows to simply monitor and interact with robots of the [Poppy project](https://www.poppy-project.org/en/) family in command line.

It provides a CLI tool (provided as a npm module or a standalone executable)
- To query and send basic set of instructions to the registers of motors and then, to allow performing unary 'action' such as move, speed settings, and so on...,
- To drive the robot via keyboard.


As example, typing :

```shell
poppy stiff
poppy speed 120
poppy rotate -90 -m m1
poppy goto 0 -m m2 m3 m4 m5 m6 -d 2
```

Performs:
- Switch all motors to stiff state,
- Set up their speed to 120,
- Rotate by -90 degrees the motor m1,
- At last, move the other motors to position 0 in 2s.

Typing:

```shell
poppy drive
```
allows to simply drive the robot via the keyboard _i.e._ selecting motor(s), rotating them, applying simple 'posture', and so on.


At last,

```shell
poppy query
```

displays in a table the value of the registers for all motors.

```shell
┌─────────────────────┬───────┬────────┬───────┬───────┬───────┬───────┐
│                     │ m1    │ m2     │ m3    │ m4    │ m5    │ m6    │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ compliant           │ true  │ true   │ true  │ true  │ true  │ true  │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ lower_limit         │ -89.9 │ 89.9   │ 89.9  │ -89.9 │ 89.9  │ 89.9  │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ present_position    │ -0.1  │ -89    │ 86.4  │ -1.3  │ -94.3 │ 1.0   │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ goal_position       │ 0     │ -90    │ 90    │ 0     │ -90   │ 0     │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ upper_limit         │ 89.9  │ -125.1 │ -89.9 │ 89.9  │ -89.9 │ -89.9 │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ moving_speed        │ 100   │ 100    │ 100   │ 100   │ 100   │ 100   │
├─────────────────────┼───────┼────────┼───────┼───────┼───────┼───────┤
│ present_temperature │ 35    │ 35     │ 35    │ 34    │ 33    │ 34    │
└─────────────────────┴───────┴────────┴───────┴───────┴───────┴───────┘
```

## Documentation

A full documentation about both installation and usage is available [here][docs]. 

## Advanced Uses

This module faces the objects and the factories of the [poppy-robot-core][core-link] as well as it introduces new features to ease connection settings.

Check the dedicated [documentation][docs-core] for detailed instructions.

## Known Limitations

- __This module has been only tested with the Poppy Ergo Jr__ (aka with a set of dynamixel XL-320). As it communicates with the robot via the REST API of the pypot library, it should be usable with any robot of the poppy family.


## Credits

- Nicolas Barriquand ([nbarikipoulos](https://github.com/nbarikipoulos))

## License

The poppy-robot-cli is MIT licensed. See [LICENSE](./LICENSE.md).

[docs]: https://nbarikipoulos.github.io/poppy-robot-cli
[docs-core]: https://nbarikipoulos.github.io/poppy-robot-cli/core

[core-link]: https://github.com/nbarikipoulos/poppy-robot-core#readme

[npm-url]: https://www.npmjs.com/package/poppy-robot-cli
[npm-image]: https://img.shields.io/npm/v/poppy-robot-cli.svg
[standard-url]: https://standardjs.com
[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg

[lgtm-url]: https://lgtm.com/projects/g/nbarikipoulos/poppy-robot-cli
[lgtm-image]: https://img.shields.io/lgtm/grade/javascript/g/nbarikipoulos/poppy-robot-cli.svg?logo=lgtm&logoWidth=18
[code-climate-url]: https://codeclimate.com/github/nbarikipoulos/poppy-robot-cli/maintainability
[code-climate-image]: https://api.codeclimate.com/v1/badges/1e23c37d39d4bcf8d6ce/maintainability