|
1 |
| -# Noos-Open |
2 |
| -Warehouse automation with modular (or other) robots |
| 1 | +# PoRoLog ROSE-AP |
3 | 2 |
|
4 |
| -> Blah blah here, regarding the general info of Noos-Open |
| 3 | +[](https://opensource.org/licenses/Apache-2.0) |
| 4 | +<br/> |
5 | 5 |
|
6 |
| -# Deployment of Noos-Open cloud infrastructure |
| 6 | +ROSE-AP of the PoRoLog project, offers |
| 7 | +- Easy deployment of the NOOS Open Cloud infrastructure via `docker-compose`, allowing for robot logistics applications |
| 8 | +- Bootstrapping ROS2 software that can be installed in a ROS2-enabled Robot to automatically connect it to the NOOS Open infrastructure |
| 9 | +- [Codin](https://codin.issel.ee.auth.gr) dashboards, via which a Warehouse that uses the NOOS Open infrastructure can inspect its real-time status. |
| 10 | + |
| 11 | +This project is part of [DIH^2](http://www.dih-squared.eu/). |
| 12 | + |
| 13 | +## Contents |
| 14 | + |
| 15 | +- [Background](#background) |
| 16 | +- [Installation guide (NOOS-Open)](#noos-open-installation) |
| 17 | + - [Deployment of NOOS-Open](#deployment-of-noos-open-cloud-infrastructure) |
| 18 | + - [Prerequisites](#prerequisites) |
| 19 | + - [Setup](#setup) |
| 20 | + - [Execution](#execution) |
| 21 | + - [The Codin dashboard](#codin-dashboard) |
| 22 | + - [Future work](#future-work) |
| 23 | +- [Robot(s) setup](#robots-setup) |
| 24 | + - [Bootstrapping software](#bootstrapping-software) |
| 25 | + - [Custom robot integration](#custom-robot-integration) |
| 26 | +- [Step by step tutorial](#step-by-step-tutorial) |
| 27 | +- [Additional utilities](#fiware--mqtt-broker-accompanying-files) |
| 28 | + |
| 29 | +# Background |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +# NOOS-Open Installation |
| 34 | + |
| 35 | +## Deployment of Noos-Open cloud infrastructure |
7 | 36 |
|
8 | 37 | Noos-Open is supported by a cloud infrastructure, which relies on a [Fiware Orion broker](https://fiware-orion.readthedocs.io/en/master/) and a [Mosquitto MQTT broker](https://mosquitto.org/) instance. In the following image, you may see the overall architecture.
|
9 | 38 |
|
@@ -55,28 +84,146 @@ Note: The script must have execution privilages. Run the following command as su
|
55 | 84 | sudo chmod +x launch.sh
|
56 | 85 | ```
|
57 | 86 |
|
58 |
| -## To be added |
| 87 | +## Codin dashboard |
| 88 | + |
| 89 | +Codin is not open-source but it is (and will be) free for use. The dashboards can be exported in JSON formatted files and imported by another user, making the solution easily transferable. |
| 90 | + |
| 91 | +The Codin dashboard created for supporting Noos-Open can be found in [this link](https://github.com/ortelio/Noos-Open/blob/main/Porolog%20showcasing.json). You can import it in [Codin](https://codin.issel.ee.auth.gr/), declare your deployment's credentials and inspect your robots! |
| 92 | + |
| 93 | +## Future work |
59 | 94 | - Security on orion context broker via keyrock
|
60 | 95 | - Mosquitto certificates
|
61 | 96 |
|
62 | 97 | [docker_tutorial]: https://docs.docker.com/engine/install/ubuntu/
|
63 | 98 | [docker_compose_tutorial]: < https://docs.docker.com/compose/install/>
|
64 | 99 |
|
65 |
| -# Fiware & MQTT broker accompanying files |
| 100 | +--- |
| 101 | + |
| 102 | +# Robot(s) setup |
| 103 | + |
| 104 | +In order to integrate a robotic platform to the NOOS-Open infrastructure, the robot must be ROS2-enabled, at least supporting the ROS2 Navigation stack. Furthermore, its OS must be unix-based, in order to be able to execute Python v3, as well as the [Commlib-py](https://pypi.org/project/commlib-py/) library, which acts as the communication channel between the Robot and NOOS-Open. |
| 105 | + |
| 106 | +## Bootstrapping software |
| 107 | + |
| 108 | +For easier integration, NOOS-Open provides a bootstrapping ROS2 package that can be easily modified for any ROS2-supporting robot and allow for quick and easy integration with the NOOS-Open infrastructure. This package is located [here](). |
| 109 | + |
| 110 | +The instructions to execute it follow: |
| 111 | +> VASILIS HERE! |
| 112 | +
|
| 113 | +## Custom robot integration |
| 114 | + |
| 115 | +In the case where anyone wants to implement their own controllers (or some of them), they can write their own Python ROS2 package and create the following Commlib publishers/subscribers with the following data models: |
| 116 | + |
| 117 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/battery` |
| 118 | +```yaml |
| 119 | +{ |
| 120 | + percentage: <Float> |
| 121 | +} |
| 122 | +``` |
| 123 | + |
| 124 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/image` |
| 125 | +```yaml |
| 126 | +{ |
| 127 | + val: <String> # The base64 encoded image |
| 128 | +} |
| 129 | +``` |
| 130 | + |
| 131 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/logs` |
| 132 | +```yaml |
| 133 | +{ |
| 134 | + val: <String> |
| 135 | +} |
| 136 | +``` |
| 137 | + |
| 138 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/state` |
| 139 | +```yaml |
| 140 | +{ |
| 141 | + state: <String> |
| 142 | +} |
| 143 | +``` |
| 144 | + |
| 145 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/status` |
| 146 | +```yaml |
| 147 | +{ |
| 148 | + status: <String> |
| 149 | +} |
| 150 | +``` |
| 151 | + |
| 152 | +#### SUBSCRIBER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/velocities` |
| 153 | +```yaml |
| 154 | +{ |
| 155 | + command: <String> # One of FORWARD, BACKWARD, LEFT, RIGHT, STOP, LIFT, RELEASE |
| 156 | +} |
| 157 | +``` |
| 158 | + |
| 159 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/status` |
| 160 | +```yaml |
| 161 | +{ |
| 162 | + linear: <Float>, |
| 163 | + angular: <Float> |
| 164 | +} |
| 165 | +``` |
| 166 | + |
| 167 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/status` |
| 168 | +```yaml |
| 169 | +{ |
| 170 | + linear: <Float>, |
| 171 | + angular: <Float> |
| 172 | +} |
| 173 | +``` |
| 174 | + |
| 175 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/pose` |
| 176 | +```yaml |
| 177 | +{ |
| 178 | + x: <Float>, |
| 179 | + y: <Float>, |
| 180 | + theta: <Float> |
| 181 | +} |
| 182 | +``` |
| 183 | + |
| 184 | +#### PUBLISHER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/path` |
| 185 | +```yaml |
| 186 | +{ |
| 187 | + path: [ |
| 188 | + { |
| 189 | + x: <Float>, |
| 190 | + y: <Float> |
| 191 | + }, |
| 192 | + ... |
| 193 | + ] |
| 194 | +} |
| 195 | +``` |
| 196 | + |
| 197 | +#### SUBSCRIBER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/target` |
| 198 | +```yaml |
| 199 | +{ |
| 200 | + x: <Float>, |
| 201 | + y: <Float> |
| 202 | +} |
| 203 | +``` |
| 204 | + |
| 205 | +#### SUBSCRIBER `/<ORION_API_KEY>/<ROBOT_ID>/attrs/target/entity` |
| 206 | +```yaml |
| 207 | +{ |
| 208 | + type: <String>, # One of Parcel, Pallet, Slot |
| 209 | + id: <String> |
| 210 | +} |
| 211 | +``` |
| 212 | + |
| 213 | +--- |
| 214 | + |
| 215 | +# Step by step tutorial |
| 216 | + |
| 217 | +The step by step tutorial will be uploaded to YouTube and the link will be posted here! |
| 218 | + |
| 219 | +--- |
| 220 | + |
| 221 | +# Utilities - Fiware & MQTT broker accompanying files |
66 | 222 |
|
67 | 223 | - [Commlib-py](https://pypi.org/project/commlib-py/): Robot communication controller, i.e. the software to dispatch information to Fiware broker via MQTT, using Python. This component is commlib-py and is currently open-source
|
68 | 224 | - [Fiware entities JSON](https://github.com/ortelio/Noos-Open/blob/main/fiware-entities.tar.xz): Here you can find a collection of JSON-formatted files that contain the Fiware NGSI types, suitable for logistics applications
|
69 | 225 | - [Hoppscotch Fiware-related REST calls](https://github.com/ortelio/Noos-Open/blob/main/hoppscotch_calls.zip): REST collections for invoking and updating all Fiware entities. Hoppscotch is the open-source alternative of Postman, alleviating its restrictions regarding membership
|
70 | 226 | - [Script](https://github.com/ortelio/Noos-Open/blob/main/fiware_bootstrapping.py): Python script using [REST-ee-Fi](https://github.com/robotics-4-all/fiware-ngsi-api), via which an initial insertion of mock data to the respective Fiware entities is performed, so as for the Hoppscotch calls to operate
|
71 | 227 | - [Script](https://github.com/ortelio/Noos-Open/blob/main/fiware_parcel_2d_transformation.py): Python script that takes as input a Parcel’s ID and retrieves its x,y coordinates in the absolute coordinate frame (warehouse frame)
|
72 | 228 |
|
73 |
| -# Codin dashboard |
74 |
| - |
75 |
| -Codin is not open-source but it is (and will be) free for use. The dashboards can be exported in JSON formatted files and imported by another user, making the solution easily transferable. |
76 |
| - |
77 |
| -The Codin dashboard created for supporting Noos-Open can be found in [this link](https://github.com/ortelio/Noos-Open/blob/main/Porolog%20showcasing.json). You can import it in [Codin](https://codin.issel.ee.auth.gr/), declare your deployment's credentials and inspect your robots! |
78 |
| - |
79 |
| -# Robotic components |
80 | 229 |
|
81 |
| -- [Robot controller (ROS2 node)](): Vassilis here |
82 |
| -- Other algorithms? |
|
0 commit comments