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."
}