Social Robots as Windows into ROS Robotic Systems

naoThis project demonstrates use of a social robot as the commentator of ROS network messages. ROS (Robotic Operating Systems) is a framework that allows communication between robotic systems. My network consists of a social robot and an autonomous robotic swarm. Note that a social robot is one that can communicate in ways that make humans comfortable. They typically look humanlike, walk, talk, and express emotion. Fortunately, I have access to the robot you see here. His name is Nao. I have been working with Nao for more than a year, so I am familiar with his operating system, Naoqi. In this project, Nao uses the ROS network to communicate the status of the swarm by using the rovers’ published messages, called topics. Nao subscribes to these topics and subsequently reports the contents. The importance of this work is that this type of connectivity can be performed on a wide variety of robotic and sensor based systems. The significance of using a social robot is that many people will benefit from an approachable interface to more complex robotic systems in the future.


The goal is to successfully collect data generated by a rover swarm in near-realtime, then to have a social robot present that data through body animations and phrases including some humor.

Project Approach


Figure: Using ROS, Nao has a quasi-realtime connection to the rovers’ status.

I used the rover simulation software from UHCL/SanJac’s NASA Swarmathon project. The Swarmathon is a three year competition in which teams design software that controls swarm rover movement in a defined space. The rovers attempt to find April tags (similar to Q-codes) ranging in values from 0-256. Once a tag is found, a ‘tag pick up’ message is published in ROS. Since Nao subscribes to that message, he will declare the tag number and identify the rover that found it. The rover then returns to a central region, home base, to simulate ‘tag drop off’. This is the second message that Nao will communicate. Python scripts controlled Nao using Naoqi API’s over WiFi. Nao’s words were selected randomly from a list of prepared sentences. His body movements were also selected randomly. I added constant animation and filler sentences so that the robot was continuously moving and speaking much of the time. The hope was to have an interesting and engaging demonstration.

ROS Elements


The ROS communication diagram above displays eight elements: Nao node, three target (tag) pick up topics, three target drop off topics, and the time method of duration class.


Nao is able to communicate the status of the swarm in near-realtime. The only exception occurs when a message arrives while he is concurrently in the process of speaking. Nao is programmed to do one thing at time, complete that task, then go on to the next task. Thus there are occasionally delays reporting scores while he finishes his task.


The project shows that Nao can be connected to the swarm robotic system using ROS, and he can express ROS messages in a humanlike fashion. I conclude from these results that Nao can be used with potentially more complex robots or systems of sensors. A good example is a home automation system where Nao would be the helpful human companion who controls lighting, AC, and changes the volume of music simply at his master’s request.