ROS-based human leader and robot follower using a Pioneer 3-DX robot

Implementación de ROS en sistema de control para un seguidor de personas usando robot Pioneer 3-DX


M.A Molina
UMNG, Bogotá, Colombia, mmolina2127@hotmail.com


D.R Avendaño
UMNG, Bogotá, Colombia, daniellpu9@outlook.com


L.E Solaque
UMNG, Bogotá, Colombia, leonardo.solaque@unimilitar.edu.co


N.F Velasco
UMNG, Bogotá, Colombia, lnelson.velasco@unimilitar.edu.co


C.A Pulido
UMNG, Bogotá, Colombia, camilopulidorojas@gmail.com

Fecha de recibido: ene 15, 2015
Fecha de aceptado: feb 8, 2016
Versión final: feb 8, 2016

Forma de citar/How to cite: Este artículo puede compartirse bajo la licencia CC BY-ND 4.0 (https://creativecommons.org/licenses/by-nd/4.0/) M.A et al, “Implementación de ROS en sistema de control para un seguidor de personas usando robot Pioneer 3-DX”, UIS Ingenierias, vol. 15, no. 2, pp. 63-71, jul-dic 2016.


RESUMEN

Robot Operating System (ROS) proporciona algoritmos y servicios para el control de diferentes tipos de robots. ROS es una herramienta útil en muchos problemas en el campo de los robots autónomos, especialmente en aplicaciones como la cartografía, localización y navegación autónoma en un ambiente interior. La navegación autónoma en un entorno dinámico contempla muchos factores ambientales que afectan el proceso de navegación. El enfoque de este trabajo es desarrollar un sistema modular para llegar a un seguidor humano utilizando un robot PIONEER 3-DX y un sensor Carmine Prime Sense, con el apoyo de hilos por cada paso de procesamiento a través de paquetes desarrollados en ROS. Estas etapas se dividen en: búsqueda y ubicación del usuario a seguir, estimación de la dinámica del robot, control de velocidades y por último, un módulo de seguridad de evasión de obstáculos.

Palabras clave: Carmine, Pioneer, robótica, ROS, seguidor de personas, sistemas de control.

ABSTRACT

Robot operating system (ROS) provides algorithms and services to control different kind of robots. ROS is a useful tool in many issues in the field of autonomous robots, especially in applications as mapping, localization and autonomous navigation in an indoor environment. Autonomous navigation in a dynamic environment is not only challenging, but also uncovers many indoor environmental factors which affect the navigation process. The presented work describes how a ROS-Based control system is used with a Pioneer 3-DX robot for a human leader and robot follower system. The approach for this work is develop a modular system to reach a human follower using PIONEER 3-DX and Carmine Prime sense Sensor supported by threads for each processing steps through ROS packages, these stages are divided in: coordinate human acquisition, robot´s pose estimation, angular and linear speed control and obstacles security module.

Keywords: Carmine, control system, human follower, Pioneer, robotics, ROS


1. INTRODUCCIÓN

Human’s beings have always looked for ways to perform several activities easily, avoiding to make a hand labor or painstaking work. Robotics offers supports for problems like transportation and physical rehabilitation which humans want to solve in a cooperative way [1], these solutions have been inspired by nature and human morphology, even production plants have adapted this approach using manipulators working together [2], where cooperative robotics comes in response, providing methods to develop team work. [1; 3].

Nowadays, cooperative robotics is used to perform dirty, dangerous, hard and repetitive tasks which can be of risk to humans. Actually, these activities are focused on industrial, research and development use. In some cases, cooperative robotics applications do not relate only to manipulator robots, but also to mobile robots. Then, their objectives and missions involve maintain robots formation for achieving a goal following a path [4; 5]. Some applications as transporting objects in restricted spaces, exploration and map construction of unstructured terrain, security and surveillance operations, search and rescue missions or entertainment robots, require a special care to keep them inside a minimum position error margin., [6].

In recent years, the interest in cooperative robotics and design of robots to assist people in their daily tasks has increased significantly. The main problem in mobile robotics is the navigation of agents working cooperatively with humans, solving problems such as moving loads, delivery of construction materials, delivery of medicines in hospitals, mine detection, among others.

The guide robots are helpful, however there is not a large number of investigations which have given the opportunity to robots working as guides or support robots in environments with a lot of people. One of the most important examples of robots interacting with people is Rhino robot. This is a robot who worked at the Deutsches Museum Bonn, where he guide hundreds of visitors through the museum.

The interaction between robots and people could be understood as a model by several dogs that lead a flock of sheep, guiding them toward a goal. Dogs and sheep have at least one form of communication explicit. However, currently there is no explicit signal for the guidance or for the path control, which is given by implicitly based on natural reactions between persons and robots. Moreover, the real human behaviors are very difficult to estimate, it should take about patterns of behavior as far as possible.

The idea of the present work is to develop a cooperative system using a mobile follower robot interacting with human leader. The robot must maintain a formation according to the user, while they are moving through space. As a follower robot, the mobile robot Pioneer 3-DX of MobileRobots Company is used, it is equipped with Carmine motion sensor. All the programming algorithms are developed based in ROS open source framework.


2. ROS

Robot Operating System is an open-source framework dedicated to robot applications; his purpose is to offer to developers some libraries, graphical and command-line tools under C++, Python and Java programming languages, [7]. ROS provides advantages respect communications infrastructure between processes using programs also known as nodes and topics sharing information on data structure called messages. Each running instance of ROS can publish messages on the defined topic likewise receive information subscribing to desire topic, this kind of decentralization improves system performance and allows executing packages on different stations.


3. ROSARIA

MobileRobots Inc provides C++ library called ARIA for Linux and Windows to interact with Pioneer Robots. Includes utilities to use network sockets, built-in robot features like velocity and position control, pose, battery level or sonar, as seen in [8]. Within ROS packages is ROSARIA, an interface developed to get and set information to robot using library named above, implemented via RosAria node, [9; 10].


4. COORDINATE HUMAN ACQUISITION

Alternatives to acquire human leader coordinates with respect to mobile robot have been named in [11]. The approach on the present work to estimate the target position to be followed is to use a device inexpensive with direct line-of-sight and recognized by developers to program skeleton tracking applications.

According to the description above, Carmine 1.08 PrimeSense 3D Sensor is used. It is thin, light, portable, fast (30 fps), and allows 3D features extraction in the environment with computational affordable cost and low consumption (Max 2.25 Watt via USB); also provides an open-source framework called OpenNI, [12]. This is the largest 3D sensing development framework. It provides an interface with devices to get visual data, RGB images or depth map even a user tracking inside field of view through nodes interaction as components to create understandable information for developer, from acquisition of sensor to full body pose presentation or identifying predefined gestures.

ROS has the possibility to use this library with openni-camera and openni2-camera packages available on [9; 10]. To get data information from Carmine next command is used:

roslaunch openni2_launch openni2.launch

Then, the interface with device starts and publishes topics as shown in Figure 1 below: This launch file provides RGB image, depth, camera parameters and so on; graphic above is displayed when rqt_graph command is executed. To view the color image from RGB camera is necessary to run following command:

rosrun image_view image_view
image:=/camera/rgb/image_rect_color
Figure 2 shows RGB visualizer launched with command above:

The overall objective is to locate a human in front of the robot for tracking as a reference position and distance to maintain, this becomes a problem of skeleton tracking on direct line of sight; get coordinate human and sent to nodes Control described below. To reach this purpose [13] is used.

NiTE2 is a middleware libraries for robust 3D computer vision, brings algorithms to hand and body tracking together with OpenNI. Carmine Sensor is placed on the PIONEER 3DX robot (See figure 3). For the present follower human application exists a restriction due to device field of view: 57.5, 45, 69 horizontal, vertical and diagonal degrees respectively. Operating rate is between 0.8 and 3.5 meters, [14].

The user tracker application is available for ROS [15], as a package which returns full body user´s joints transformations (See Figure 4) called openni2_tracker node.

This source code is taken as reference to create a node to publish only torso´s coordinate through /torso_carmine/coordinates topic with message type geometry_msgs::Twist which describes human leader position (X,Y,Z) relative to Pioneer 3DX (See figure 5).

To run tracker, next command is used:

roslaunch torso_carmine tracker.launch

Torso_carmine starts with user identification (See Figure 6):

At this point, results necessary a calibration step to adjust the skeleton model to user according Skeleton Tracking chapter [16]. Figure 7, below, shows calibration pose and terminal message:


5. ROBOT´S POSE ESTIMATION

The Pioneer 3-DX robot works as a server in a client- server topology, this means, that the robot’s microcontroller handles the low-level details of mobile robotics, as maintaining speed drive platform and direction, acquiring sensor readings, such as sonar or encoders. To complete the client-server architecture, the Pioneer 3-DX requires a connection to a PC, for this reason a HOST serial link is included in the system. The law controls are implemented in the computer and include obstacle avoidance, path planning, recognition features, location and navigation.

The client can be either an onboard piggy-back laptop, embedded PC or an off-board PC connected through radio modems or wireless serial Ethernet. In all cases, that client PC must connect to the internal HOST or User Control Panel SERIAL port in order to robot and software get to work. For the piggyback laptop or embedded PC (See Figure 9), the serial connection is via a common “pass-through” serial cable.

Rosaria provides a solution to the client-server connection; it has a port parameter which specifies the serial port to use. Also, it may contain a hostname and TCP port to connect remotely via TCP to connect using a Serial-Wifi bridge. The port parameter must be given in the command line when running the Rosaria rosrun node. The value is saved in the parameters of ROS and reused when Rosaria run.

To specify the port /dev/ttyUSB0 or COM1, as default for robot onboard computers the next line command is used:

rosrun rosaria RosAria _port:=/dev/ttyUSB0

To specify TCP connection to device with IP address 10.0.126.32 on port 8101 the next line command is used:

rosrun rosaria RosAria _port:=10.0.126.32:8101

RosAria provides several topics for publishing information received from the robot and devices by ARIA, and for receiving commands. The most important topics are Pose, Sonar, battery_voltage, and motors_state. They give all the necessary information to control and use the robot (See Figure 10). Also, RosAria just receives one important message, cmd_vel for desired velocities. The robot will achieve and maintain these set points.

Finally, each topic has important information of the robot, for example, in this case RosAria publishes the current pose estimation received from the robot in /RosAria/pose. Also, each topic is published in a specific type of message, for example Pose has its data as a nav_msgs/Odometry message. This means that, the pose estimation is calculated by the robot firmware as ARIA based on wheel odometry, and if preset, the optional internal gyroscope.

The easiest way to read the Pose information is using rostopic command:

Rostopic echo /RosAria/pose

After that command, RosAria going to return information as the position, orientation, and velocities (angular and linear) of the robot (see Figure 11).


6. ANGULAR AND LINEAR SPEED CONTROLS.

In this application, a differential robot is used and it is considered like a solid mechanism, rigid and without flexible parts. The non-holonomic restrictions are important because the robot cannot move to the sides without an external perturbation force. On this kind of applications, the exact global position and robot orientation are the important variables to control; also to have a specific movement of the robot must to have a direct mathematic relation between the robot’s inputs and the space-state variables (X, Y, ϕ). The control system must ensure that the robot moves with a specific linear velocity and rotates at determined angular velocity.

Rosaria brings an internal controller for the Pioneer robot. It controls the linear and angular velocity. The desired velocity of the robot is set via the /RosAria/cmd_vel topic. This desired velocity state is set in ARIA, which sends commands every robot cycle to effect this state in the robot's embedded motion controller, which performs motor control to achieve then maintain the robot velocity automatically using previously configured acceleration parameters.

To achieve the principal objective of this paper is important to control the exact position and orientation of the robot in reference to the leader user. Also, is important to make the robot see all the time the user, and it must to be to a determinate distance from him. As conclusion of this idea, the problem is divided into two different controllers, the first one is an orientation controller and the second one would be a position controller. This is a stabilization problem that can be solved by output feedback. Each controller was developed by using Routh-Hurwitz criterion, which guarantees the stability of the close loop system.

The controller node receives a position topic from the carmine node, it topic gives the information about the exact user position (X, Y, Z) (See Figure 12). The orientation PID controller uses the X signal to guide the robot in front the user, with "0" reference (the user is in front of the robot) (See Figure 13), the position of the user in the X axis feedback loop and the angular velocity control signal. On the other hand, the position PID controller uses the Z signal to maintain the robot a specific distance. In this case, the desired distance is the system reference, the linear velocity is the control signal and the Z signal is the feedback loop.

Finally, the control node, it prints on screen actual robot position (X, Y) and orientation. The controller has an error equal to zero and proves that it works correctly for the application. (See Figure 14)


7. OBSTACLES SECURITY MODULE

In this paper, obstacles avoid module is developed looking to achieve that the robot could moves inside somewhere without collide something or somebody. Since, the objective of this application is introduce robotics inside space where the robots would interact with humans, is important to protect the human health, as well as objects that are in the environment where the robot is moving.

To develop the avoid obstacles control, the pioneer 3-

DX has a sonar array with eight transducers that provide object detection and range information for collision avoidance, features recognition, localization, and navigation. The sonar positions in all Pioneer 3 sonar arrays are fixed one on each side and six facing outward at 20-degree intervals. Together, sonar arrays provide 180 degrees of nearly seamless sensing for the platform.

To read the sonar array signal, the RosAria node has a singular topic that sends each 10 ms this information. /RosAria/sonar message publishes sonar readings, is important to say, that the sonar arrays is turned on while there are subscribers on the topic. The RosAria node provides a two dimensional point cloud, and its coordinate frame matches the robot position. Each sonar gives the X and Y position on the plane of the object in front it.

The logic implemented is easy, the security node receives the velocities that the robot has; according of those velocities it calculates the minimum distance that the robot must have in order to move. If the actual distance is smaller than the minimum distance necessary, the security node control changes the lineal velocity to zero. After that, it calculates which side has more space (left or right) and it change the angular velocity making that the robot turn to that side. When the actual distance is bigger than the minimum distance, the security control returns the same velocity that the follower control sends.


8. RESULTS

The results obtained from tests over the platform with the Carmine and the piggy-back laptop, the Pioneer 3-DX robot is able to follow a person (See Figure 15. The tests were performed inside an indoor environment, to prove the obstacles avoidance control system.

The system performance results acceptable. The robot followed a user with a desired gap. If the user gets closer to the Pionner 3-DX, it goes back, maintaining the gap. This gap is the control system reference, measured in meters (m). These tests prove the control system performance. Also, the robot was able to avoid obstacles, allowing the robot to go behind a person without crashing with objects or walls.

After that test, person are introduced in the indoor environment. The reason for perform the test with people around the robot was to prove the Carmine tracking algorithm. This algorithm does not track just one person. For example, if somebody, crosses in front of the initial user, inside the Carmine’s line of view, that person is tracked. Then, in many cases, the robot suddenly change the user and follow the latter one, or it lost and did not follow anybody, since the Carmine detected nobody.


9. CONCLUSIONS

ROS is a system based on algorithms that allowing controlling different kind of robots. Those algorithms, called nodes, give essential information about them, such as velocity, position, sensors, battery, and so on. Besides, the fast and easy communication between nodes minimizes the processing time, giving real-time capabilities to the system. The information about the robot’s sensors is reliable and accurate, then, the platform’s controller has an appropriate performance.

Also, Carmine’s tracker algorithms and its ROS packages ease to get the skeleton distance data (x, y, z). Therefore, like the previous paragraph, saves costs and time for the Project development. This kind of projects could be implemented in environments where the interaction between humans and robots will be huge, for example, in a mall, where the customer needs information about stores’ location. The robot could guide the customer until it achieves the goal (the desired store). The robot will sense the customer position to not get away from him. This kind of situations could be consider as Artificial Intelligence, because the robot should has enough capabilities and performance to process all the sensors’ signals, execute all the control algorithms with minimum error and a considerable speed. In addition, the robot should choose the best way to get to the desired location (faster way, shortest way), by itself.


10. ACKNOWLEDGEMENTS

This work is supported by the project ING-1537 namely “Estudio de técnicas de control cooperativo descentralizado en formación de robots móviles no holonómicos –Fase II”, funded by the research vice rectory of the Nueva Granada Military University in Bogotá, Colombia


11. BIBLIOGRAPHY

[1] M. Uchiyama, “Multirobots and cooperative systems,” in Control Problems in Robotics and Automation, by B. Siciliano and K. P. Valavanis, Eds.London, U.K.: Springer-Verlag, 1998.

[2] Tinós, R.; Terra, M.H. ; Ishihara, J.Y. “Motion And Force Control Of Cooperative Robotic Manipulators With Passive Joints”. IEEE Transactions on Control Systems Technology, (Volume:14 , Issue: 4 ). July 2006.

[3] KWOW, et al. “PSOBased Cooperative Control of Multiple Mobile Robots in Parameter-Tuned Formations”. Proceed. 3rd Ann. IEEE Conf. on Automation Sc. and Eng. Scottsdale, US, pp. 332 – 337, 2007.

[4] Y.Q. CHEN y Z. Wang,“FormationControl: A Review And A New Consideration”. In IEEE/RSJ International Conference on Intelligent Robots and Systems, 3181-3186 pp. 2005.

[5] Diaz del Rio, F. ; Jiménez, G. ; Sevillano, J.L.; Vicente, S. ; Civit Balcells, A. “A Generalization Of Path Following For Mobile Robots”. IEEE International Conference on Robotics and Automation, 1999. Proceedings. 1999 (Volume:1). 1999.

[6] F. Bravo, et al, “Switching control and modeling of mobile robots formation”. Fac. of Eng., Dept. of Electronics, PUJ,. Bogotá, Colombia.

[7] J.M. O´aKane, A Gentle Introduction to ROS. Columbia: Department of Computer Science and Engineering, 2014

[8] MobileRobots. (2014, oct 12). Mobile Robots. [Online] Available: http://www .mobilerobots.com/Software/ARIA.aspx

[9] ROS. (2014, 12 11). ROS. [Online] Available: http://wiki.ros.org/ROSARIA [10] ROS. (2014, 12 16). ROS - openni_camera. Available: https://goo.gl/q0SDjh

[11] J. Borenstain et al, Human Leader and Robot Follower Team: Correcting Leader´s Position from Follower´s Heading. Orlando, 2010.

[12] PrimeSense, Willow Garage, ASUS, & Open Perception. (2014, 12 16). OpenNI. [Online]. Available: http://openni.ru/index .html

[13] PrimeSense. (2014, 12 16). OpenNI - NITE 2. [Online]. Available: http://www.openni .ru/files/nite/index.html

[14] PrimeSense. (2014, 12 16). i3du. [Online]. Available: https://goo.gl/uNwI6b

[15] Guerin, K. (2014, 12 16). github. [Online]. Available:https://github.com/futureneer/openn i2-tracker/blob/master/src/tracker.cpp

[16] PrimeSense. (2010). Prime Sensor NITE 1.3 Algorithms notes.