Using Docker, all required dependencies are installed automatically. All process tasks are deployed as web services in separate Docker containers and can be accessed through the published ports.
docker-compose up -d --build
Alternatively, all services can be executed natively on the local machine. All dependencies, libraries and programs that would be installed automatically within the Docker containers are a prerequisite then.
./raspberrypi.sh
Navigate to the process engine and drop the following JSON process model:
[
{
"type": "parallel",
"name": "",
"branches":
[
[
{
"type": "webservice",
"name": "scanning position",
"method": "POST",
"url": "http://localhost:8084/scanpos",
"post": "sleep(5 * 1000);"
},
{
"type": "webservice",
"name": "scan scene",
"method": "GET",
"url": "http://localhost:8081/obj/universalrobot",
"pre": "request.expect = 'binary';",
"post": "storage.saveBinary('scene', responseBody);"
}
],
[
{
"type": "webservice",
"name": "select object to find",
"method": "GET",
"url": "http://localhost:8082/example_models/cuboid5000.pcd",
"pre": "request.expect = 'binary';",
"post": "storage.saveBinary('model', responseBody);"
}
]
]
},
{
"type": "webservice",
"name": "object recognition",
"method": "POST",
"url": "http://localhost:8082/bl?angle=90&height=.372",
"pre": "request.data = new FormData();\nrequest.contentType = false;\nrequest.data.append('scene', storage.loadBinary('scene'), 'scene.obj');\nrequest.data.append('model', storage.loadBinary('model'), 'model.pcd');",
"post": "storage.saveJSON('recognition', responseBody);"
},
{
"type": "webservice",
"name": "calculate robot coordinates",
"method": "POST",
"url": "http://localhost:8083/coords",
"pre": "request.data = new FormData();\nrequest.contentType = false;\nrequest.data.append('recognition', this.recognition);",
"post": "console.log('move clamshell to: ', responseBody);\nstorage.saveJSON('clamshell', responseBody);"
},
{
"type": "webservice",
"name": "move clamshell",
"method": "POST",
"url": "http://localhost:8084/pick",
"pre": "request.data = new FormData();\nrequest.contentType = false;\nrequest.data.append('coordinates', this.clamshell);",
"post": "console.log(responseBody);"
}
]