Internet of Robotic Things

I started an Internet of Robotic Things Lab in my last year working at Oxford Brookes University,
My motivation for the lab was that until the day we have a full understanding of inner workings of a brain, robotics research needs to rely on collecting information about humans to learn and mimic human-like responses. Such “cognitive robots” will achieve social robot-robot and human-robot interactions, and consequently, integrate better to our future daily home and work lives.  IoT (Internet of Things) will play a central role in collecting (and may help processing) the vast amounts of information needed for these robots. Essentially, IoT creates: “a dynamic global network infrastructure with selfconfiguring capabilities […] 
where physical and virtual "things" have identities […] and use intelligent interfaces and are  seamlessly integrated into the information network.” [1] The availability of such an infrastructure aids not only information collection but also the development of new robotics technology. For instance, in the case of object recognition, Internet-powered robots may use IoT to communicate with the devices in their environment directly without requiring camera-based vision.

With a student researcher, Ben Guy, we started to think how to prototype such an integrated network for a robot. We had a Nao robot from the Cognitive Robotics Research Group, led by Dr. Nigel Crook. For IoT devices, we had Arduino, Raspberry Pi and TelosB motes. 
The task was to have bi-directional data transfer between the robot and these devices. 
Simple! :)

We started looking at what is available and after much head scratching and trial and success, managed to bring together open-source software to do the job.

First, we needed a solution to broker messages between different entities: We used an MQTT-based solution. Our broker was RSMB - Real Small Message Broker. We enabled different devices to publish/subscribe to this MQTT broker. 

Second, We used the ROS (Robotic Operating System) to build an application on Nao Robots.

Third, to make our IoT things and the robot to talk to each other, we glued everything together using openHab. openHAB is a software for integrating different home automation systems and technologies. The MQTT binding bundle of OpenHab allows openHAB to act as an MQTT client, so that openHAB items can send and receive MQTT messages to/from an MQTT broker.
 The iot_bridge binding provides a bridge between the Robot Operating System (ROS) and OpenHAB [2].   So, devices could publish messages, to which the robot could subscribe to. (The other way around is also possible - the IoT devices subscribe to robot's messages.)

We used the framework to transform Nao to a robotic companion. Ben put together a Raspberry-Pi-based solution to have an RFID-controlled medical cabinet. The lock of the medical cabinet is controlled by a servo.

In the video of the proof-of-concept, Nao talks to the patient to remind time to take medication, reacts when the patient is taking medication on time, and also warns against overdosing if the patient goes to the cabinet again to re-medicate. (Nao can even pronounce my name correctly! :) )

When an unauthorized person tries to open the cabinet, it warns them they are not authorized. Nao interacts with the patient and other persons in a household as a result of getting messages about their interaction with the devices embedded in the medical cabinet.

I am not at Oxford Brookes any more but still work on Internet of Things.
I firmly believe, Internet of Things, integrated with other physical systems, is a true game changer, and will have a profound effect on our lives. 

[1] Definition by ITU and IERCInternet of Things European Research Cluster