A sensory system designed for Simultaneous Localization and Mapping (SLAM) on robots. The operating system used in this research project, Robot Operating System (ROS), is also an open source project initially released in 2007. Our system has reduced response time and lower cost than traditional laser sensors. It consists of 8 HY-SRF05 rangers that can work sequentially on an embedded system such as a Raspberry Pi. The communication between the embedded system and the robot is achieved with a Python package that communicates via local TCP/IP. Our multi-sensor structure can be applied to a multi-agent system, composed of 3 identical robots. Our results from preliminary experiments show the possibility of conducting SLAM using our designed system. By implementing this improved design on a multi-agent system, the SLAM process can be conducted more efficiently and accurately than a single robot with a laser sensor.
SLAM is considered as a fundamental prerequisite of fully autonomous robots. Building a map and localizing a robot in an unknown environment is the main purpose of SLAM. A robot needs to make a series of decisions on path planning based on its perception to surrounding objects. An autonomous exploration of a robot is usually the beginning of the study of SLAM. A robot collects necessary information including distance and orientation via a series of sensors and records speed and angle to estimate the pose and position of itself while constructing the map. There are several options for the proximity sensors, which are essential to the research of SLAM. A typical choice is laser sensors, which are accurate, fast, but generally costly. Though laser radars usually have high speed of data acquisition, they also have certain limitations such as sensitivity to strong light and noticeable errors at highly reflective surfaces like glass. Instead of using laser sensors, our research team developed a robust and low-cost Multi-Ultrasonic-Sensor System for Echolocation (MUSSE). The idea of echolocation comes from the inspiration of bats, who use sound waves to navigate. Multiple sensors can reduce the time of data collection notably. To further improve the efficiency of SLAM, MUSSE was implemented on a multi-agent robot system based on ROS.
This study is the continuation of a previous research we conducted focusing on ultrasonic echolocation using one transducer. SLAM has been a question since the moment when people try to localize and map simultaneously. Most similar studies using SLAM rely on laser range finders for accuracy and speed, however we have built an alternative low-cost solution using multiple ultrasonic sensors. Unlike pure echolocation, SLAM is essentially about mapping and localizing in an unknown environment. Therefore, measuring the distance to surroundings and recording the path are two fundamental prerequisites for SLAM. A typical method of recording path is odometry, which uses the data from motion sensors or rotation sensors to estimate a robot’s trajectory of spatial displacement. For a robot to localize and map on its own, it has to be able to build a reference system of coordinates and landmarks. The problem of modeling the environment and sensing the location of a moving robot simultaneously has attracted interest of researchers in the realm of robotics.
We designed a multi-sensor system based on eight HY-SRF05 transducers and an embedded system (Raspberry Pi) which is capable of signal processing, data storage and transmission, and wireless communication on a local network.
An ultrasonic signal typically lies in the range of 20-100 kHz. There is little noise or interference in this range. A higher frequency than 20kHz increases the resolution of ranging by decreasing the wavelength of signals. Thus, more features can be recorded as signal data. The sound frequency of HY-SRF05 sensors is 40kHz, which is adequate for our experiments. HY-SRF05 sensors have a valid distance range of 2cm to 450 cm and are set to be triggered every 50mS at least to avoid a false echo on the next range measurement. The distance is calculated based on the time interval and the speed of sound (340.1m/s in dry air at 22°C ).
Fig. 1 shows the design of MUSSE. Eight sensors can scan the plane and return the localization information in milliseconds. The low-power Raspberry Pi makes it possible to power the system using a portable 5V battery or from the power ports of Kobuki robots.
Figure 1. MUSSE model
A challenge of this multi-sensor structure is that each sensor must avoid operating concurrently with other sensors due to acoustic interference and lag in the embedded system and the signal transmission process. They must operate sequentially, and the response time needs to be reduced as much as possible to minimize errors in the localization process. Furthermore, ultrasonic signals can be distorted on sound absorbing materials or sloping surfaces, which are common in daily environments. Thus, we need to figure out how to filter out these kind of unwanted measurements.
A well-designed algorithm needs to be simple enough considering the real-time execution and the limited computing power of a low-cost system. Acquiring more distance measurements in any one location will increase the resolution of mapping. Thus, the robot is set to rotate by a small amount after finishing the first measurement, with the location being unchanged. Although more rotations will increase the resolution, one rotation should be enough for the MUSSE system because it has eight transducers, which are sufficient for the measurements. Two measurements are conducted, one before and one after rotating 22.5°. All distance measurements are stored in a matrix, Dm, in which X stands for the number of rotations. For each measurement, MUSSE records 8 readings. The matrix Dm is then analyzed and processed using an algorithm designed by our research team.
The data transmission module is realized via a local TCP/IP network. ROS supports a TCP/IP-based message transport, known as TCPROS. A Python script was written and integrated to the MUSSE package to send distance data to the computer on the robot in real time. All computers in this research, including the Raspberry Pi boards, have Avahi implemented to allow mutual communications and controls on a local network. Avahi is an open-source decentralized zero-configuration networking implementation that enables multi-cast DNS resolution, address allocation and service publication locally. To access SSH, using Avahi is much more convenient than looking up the host names individually, especially when the number of computers is relatively large.
The results of mapping using a Kinect sensor and using MUSSE show the sketch from our preliminary experiments where multiple points were selected with known coordinates. The distance data was then analyzed and visualized as the sketched map. The map based on the Kinect sensor was obtained by using the “turtlebot_navigation” package integrated in ROS. It has better resolution to corners and curves, and more details in a complex environment, while the map based on MUSSE has a more accurate big picture of the entire environment. Occasionally there is some unexpected fluctuation of measurements because of the limitations of ultrasonic sensors: the ultrasonic waves diverge within a given beam angle in which the detected object reflects the wave. Small delays of signal also occur. In addition, specular reflection and diffuse reflection happens in a real environment that affects the accuracy of an ultrasonic sensor’s reading.
Python is essential to this project. It is a simple but powerful programming language that is used in ROS, and in our developed software packages and APIs. Several ROS packages, such as gmapping and sensor_msgs, were used for experiments, simulations and comparison of results.
ROS (ros.org) is an open-source software framework developed and maintained by the Open Source Robotics Foundation. As one of the most popular project for robotics, ROS can run on various Unix-based operating systems including Linux distributions and Mac OS X. It contains a number of libraries, packages, and algorithms. ROS has not only a stable package management system but also an advanced message passing service framework which enhances the interoperability of its packages.
Packages in ROS are similar to software in an operating system. They contain libraries, nodes, APIs, configuration files, parameters and other necessary components to realize some functions. The communication architecture is based on topics and nodes. Topics, which are “named buses” for unidirectional communication, contain nodes inside. Nodes do not communicate with each other directly; instead, they publish messages and data to topics to which other nodes subscribe. All scripts in the MUSSE package are written in Python, because ROS has native low-level support for Python. Nodes and topics can be used in a Python script using rospy, a Python client library and API. Thus, data can be transferred among different modules and packages.
Figure 2. Overview of the MUSSE package ROS graph
We have presented a possible solution for robust SLAM on multiple robots using low-cost ultrasonic sensors and computing equipment. This work demonstrates that ultrasonic sensors can be used as an alternative to laser rangers and other proximity sensors. They are usually inexpensive and easy to implement, and can generate good results in relatively ideal environments. Due to the limitation of computing power and cost of the sensors, the accuracy of MUSSE can be further improved by trying different algorithms and calibrating the transducers through a number of measurements. Overall, the main goals are achieved with possibility of future improvements.