Markovito ’ s Team Description RoboCup @ Home 2014

In this paper we present Sabina, a service robot developed by the Markovito team at INAOE. Sabina is based on a PatrolBot robot platform and incorporates a set of general purpose modules for service robots that achieve basic robot skills, such as map building; localization and navigation; object and people recognition and tracking; an human interaction using facial animation, speech and gestures and manipulation. All these modules are integrated in a layered behavior-based architecture using shared memory for communication and coordinated by a decision-theoretic planner. As an addition to Sabina’s capabilities, we also describe a novel approach to autonomous 3D object reconstruction. Markovito team have participated in the Robocup@Home category in previous Robocup competitions; in Turkey 2011 our team qualified for the second stage of the competition. In 2013, Markovito team won the Mexican RoboCup@home competition. 1 Sabina’s Hardware Platform. Sabina is a service robot developed by the Markovito team (see Figure 1) , it is based on a PatrolBot robot platform [1]. The platform has a sonar ring, two wheels, two motors with encoders, a Laser SICK LMS200, one video camera Canon VCC5, speakers, a directional microphone and an integrated PC. The team have added other devices such as an standard Laptop, two web cams, a Katana 6M arm with 5 DOF and a Kinect device. 2 Sabina’s Software Architecture Sabina’s software architecture has been designed and developed as a layered behavior-based [2] architecture that uses shared memory for communication. As you can see in Figure 2 all the general porpuse modules are integrated in this architecture. The architecture has three different levels: – Functional Level: Here the modules interact with the robot sensors and actuators, relaying commands to the motor or retrieving information from the sensors. (a) PatrolBot Platform (b) Katana 6M arm with 5 DOF Fig. 1. Sabina’s hardware platform. – Execution level: Modules in this level interact with the functional level through shared memory. This level includes the modules to perform basic tasks such as navigation, localization, visual perception, human-robot interaction, etc. – Decision level: This is the highest level in the architecture. Markov Decision Processes (MDPs) are used as a global planner to coordinate the execution level modules. The layered structure and a transparent communication mechanism allow different configurations to be defined without modifying the modules and without affecting the rest of the system. In this architecture, a robot behavior is an independent software module that solves a particular problem, such as navigation or gesture recognition. The complete system was developed using mainly C/C++ languages and runs on Linux. 2.1 The Execution Level We are implementing different general-porpuse modules that are common to several services robot’s applications. All of these modules are in the execution Fig. 2. The software architecture of Sabina: a layered behavior-based architecture that use shared memory for communication. level on the Sabina’s architecture. The libraries used in these modules are listed in Table 1. Table 1. Modules and libraries used in Markovito. Module Source code/Libraries Navigation Aria, ARNL, MRPT Vision OpenCV, SIFT algorithm, ORB descriptors, OpenKinect Interaction Festival, Microsof Speech Recognition, OpenGL Custom Render Coodination SPUDD (MDP) Map building and Planning. The first task that a service robot has to do is to know its environment. For this porpuse a service robot requires a model or map of this environment. Sabina combines information from a laser scanner and odometer to construct an occupancy map. We use the ICP algorithm from Mobile Robot Programming Toolkit (MRPT) [3] to build this model. The ICP algorithm matches a point cloud and some reference. In this case, the point cloud are the current laser readings, the reference are the previous one. Figure 3 illustrates this process. For planning purposes, a probabilistic roadmap (PRM) [4, 5] is built using a random generation of points in the configuration space. These points are joined if there is a free path between them and information is stored in a graph G. Given an initial configuration, s, and a goal configuration, g, the problem consists of connecting s to g in G. This process is illustrated in Figure 4. Fig. 3. Sabina building a map of the environment using its SLAM algorithm based on MRPT ICP. Fig. 4. Example of a PRM constructed. The PRM is build using a random generation points. The points are joined if there is a free path between them. Intermediate points in the path are given as goals to the navigation module. Localization and Navigation. Due to odometric error, the ability for mobile robots to locate themselves in an environment is not only a fundamental problem in robotics but also a pre-requisite for safe navigation tasks. In order to locate itself, Sabina uses laser information. Given a set of laser readings, a MRPT particle filter process is performed to estimate the real robot position. Figure 5 shows the localization process.