Rexctl is a CLI application to bootstrap and control Rex. The purpose of this
repository is to provide an application to implement the knowledge tranfer of the control policies pre-trained with
rex-gym.
This code is designed to run on UNIX machines and was tested on the Nvidia Jetson Nano. Check out the Wiki for more information on the hardware setup.
Rexctl starts a web server using uwsgi and Flask. In order to allow operations on the board, you need to give
permissions to the www-data user:
sudo usermod -a -G gpio www-data
sudo usermod -a -G i2c www-data
Install this package system-wide.
From the root of the project:
sudo -H pip3 install .
The entry point command is rexctl.
| Command | Description |
|---|---|
| init | Start the web server and initialise the hardware. This is the first command you need to run in order to bootstrap the robot. |
| status | Get the status of all the daemons. |
| exec | Start a task. Check the /exec endpoint for more info. |
| log | Get the execution logs. |
| stop-all | Kill all the active tasks. |
| debug-pose | Set the debug pose. This is used to check the servos alignment. |
| calibration | Get the BNO055 calibration status. |
| store-calibration | Persist the current BNO055 calibration. |
Rexctl uses nginx to create a local DNS entry to map the device name you have setup during the bootstrap to localhost.
E.g. using rex you will able to access the APIs as follows:
http://rex/
Start a new Task. Currently, the following tasks are available:
| Task | Parameters | Description |
|---|---|---|
| set_position | * pose_id: (str) The pose name. Check the available poses here. | Set a position setting the servos angles. |
| set_gait | * action_id: (str) The gait name. Check the available poses here | Start a gait running a pre-trained control policy. |
URL : /exec
Method : POST
Body
Provide the task name and the required arguments.
{
"daemon_id": "str",
"command_id": "str",
"command_args": {
"arg_0": "value0",
...
}
} Examples
Set a standard position.
{
"daemon_id": "motion",
"command_id": "set_position",
"command_args": {
"pose_id": "stand_low"
}
}Start a pre-trained gait.
{
"daemon_id": "motion",
"command_id": "set_gait",
"command_args": {
"action_id": "walk",
"simulation": true
}
}Code : 200 OK
Get the current status.
URL : /status
Method : GET
Code : 200 OK
{
"motion": "active",
"perception": "active"
}Kill all the running tasks.
URL : /stop_all
Method : GET
Code : 200 OK
{
"200": "command sent."
}Retrieve the current calibration status.
URL : /get_calibration
Method : GET
Code : 200 OK
{
"system": "int",
"gyroscope": "int",
"accelerometer": "int",
"magnetometer": "int",
"mode": "int"
}Persist the current BNO055 calibration data. This data will be loaded at every startup.
URL : /store_calibration
Method : GET
Code : 200 OK
{
"200": "command sent."
}