Abstract

The complexity of humanoid robots is increasing with the availability of new sensors, embedded CPUs and actuators. This wealth of technologies allows researchers to investigate new problems like whole-body force control, multi-modal human-robot interaction and sensory fusion. Under the hood of these robots, the software architecture has an important role: it allows researchers to get access to the robot functionalities focusing primarily on their research problems, it supports code reuse to minimize development and debugging, especially when new hardware becomes available. But more importantly it allows increasing the complexity of the experiments that can be implemented before system integration becomes unmanageable and debugging draws more resources than research itself. In this paper we illustrate the software architecture of the iCub humanoid robot and the software engineering best practices that have emerged driven by the needs of our research community. We describe the latest developments at the level of the middleware supporting interface definition and automatic code generation, logging, ROS compatibility and channel prioritization. We show the robot abstraction layer and how it has been modified to better address the requirements of the users and to support new hardware as it became available. We also describe the testing framework we have recently adopted for developing code using a test driven methodology. We conclude the paper discussing the lessons we have learned during the past eleven years of software development on the iCub humanoid robot.

Highlights

  • The rapid evolution of humanoid robots is pushing the requirements on their software infrastructure

  • We provide a review of the software architecture of the iCub robot including recent developments aimed to better support the evolution of the robot and the needs of the research community

  • We describe the Yet Another Robot Platform (YARP) middleware and how it has been extended with facilities to increase determinism in time-critical loops

Read more

Summary

INTRODUCTION

The rapid evolution of humanoid robots is pushing the requirements on their software infrastructure. The appearance of Robot Operating System (ROS) and its rapid adoption and growing community (Quigley et al, 2009) have changed how people develop software and pushed many robot developers to provide ROS compatible interfaces for their software or to adopt it altogether These problems have been present since the beginning of the development of the iCub platform and through the past 11 years of its evolution. We provide a review of the software architecture of the iCub robot including recent developments aimed to better support the evolution of the robot and the needs of the research community. We describe the robot abstraction layer, which allows the same code to control the real robot or a simulation, on-board, or through a network link This abstraction layer separates high-level components from the hardware implementation including the communication infrastructure. We conclude the paper with a discussion on the lessons we have learned in the past years of software development on the iCub robot drawing the conclusions of this work

A BRIEF OVERVIEW OF THE iCUB AND ITS EVOLUTION
MIDDLEWARE
Logging
The Thrift IDL
Increasing Determinism in Distributed Applications
ROBOT INTERFACE
Motor Control Interfaces
Remotization
USING THE iCUB SOFTWARE WITH OTHER ROBOTS
COMPONENT REUSABILITY AND COORDINATION
Port Monitoring and Arbitration
CONFIGURATION OF COMPONENTS
APPLICATION MANAGEMENT
SOFTWARE TESTING ON THE iCUB
The Robot Testing Framework
Testing on the iCub
10.1. Freedom of Choice versus Freedom from Choice
10.2. In-House Middleware
10.3. Packet Management System
10.4. Lack of IDL
10.5. External Configuration of Ports
10.6. Robot Interface Abstraction Layer
10.7. Test-Driven Development
Findings
11. CONCLUSION
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.