[go: up one dir, main page]

Academia.eduAcademia.edu
IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, VOL. 18, NO. 4, AUGUST 2002 operations on a resource as previously described, has good stability and performance properties [11]. 4) When the current time approaches the Start Time of an operation, the operation is released and its Start Time is fixed. When the execution of an operation is completed, it is removed from the resource’s list. V. CONCLUSIONS Object-Oriented Frameworks and Design Patterns have offered the elements to transfer the idea of architecture from classical civil/industrial engineering to emerging information engineering. It is interesting to analyze how the emergence of the Internet has led to innovations in the style of designing automation architectures. In the era of Computer Integrated Manufacturing (CIM), an automation system was conceived as a strong and rigid hierarchy of control layers: facility, shop, cell, workstation, and equipment. According to the USA-NBS CIM reference model [8], each layer is populated with a set of control modules (the device controller, the workcell controller, the cell controller, etc.) with precise responsibilities and, in particular, a higher layer control module coordinates the control modules below it. The flexibility of such systems is limited to the possibility of reconfiguring the production process offline by reprogramming each control module. A local area network or a field bus represents the communication medium between the factories’ subsystems. The interfactory communication is handled via telephone, fax, or email. In the era of Internet, global automation systems are conceived as flat interconnections of autonomous and decentralized decision making/control modules dominated by the concepts of “heterarchy” and “proactivity.” The first means that no hierarchy in decision making is enforced, the second that each partner takes initiative in reaching a decision (e.g., planning production) and the global behavior of the system is an “emerging behavior.” Control modules have decision-making capabilities and coordinate their activities by exchanging data and events according to a peer architectural model and common protocols. REFERENCES [1] A. Aarsten, D. Brugali, and G. Menga, “Designing concurrent and distributed control systems,” Commun. ACM, vol. 39, no. 10, pp. 50–58, 1996. [2] C. Alexander, A Pattern Language: Towns Building, Constructions. London, U.K.: Oxford Univ. Press, 1977. [3] D. Brugali, G. Menga, and A. Aarsten, “The framework life span,” Commun. ACM, vol. 40, no. 10, pp. 65–68, 1997. [4] D. E. Estrin et al., “Embedding internet,” Commun. ACM, vol. 43, no. 5, 2000. [5] E. Gamma, R. Helm, R. Johnson, and J. Villisides, Design Patterns: Elements of Reusable Object Oriented Software. Reading, MA: Addison-Wesley, 1994. [6] W. Hasselbring, “Information system integration,” Commun. ACM, vol. 43, no. 6, pp. 32–36, June 2000. [7] D. B. Lange and M. Oshima, Programming and Deploying Mobile Agents with Java and Aglets. Reading, MA: Addison-Wesley, 1998. [8] C. McLean et al., “A computer architecture for small-batch manufacturing,” IEEE Spectrum, vol. 20, no. 5, pp. 59–64, 1983. [9] A. Mowshowitz, “Virtual organization,” Commun. ACM, vol. 40, no. 9, pp. 30–37, 1997. [10] M. Pinedo, Scheduling: Theory, Algorithms and Systems. Englewood Cliffs, NJ: Prentice-Hall, 1995. [11] V. V. Prabhu and N. A. Duffie, “Nonlinear dynamics in distributed arrival time control of heterarchical manufacturing systems,” IEEE Trans. Contr. Syst. Technol., vol. 7, pp. 45–50, June 1999. [12] D. Tennenhouse, “Proactive computing,” Commun. ACM, vol. 43, no. 5, pp. 43–50, May 2000. 493 Miro—Middleware for Mobile Robot Applications Hans Utz, Stefan Sablatnög, Stefan Enderle, and Gerhard Kraetzschmar Abstract—Developing software for mobile robot applications is a tedious and error-prone task. Modern mobile robot systems are distributed systems, and their designs exhibit large heterogeneity in terms of hardware, operating systems, communications protocols, and programming languages. Vendor-provided programming environments have not kept pace with recent developments in software technology. Also, standardized modules for certain robot functionalities are beginning to emerge. Furthermore, the seamless integration of mobile robot applications into enterprise information processing systems is mostly an open problem. We suggest the construction and use of object-oriented robot middleware to make the development of mobile robot applications easier and faster, and to foster portability and maintainability of robot software. With Miro, we present such a middleware, which meets the aforementioned requirements and has been ported to three different mobile platforms with little effort. Miro also provides generic abstract services like localization or behavior engines, which can be applied on different robot platforms with virtually no modifications. Index Terms—CORBA, distributed systems, middleware, mobile robots, multirobot applications, object orientation, robot control architectures. I. INTRODUCTION Developing software for mobile robot applications is a tedious and error-prone task. Modern mobile robots are usually composed of heterogeneous hardware components, which are connected using different networking technologies and communication protocols with widely differing bandwidths. A large number of different methods for processing sensor information and controlling actuators, for performing computational vision and cognitive tasks like planning, navigation, and user interaction, must be integrated into a well-engineered piece of software. All these issues contribute to the enormous complexity of the mobile robot software development task. Vendor-provided programming environments have not kept pace with recent developments in software technology. Mobile robot software are often custom made, closed systems, which makes it difficult to integrate them in enterprise information processing frameworks. Furthermore, standardized modules for certain robot functionalities are beginning to emerge. We suggest the construction and use of object-oriented robot middleware to make the development of mobile robot applications easier and faster and to foster portability and maintainability of robot software. High-quality robot software and an improved software development process will be key factors in enhancing both the research state of the art as well as the likelihood of deploying working applications in industrial and consumer markets. With Miro, we present such a middleware, which meets the aforementioned requirements and has been been ported to three different mobile platforms with little effort. Miro also provides generic abstract Manuscript received December 11, 2001. This paper was recommended for publication by Associate Editor G. Menga and Editor N. Viswanadham upon evaluation of the reviewers’ comments. This paper was presented at Telematics Applications and Automation in Robotics (IFAC), Weingarten, Germany, 2001, and at the RoboCup Symposium, Seattle, WA, 2001. H. Utz and G. Kraetzschmar are with the University of Ulm, Neuroinformatics, 89069 Ulm, Germany (e-mail: hutz@neuro.informatik.uni-ulm.de; gkk@neuro.informatik.uni-ulm.de). S. Sablatnög is with Temic Sprachverarbeitung GmbH, 89077 Ulm, Germany (e-mail: ssablatn@neuro.informatik.uni-ulm.de). S. Enderle is with Advanced InfoData Systems GmbH, 89077 Ulm, Germany (e-mail: steve@neuro.informatik.uni-ulm.de). Digital Object Identifier 10.1109/TRA.2002.802930 1042-296X/02$17.00 © 2002 IEEE 494 IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, VOL. 18, NO. 4, AUGUST 2002 services like engines for mapping, localization, and behavior generation, which can be applied on different robot platforms with virtually no modifications. II. DESIGN GOALS FOR ROBOTICS MIDDLEWARE In mainstream software development projects, middleware systems are mainly applied in order to reduce development time and cost. This is achieved by providing well-structured frameworks for often-needed data structures, precoded and well-tested code for particular functionalities, and standardized communication protocols and synchronization mechanisms. Using these facilities leads to improved software structures, less error-prone implementations, and better overall software quality. By writing code based on middleware, it is easier for programmers to meet given standards and more likely for the code to be reused later on. Furthermore, middleware that is available on a wide range of hardware platforms and operating systems makes it easier to scale up systems, to port them to another platform, and to maintain large applications. If we would like to exploit all these advantages in mobile robotics (and, maybe, factory automation), what design goals and requirements does that imply for robotics middleware? Object-Oriented Design: The middleware should be designed using the object-oriented paradigm thoroughly. Object-oriented concepts like information hiding, name spaces to prevent naming ambiguities when using multiple mutually independent libraries, exception handling to separate normal program control flow from error recovery, abstraction, type polymorphism, and inheritance can all significantly contribute to improve design and implementation of mobile robot software when applied deliberately and consistently. Open Architecture Approach: Considering the immense spectrum of different hardware and software components used in mobile robot systems, adopting an open architecture approach, including availability of all source code, seems indispensable. Only if applications programmers can access, modify, and fine tune all components of the software environment, the integration of a heterogeneous set of hardware and software components can be successful. Also, integration of new hardware developments as well as new computational methods developed by ongoing research is usually much easier and faster, if all source code is available for inspection, reuse, and debugging purposes. Hardware and Operating System Abstraction: The object-oriented paradigm permits a clean abstraction of sensor and actuator subsystems, as well as low-level system services like communications, and provides a uniform interface design. A suitable level of abstraction from low-level system details, both in terms of hardware as well as software, may be a key element in attaining a better understanding of how to integrate a significant number of different hardware devices and computational methods. Multiplatform Support and Interoperability: The middleware should be available on a wide range of hardware platforms and common operating systems. The use of different programming languages for implementing different modules should be supported without requiring much extra overhead cost for integration. Communication Support and Interoperability: The middleware should provide a carefully designed set of interfaces for communication between objects and communications transparency, i.e., the programmer should not need to worry much about where objects are actually allocated and which communications protocol s/he needs to apply. Single robot and multirobot applications should be equally well supported, and integration into enterprise software frameworks should be smooth. Client/Server Systems Design: We suggest adopting a client/server view, at least for larger modules of a robot control architecture. The modules, implemented as objects, provide services to other modules (objects) through a set of interfaces. Most modules of an application fill both the client and the server role, albeit to different subsystems, using the services of sensor objects as clients and providing services to actuator objects as servers. Fig. 1. Miro architecture. The ACE and Miro device layers provide abstract interfaces for specific platforms. The TAO CORBA and Miro service layers achieve platform-independence, network, and location transparency. The Miro class framework provides classes for generic robot control functionality. Flexible Integration of User Interfaces: A commonly underestimated problem in mobile robot research is the development and use of suitable user interfaces for various tasks. The task-oriented user interface for end users interacting with the robot requires careful design in order to avoid compromising the robot’s autonomy and integrity. People operating and supervising the robots need interfaces for monitoring its operational state, while programmers may need even further internal state information for debugging purposes. These user interfaces might be activated only occasionally or under special circumstances. Nevertheless, their effect on the runtime performance should be limited, and the middleware should support the programmer in meeting this goal. Software Design Patterns: The middleware should encourage the use of design patterns by providing a class framework for common, well-understood functionalities. Examples from the robotics domain are patterns for mapping, self-localization, behavior generation, and path planning. III. MIRO—MIDDLEWARE FOR MOBILE ROBOTS The desire for robotics middleware in our group grew after developing software for five different mobile robot platforms, with different operating systems, different programming languages, different development environments, and with a number of collaborators, for several years. We realized that for ensuring further progress in mobile robot research, it was time to blend the different existing software architectures into a generalized framework of middleware for autonomous mobile robots. With the Miro software framework, we consequently tried to address the design challenges discussed above, and to lay the foundation for implementing robust and reliable robot control architectures. Miro is designed and implemented by rigorously applying objectoriented design and implementation techniques. By adhering to the common object request broker architecture (CORBA) standard, interprocess and cross-platform interoperability for distributed robot control architectures are achieved. All core Miro functionality, like routines for processing sensor data and control actuators, is entirely implemented in C++ and allows for high runtime efficiency. Miro builds itself upon widely used, industrial-strength middleware packages, which are open source and available on a wide range of hardware and operating system platforms. A. Miro Architecture Miro is structured into three architectural layers, which are interwoven with two major layers of the CORBA middleware underlying the Miro design (see Fig. 1). IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, VOL. 18, NO. 4, AUGUST 2002 Fig. 2. Motion-interface inheritance for different mobile bases. 1) The Miro Device Layer provides object-oriented interface abstractions for all sensory and actuatory facilities of a robot. This is the platform-dependent part of Miro. 2) The Miro Service Layer provides active service abstractions for sensors and actuators via CORBA interface definition language (IDL) descriptions and implements these services as networktransparent objects in a platform-independent manner. The programmer uses standard CORBA object protocols to interface to any device, either on a local or a remote robot. Also, event-based communication services based on the CORBA notification services are available. 3) The Miro Class Framework provides a number of often-used functional modules for mobile robot control, like modules for mapping, self localization, behavior generation, path planning, logging, and visualization facilities. Miro Device Layer: It provides classes that wrap the message or package-based communications links to the low-level controller boards (serial link, can bus, etc.) into ordinary method calls, for invocation by the service implementations. Miro Service Layer: Sensors and actuators can be naturally modeled as objects, which can be controlled and queried by their respective methods. Thereby, mobile robot software can be viewed as aggregations of sensory, actuatory, and cognitive objects, which can trade information and services in an agent-like manner. In the Miro Service Layer, object-oriented interfaces for all hardware components are provided. Wrapper classes for all sensors and actuators hide away all the peculiarities of sensor/actuator-specific interface functions. The class hierarchy in this layer specifies useful abstractions and generalizations for certain subsets of sensors and actuators. An example is a RangeSensor class, defining interface functionality common to sensors like infrareds (IR), sonars, and laser range finders (LRF). Similar abstractions are available for the behavioral aspect. Classes like SynchroMotion or DifferentialMotion define generalized interfaces for the respective kind of kinematics and inherit this functionality to their specializations, e.g., SparrowMotion , PioneerMotion , or B21Motion , as illustrated in Fig. 2. To overcome location and programming language dependencies, all sensor and actuator services export their interfaces as network transparent CORBA objects, which can be addressed from any language and platform for which language bindings and CORBA implementations exist. This enables seamless integration of high-level robot control subsystems, like Lisp-based planners or Java-based user interfaces. While a traditional-method call is the most convenient way of object interaction, the classical synchronous query interface does not scale well in large mobile robot applications. This is especially true for sensory devices. Sensors usually produce measurements either on demand (bumper) or at some fixed or maximum rate (LRF, IR). In order to avoid missing a sensor reading, the consumer is required to either contin- 495 uously poll the sensor or to wait for the next reading. For example, in a well-behaved mobile robot, a bump sensor should hardly ever be pressed. Nevertheless, for safety reasons, no bump situation should be missed. What we are interested in is not the actual sensor reading, but a particular event, like the bumper being pressed. Therefore, the Miro Service Layer provides an abstraction of sensors and actuators as active services with event-based communication. Basic support for multirobot control comes naturally with a distributed robot software development environment as provided by the Miro Services Layer. Small groups of robots can address each other by exchanging the object references if their respective sensor/actuator configurations are known. This approach is facilitated by the availability of naming service functionality, providing a separate namespace for each robot. Also sharing of sensor data can be achieved, via filtered event-processing frameworks based upon the notification service. We are currently evaluating such a framework in our Sparrows robot team. For larger multirobot systems, additional middleware support for robot interaction has to be provided, for example, in order to enable spontaneous cooperation between robots that initially do not know of each other. Frameworks for the flexible description of system properties of an individual robot are not yet part of Miro, but will be subject to further research. Miro Class Framework. An essential step toward easier and faster development of mobile robot software is reuse of code for commonly used tasks. As mobile robots research has seen a constant flow of new methods and research results in the past, this has seemed to make little sense so far. However, a number of recently developed methods and techniques seem to emerge as de facto standard solutions, e.g., grid-based probabilistic egocentric and allocentric mapping, self localization based on segment matching [1] or particle filters (a.k.a. Monte Carlo localization, [2]), behavior-based robot control [3], [4], or various path planning methods. The Miro Class Framework provides classes that implement commonly used techniques for mobile robot control, such that they can be applied uniformly on the different platforms supported. Available functionality includes a behavior engine, which permits dynamic activation, enabling and disabling of sets of behaviors and arbitrators, and sample-based pose estimation based on particle filters. Providing generic mapping and path-planning functionality is a work in progress. Aside from functionality used for applications, the Miro Class Framework includes functionality useful for development and experimental evaluation. A good example is Miro’s generic logging facility for experimental data acquisition. It exploits the event-triggered communications model, much like a specialized CORBA Telecom Log Service [5]. Its main focus is on efficiency and the ability to replay logged data streams. It logs the notification messages using the methods provided by CORBA for the marshalling of data for remote method calls. That way, every data package that can be passed via the event channel can be logged for later use. A log player reads the logged data from a file and sends it back through the event channel in a timely manner. The receiver cannot distinguish between logged data and data generated in real time by sensors and actuators. The visualization tool for the RoboCup soccer team exploits this Miro feature, and can visualize both live data streams during games as well as game logs during postgame analysis without any modifications. The only difference is that the logplayer permits slow motion. Likewise, it is easily possible to perform offline testing, evaluation, or learning by intercepting and logging an arbitrary online event stream and feeding the logged data back to the module under evaluation or learning offline. B. Implementation of Miro Miro makes extensive use of multiplatform libraries for easy portability. The adaptive communications environment (ACE) provides object-oriented abstraction layers for many operating systems and communications primitives. The ACE Orb (TAO) package is an implemen- 496 Fig. 3. IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, VOL. 18, NO. 4, AUGUST 2002 B21 and Sparrow-99 robots. tation of the CORBA based on ACE [6]. The Miro implementation exploits the CORBA Notification Service [7] for providing the eventbased communication functionality. For the construction of graphical user interfaces (GUIs), like monitoring and visualization tools, we use Qt, a GUI application framework, which is available for various Unix derivates including Linux, as well as Windows. Presently, Miro is implemented for three mobile robot platforms, which are equipped with different sensors, actuators, and computational equipment. They are used in different scenarios, ranging from an office delivery to highly dynamic soccer games [8]. These platforms are as follows. 1) A B21 robot (see Fig. 3, left picture), which is equipped with bumpers, IRs, sonars, a laser range finder, and a vision system. It features a synchro drive mobile base and is controlled by two onboard PCs. 2) Pioneer-1 robots, which are differential-drive robots equipped with sonar sensors only, and are controlled either via a laptop mounted on top of a robot or by a host PC via a serial radio link. 3) Sparrow-99 robots [9], which are custom-built robots developed in our lab at the University of Ulm (see Fig. 3, right picture). Sensors include sonars, IRs, and a camera. The mobile base is a differential drive system. The robot also has a pan-tilt unit and, for its special purpose, a kicker. It is controlled via an onboard embedded PC. The Miro implementation includes a number of clients, which are provided for testing and evaluating the Miro service functionalities. For each service, the following clients are provided. 1) Sample client. This client is held as simple as possible in order to show the user how the respective service functionality is used. 2) Test client. This client is used for debugging. It calls each service method provided and checks the results. 3) Monitoring client. This client implements a visual interface to one or more services. It is useful during normal robot execution for monitoring data. IV. EXPERIENCES AND EVALUATION OF MIRO Miro is successfully used in several projects striving for autonomous mobile robot control, where the robots are required to perform tasks like neurosymbolic mapping of indoor environments [10], hybrid multirepresentation world modeling [11], [12], autonomous self localization based on the Monte Carlo Localization method (two variants, one based on distance sensor data and one based on visual features [13]), hierarchical path planning [14], and reactive execution. Below, we summarize our experiences and discuss how well (or not) Miro achieves the design goals, how it compares to other mobile robot software frameworks, and provide some performance results. Achievement of Design Goals Some of the design goals formulated in Section II are obtained for free by using CORBA as communications middleware. Type safe and network-transparent interfaces come with the strongly typed IDL of CORBA. Programming language independence is ensured by the CORBA standard, and therefore a solved problem in the context of Miro development. We have validated this by developing a Java-based browser frontend for teleoperating our B21 robot over the Internet. The consistent and generalized service interfaces allow for multirobot platform development. This is demonstrated by the sample wander, avoid, and wallfollow behaviors included in the examples collection of the Miro source tree. The abstract RangeSensor interface permits for a generic avoid behavior, based on the selected sensor(s) for all three platforms. The programmer may want to tune the safety distance and maximum speed due to the different sensor characteristics. Operating system independence is currently not an active topic within Miro development, since all our robots and work stations run under Linux. However, as a proof of concept, we ported the client side to Solaris within one day. Related Work But how does Miro perform in comparison to other robot control architectures? Currently, there are mostly manufacturerprovided packages available. Saphira [15], [16] is the software development environment delivered with the Pioneer mobile robot family. Its core is a C library for accessing the controller board. By using the Saphira library, the programmer implicitly imports elements of a particular robot-control architecture, including mechanisms like state reflection (a kind of implicit communication between client programs and server), data structures like a local perceptual space (LPS) and a global perceptual space (GPS), a fuzzy control-based behavior specification language, and Colbert, a language for reactive control [16]. Saphira lacks location transparency, and when integrating hardware (vision systems, manipulators) from other manufacturers, the programmer must carefully synchronize the communication of client programs with add-on hardware with the basic Saphira control loop. Mobility is a distributed, object-oriented software development framework for the B21r/B14r family of robots by RWI, Jaffrey, NH [17]. It scales well with respect to user interaction, client libraries for visualization, and remote access of sensory information. Client libraries are available in C++ as well as in Java. On the other hand, Mobility lacks conceptual support for robot control. As a manufacturer-provided package, it only is available for their mobile platforms. Since even our old B21 robot is not supported by Mobility, it could only be evaluated by investigating its documentation and header files. Miro provides network-transparent interfaces, and also offers a framework for behavior-based robot control. However, it does not enforce the usage of a singular arbitration paradigm, and therefore does not provide higher-level idioms for robot control but concentrates on the flexibility and configurability of the control infrastructure. In [18], Alami et al. document the task of integrating a demonstration from scratch on a newly obtained mobile platform within 40 days (not including porting their tools from Solaris to Linux). They utilize their Laboratory of Analysis and Architecture of Systems (LAAS) architecture [19] for an office-navigation scenario. Even though most of the tools’ functionalities are located on a higher control level as currently provided within Miro, this work documents nicely the potential of generalization and code reuse within the mobile-robotics domain. Experiments: A question often raised within the robotics domain is the overhead introduced by features such as location transparency and event triggered communication. High performance and real-time conformance are not really an issue for many commercially available mobile robot platforms, due to the limited capabilities of their hardware. The Pioneer-1 controller board, as well as the B21 (pre-rFlex) motor controller are both attached to a PC via a slow serial link (9600 resp. 38 400 Baud). Furthermore, they can report their status to the PC only in 100–ms intervals. The odometry resolution is in each case about 1 cm. Therefore, a basic response test, the time between issuing a motor command and the reflection of the robots movement within an odometry reading, is heavily dominated by the latencies of the low-level controller and can hardly reflect the performance of the actual software architectures. Nevertheless, with ever-growing hardware capabilities, IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, VOL. 18, NO. 4, AUGUST 2002 TABLE I RESULTS OF BASIC RESPONSE TEST data throughput and predictable response times will become an important issue also in the field of autonomous mobile robots. Of the robots in our lab, the Sparrow-99 controller board seemed most suited for performance measurements. It is attached to the PC via a 1 MHz CAN-Bus and, with currently used firmware, capable of reporting odometry updates at 100 Hz. The basic response test was designed as follows. A motion command was issued on a still standing robot and the time was measured till the first odometry reading was received, which indicated that the robot had moved. Afterward the robot was halted for about one second, before the next iteration of the test. We used three implementations of a basic response test. The first was calling the Miro device layer directly. The second was invoking the methods via the CORBA method interface, actively waiting for the next odometry measurement. The third one was setting the velocity via a CORBA method call and evaluating the odometry messages pushed to it via the event-triggered communications interface. The CORBA-enabled tests were run on the same machine as the MotionService as separate tasks. Table I shows two runs of each test with 100 iterations. The runs of the different implementations were interleaved to compensate for the decreasing battery voltage. Looking at the performance stats of the CORBA implementation used within Miro [20], one has to expect that even on this platform the basic response time is still heavily dominated by the 100–Hz update cycle of the odometry reports. Doing a random wait before issuing the motor command, this latency becomes randomized to half an update cycle and should therefore contribute 5 ms to the averaged latency. Nevertheless, the remaining jitter, mostly coming from the nondeterministic latencies of the motors themselves, is much too high to make the existing latency of the CORBA overhead measurable. Only an increase of the variance could be measured, but note that the variance itself is also heavily biased by the 10–ms cycle of the odometry events. V. CONCLUSIONS We propose the adoption of object-oriented middleware for robots to improve the software development process. We designed and implemented Miro, which meets many of the requirements identified during problem analysis. Miro builds upon standard and widely used middleware packages like ACE, TAO CORBA, and Qt, which significantly eases integration into enterprise information-processing frameworks. The Miro implementation is stable and robust and has been applied in several development projects. Our overall experiences so far are very encouraging, supporting our view that the development of object-oriented middleware for robots is a necessary and beneficial step to improve our software development practices. Miro is available as open source at http://smart.informatik.uni-ulm. de/Miro/. View publication stats 497 REFERENCES [1] J.-S. Gutmann and C. Schlegel, “Amos: Comparison of scan matching approaches for self-localization in indoor environments,” in Proc. 1st Eurornicro Workshop Advanced Mobile Robots, Kaiserslautern, Germany, 1996, pp. 61–67. [2] D. Fox, W. Burgard, F. Dellaert, and S. Thrun, “Monte Carlo localization: Efficient position estimation for mobile robots,” in Proc. Nat. Conf. Artificial Intelligence (AAAI), Orlando, FL, 1999, pp. 343–349. [3] R. A. Brooks, “A robust layered control system for a mobile robot,” IEEE J. Robot. Automat., vol. RA-2, pp. 14–23, Mar. 1986. [4] A. Saffiotti, K. Konolige, and E. H. Ruspini, “A multivalued logic approach to integrating planning and control,” Artif. Intell., pp. 481–526, Feb. 1995. [5] “Telecom Log Service Specification,” Object Management Group, Doc. formal/00–01–04, 2000. [6] D. C. Schmidt, A. Gokhale, T. Harrison, and G. Parulkar, “A high-performance endsystem architecture for realtime CORBA,” IEEE Commun. Mag., vol. 14, Feb. 1997. [7] T. H. Harrison, D. L. Levine, and D. C. Schmidt, “The design and performance of a real-time CORBA event service,” in Proc. OOPSLA’97, Atlanta, GA, Oct. 1997, pp. 184–200. [8] S. Enderle, H. Utz, S. Sablatnög, S. Simon, G. Kraetzschmar, and G. Palm, “Miro: Middleware for autonomous mobile robots,” in Proc. 1st IFAC Conf. Telematics Applications in Automation and Robotics (TA200I), Weingarten, Germany, July 2001. [9] S. Sablatnög, S. Enderle, M. Dettinger, T. Boß, M. Livani, M. Dietz, J. Giebel, U. Meis, H. Folkerts, A. Neubeck, P. Schaeffer, M. Rittar, H. Hraxmeier, D. Maschke, G. Kraetzschmar, J. Kaiser, and G. Palm, “The Ulm Sparrows 99,” in Proc. RoboCup-99: Robot Soccer World Cup 111, Lecture Notes in Computer Science, Berlin, Germany, 1999, pp. 211–216. [10] S. Enderle, “Probabilistic spatial representations for mapping and selflocalization in autonomous mobile robots,” Ph.D. dissertation, Comput. Sci. Dept., Univ. Ulm , Ulm, Germany, 2000. [11] G. K. Kraetzschmar, S. Sablatnög, S. Enderle, and G. Palm, “Application of neurosymbolic integration for environment modeling in mobile robots,” in Hybrid Neural Systems, S. Wermter and R. Sun, Eds. Berlin, Germany: Springer-Verlag, 2000, vol. 1778, Lecture Notes in Computer Science. [12] G. K. Kraetzschmar, S. Sablatnög, S. Enderle, H. Utz, S. Simon, and G. Palm, “Integration of multiple representations and navigation concepts on autonomous mobile robots,” in Proc. SOAVE 2000, Ilmenau, Germany, Oct. 2000, pp. 1–13. [13] S. Enderle, H. Folkerts, M. Ritter, S. Sablatnög, G. Kraetzschmar, and G. Palm, “Vision-based robot localization using sporadic features,” in Workshop Robot Vision 2001, Auckland, New Zealand, Feb. 2001, p. 35. [14] H. Utz, “Quo Vadis? Robuste Hierarchische Navigation für Autonome Mobile Roboter,” Diplomarbeit (in German), Univ. Ulm, Ulm, Germany, 2000. [15] Pioneer I Software Manual, RWI, Jaffrey, NH, 1996. [16] K. Konolige, “Colbert: A language for reactive control in saphira,” in Proc. German Conf. Artificial Intellgence, Freiburg, Germany, 1997, pp. 31–52. [17] Mobility 1.1, Robot Integmtion Software, User’s Guide, Real World Interface, Jaffrey, NH, 1999. [18] R. Alami, R. Chatila, S. Fleury, M. Herrb, F. Lngrand, M. Khatib, B. Morisset, P. Moutarlier, and T. Simeon, “Around the lab in 40 days,” in Proc. 2000 IEEE Int. Conf. Robotics Automation (ICRA ’2000), San Francisco, CA, Apr. 24–28, 2000, pp. 88–94. [19] R. Alami, R. Chatila, S. Fleury, M. Ghallab, and F. Ingrand, “An architecture for autonomy,” Int. J. Robot. Res., vol. 17, no. 4, pp. 315–337, Apr. 1988. [20] C. O’Ryan, F. Kuhns, D. C. Schmidt, and J. Parsons, “Applying patterns us to develop a pluggable protocols framework for orb middleware,” in Design Patterns in Communications, L. Rising, Ed. Cambridge, U.K.: Cambridge Univ. Press, 2000.