News About John X. Wang

Year 2019, the Robots Are Coming with Fault Tolerant System Architecture

  • Dec 31, 2018 |

    Autonomous vehicles use sensors to perceive objects and other traffic participants. The sensor data feeds into a computer and the computer runs software to understand the environment and to make driving decisions based on this understanding. This software is very complex and contains computer vision, 3D perception, machine learning, localization, decision making, trajectory planning, and control algorithms. These algorithms need a software framework to run in.

    Software is playing a key role in automotive industry, and Robot Operating System (ROS) has its place for specific activities. ROS is used in automotive industry as a component to be adapted and deployed in cars. However, its use varies according to a set of parameters, and its reliability depends on these values, and usage models.

    ROS is used by the majority of companies developing applications for autonomous vehicles and by almost all academic labs. ROS is analogous to iOS’s or Android’s SDK in the mobile stack, providing a software framework for developers to build applications on top. ROS has found widespread adoption because it is open source, has a strong community behind it and has seen a decade of application development, and provides a rich ecosystem in addition to the software framework, such as sensor drivers, algorithms, visualization, simulation, build tools and much more. ROS is excellent for rapid prototyping and development but is not designed to run in safety- and security-critical applications. As the industry shifts from development to productization and from testing to real-world applications, the highest level of robustness and reliability is needed.

    Robotics software has been chronically facing problems in industry and academy due to the lack of standardization, interoperability and reuse of software libraries. The most relevant problems that prevented the robotics community from producing a healthy software ecosystem were:

    • lack of code reuse;

    • higher needs of integration of

    • components and;

    • finding the appropriate trade-off between efficiency and robustness.

    As a solution, free software and open source software (FOS) initiatives such as the Robot Operating System (ROS) initiative were promoted. In particular, ROS provides operating system-like tools and package tools. ROS defines different entities including nodes, message topics and services. Nodes are processes or software modules that can communicate with other nodes by passing simple messages (or data structures) by means of publisher/subscriber mechanisms on top of TCP or UDP. In ROS a service is modeled as a pair of messages, one for request and another for reply. ROS has several client libraries implemented in different languages such as C++, Python, Octave or Java in order to create ROS applications. Its major advantage is code reuse and sharing. ROS has been successfully used in different kinds of robots such as autonomous guided vehicles and in the automotive industry. For example, ROS can be applied to support the Co-Pilot system at highly automated vehicles; the driver should take over the control within a certain time constraint when the system requests it, otherwise the system pulls over the car safely. ROS is also used for establishing a Collision Avoidance system for Autonomous Driving tasks. ROS is interesting for autonomous cars because:

    • There is a lot of code for autonomous cars already created. Autonomous cars require the creation of algorithms that are able to build a map, localize the robot using lidars or GPS, plan paths along maps, avoid obstacles, process point-clouds or cameras data to extract information, etc… All kind of algorithms required for the navigation of wheeled robots is almost directly applicable to autonomous cars. Hence, since those algorithms have already been created in ROS, self-driving cars can just make use of them off-the-shelf.

    • Visualization tools already available. ROS has created a suite of graphical tools that allow the easy recording and visualization of data captured by the sensors, and represent the status of the vehicle in a comprehensive manner. Also, it provides a simple way to create additional visualizations required for particular needs. This is tremendously useful when developing the control software and trying to debug the code.

    • It is relatively simple to start an autonomous car project with ROS onboard. You can start right now with a simple wheeled robot equipped with a pair of wheels, a camera, a laser scanner, and the ROS navigation stack, and you are set up in a few hours. That could serve as a basis to understand how the whole thing works. Then you can move to more professional setups, like for example, buying a car that is already prepared for autonomous car experiments, with full ROS support.

    ROS, a framework for robotics applications, provides a dynamic middle-ware with publisher/subscriber communication and a remote-procedure-call mechanism. It was initially developed in academia, but recently also industrial users are engaged to prepare ROS for use in products. It does not provide guaranteed timing behavior and dependable communication yet; however, At present, ROS presents two important drawbacks for autonomous vehicles:

    • Single point of failure. All ROS applications rely on a software component called the roscore. That component, provided by ROS itself, is in charge of handling all coordination between the different parts of the ROS application. If the component fails, then the whole ROS system goes down. This implies that it does not matter how well your ROS application has been constructed. If roscore dies, your application dies.

    • ROS is not secure. The current version of ROS does not implement any security mechanism for preventing third parties to get into the ROS network and read the communication between nodes. This implies that anybody with access to the network of the car can get into the ROS messaging and kidnap the car behavior.

    ROS community plans to address this in the future. Due to the benefits of its reusability and productivity, the component-based approach has become the primary technology in service robot software frameworks, such as ROS. However, all the existing frameworks including ROS are very limited in fault tolerance support, even though the fault tolerance function is crucial for the commercial success of service robots. Based on Dr. John X. Wang’s book titled “Engineering Robust Design with Six Sigma”, we can develop a rule-based fault tolerant framework together with widely-used, representative fault tolerance measures. Si most faults in components and applications in service robot systems have common patterns, we can equip the framework with the required fault tolerant functions. The system integrators construct fault tolerance applications from non-fault-aware components by declaring fault handling rules in configuration descriptors or/and adding simple helper components, considering the constraints of the components and the operating environment. Much more consistency in system reliability can be obtained with less effort of system developer.

    For implementation, we can build XML rule files defining the rules for probing and determining the fault conditions of each component, contamination cases from a faulty component, and the possible recovery and safety methods. The rule files are established by a system integrator and the fault manager in the framework controls the fault tolerance process according to the rules. Dynamic Fault Tree can be applied to evaluate the effectiveness of the Robot Operating System (ROS) based fault-tolerant architecture for Autonomous Vehicles.

    Year 2019, the Robots Are Coming with Fault Tolerant System Architecture.

    See More
    Computer Science & Engineering, Engineering - Electrical, Engineering - General, Engineering - Industrial & Manufacturing, Engineering - Mechanical, Mathematics, Nanoscience & Technology, Statistics