IoT broker-based remote robot management (collaboration with Tero Ltd)
Project code: ΚΜΕ5-0077135
The project’s goal is the development of tools which will support the management of a robotic system via graphical interfaces, even when the robot exists in a remote network (not in a LAN).
In order to support the robot’s manipulation from anywhere (even out of a LAN), an Internet of Things broker (IoT broker) was utilized, to which the robots and the Graphical User Interfaces (GUIs) are connected. Thus, the followed methodology was the development of algorithms in-robot, the development of specialized software which wraps the robotic algorithms and makes them available to the IoT broker, and the creation of the Graphical User Interface which communicates to the broker in order to show results or pass commands. The utilized IoT broker is RabbitMQ and the communication protocols used are AMQP, MQTT and WebStomp.
A Turtlebot robot was used, in order to evaluate and validate the solution. If hardware is concerned, the robot is equipped with an Intel NUC i5 8GB RAM processing unit, an Asus Xtion Pro depth camera and a RPLIDAR-A2 Laser Scanner. As far as the software is concerned, the OS was the Ubuntu 16.04, the middleware used was ROS1 Kinetic and the main ROS packages used were turtlebot_bringup for basic robot control, karto SLAM for mapping, move_base for autonomous navigation and AMCL for localization.
As aforementioned, in order to support the remote management and inspection of the robot via the IoT broker, a specialized wrapper was created, named turtlebot_manager. This utilized the Commlib Python library, which allows for seamless communication via IoT protocols, offering pub/sun, RPC and action communication patterns.
The basic implemented functionalities are:
- Mapping
- Localization
- Autonomous navigation in a pose or a location
- Robot teleoperation
- Map management
- Location management in known maps
- Low-level sensory information showcasing
So as to create the graphical interface the Codin platform was created and used, which allows for the creation of dashboards towards inspecting IoT-based systems. The developed dashboard for the specific project is the following:
The full project functionality can be seen in the following showcasing video: