Job processing pipeline for the KUKA Robot Learning Lab at KIT.
- RESTful web API for submitting jobs and retrieving job data
- For an interactive documentation, see the RLL API doc page
- Includes an example web frontend page
- Server runs on port 8888 by default
- Worker for processing jobs
- Uses Docker to isolate client code; see the config directory for the Docker setups of the example projects
- Can be configured to use a simulation or the real robot
- Test framework with a collection of unit tests for the server and the worker
See also the test framework Readme and Docker container Readme for more information on the test framework and the Docker containers.
-
Create a workspace and clone the core repositories:
mkdir -p rll_ws/src && cd rll_ws
catkin_init_workspace
cd src
git clone https://github.com/KITrobotics/rll_stack.git
cd ..
-
Install dependencies:
rosdep install --from-paths src --ignore-src -r -y
-
Build the workspace:
catkin build
-
Source the workspace:
source devel/setup.bash
-
Copy the sample config in
rll_common/config/rll.yaml.sample
torll_common/config/rll.yaml
and adapt the config for your setup.
The server and worker need recent versions of the Docker and Motor Python libraries.
Both of them are not available from rosdep
, but they can be installed using pip
:
pip install "motor<1.3"
pip install docker
A MongoDB database needs to be accessible.
Database access is configured in the common config file. The directories for storing job data need to be set there, too. You also need a webserver that has access to the job data directory and can serve the files. We recommend configuring Apache for this purpose. You can also use Apache as a proxy in front of the RLL server and the webcams.
The server and worker can be launched in production or test mode. The mode is set with the optional parameter production
(default: false
) for the launch file.
Additionally, the worker can be launched with the following arguments:
robot
: Namespace the worker should be started in; default:iiwa
project
: Name of the project the worker should process; default:greetings
manual
: Iftrue
, the next job is only executed whenEnter
is pressed; default:false
mode
:sim
for simulation,real
for the real robot; default:sim
sim_check
: if mode isreal
, the previous check in simulation can be disabled when setting tofalse
; default:true