MobileMachinery

Advanced Sensing and Perception for Mobile Machinery

By October 25, 2018 No Comments

Using ROS for Rapid Deployment through shorter time to market and lower development costs.

Advances in sensing and automation technologies continue to provide opportunities to bring new value to off-highway mobile machine applications. Sensing and control technologies that have been used for years in robotics are becoming ruggedized and dropping in cost, now making them suitable to apply to mobile machine applications. However, these technologies can increase the complexity of development, so there is a need to make use of tools that have also evolved from the world of robotics that have been developed precisely for this purpose.

ROS (Robot Operating System) started with two grad students trying to solve a common problem in robotics. Researchers at the time would typically spend 90% of their time building the general infrastructure for their robotic platform and only 10% innovating and building something new. As the students struggled to find a PhD project that wouldn’t require years of development duplicating what someone else had already done they decided to work on a solution to break this pattern.

Their vision was to create the “Linux of Robotics”, an open-source platform that would enable people to build on each other’s results.

Today, just ten years since its creation, ROS has become the de facto standard in robotics software with users estimated in the hundreds of thousands and with more than 16 million ROS package downloads to date.

What is ROS?

Contrary to what the name suggest, ROS is not really an “operating system” like Windows, Linux or Android. Instead ROS is considered “middleware” which is a word given to a piece of software that acts as a mediator between different entities or applications and manages the interactions between them. In other words, the middleware is like the glue that holds different software pieces together.

Robots are often complex systems that require tight integration of algorithms (sometimes running on multiple platforms) and components like user interfaces, sensors and actuators. ROS is then a “software glue” that can make all these parts to work together.

Sitting on top of an operating system (typically Linux), ROS provides critical services to the system such as:

  • Hardware abstraction (layer that interfaces with the physical components of the computer).
  • Low-level device control (drivers for things like sensors/actuators).
  • Implementation of commonly-used functionality (libraries for navigation, computer vision, perception etc.).
  • Message-passing between processes (allowing different parts to communicate with each other).
  • Package management (simple way to install, upgrade, configure, and remove software).

Basically, the idea with ROS is to provide the framework and building blocks so that we don’t have to reinvent the wheel for every project.

Why use ROS?

ROS has the potential to add significant value not only to full-on robotics projects but also to any project that incorporates components and technologies used in robotics.

Some of the main advantages of ROS:

  • Open-Source

ROS provides free access to mature software functionality under a permissive license that allows for reuse in commercial and closed-source products. As an open-source platform, ROS not only shortens the development but also simplifies the control and maintainability of the software.

  • “There’s a package for that!”

ROS currently has over 2,000+ packages available for a wide range of applications and hardware components. Some of these packages provide drivers for common components like Lidars, cameras and actuators while others provide solutions to most of the technical challenges associated with robotics applications like mapping, localization, navigation, & perception.

  • Distributed/Modular Architecture

All the components in a ROS system run as independent nodes that communicate using messages. These nodes can run in one or multiple processing platforms. This makes for a very flexible, modular structure in which a system component can be added, replaced or upgraded without impacting the rest of the system.

A representation of the architecture of ROS systems. System components (nodes) run as separate entities communicating publishing or subscribing to messages grouped in topics. Attribution: ROS Wiki, Open Robotics Foundation

  • Client Libraries

ROS has client libraries available to make ROS concepts accessible to users via code. This enables the creation of new or customized ROS packages for users that need to develop unique solutions for their application. Currently, ROS supports client libraries for C++, Python and Lisp. Some additional experimental libraries are also available for other languages like java, ruby, and Matlab.

  • Integration with other libraries

ROS provides seamless integration with popular libraries including:

  • OpenCV for computer vision.
  • Gazebo for to develop robotics simulations.
  • PCL (Point Cloud Library) for the manipulations and processing of three-dimensional data and depth images.

 

  • ROS Tools

ROS also provides access to an ecosystem of tools to facilitate development tasks such as data analysis/visualization, debugging, and plotting.

Visualization of camera and Lidar data using ROS tool RVIZ, a 3D visualization environment that lets you combine sensor data, robot model, and other 3D data into a combined view.

 

There are certainly challenges and potential limitations that need to be considered before deciding to build a system around ROS. A steep learning curve is often cited as the primary concern, however as the ROS community grows more documentation and resources are becoming available for training.

Some other perceived limitations of ROS include:

  • Not real-time compatible.

Although it is true that ROS is inherently a non-RT (Real Time) framework, its best-effort approach is often sufficient for systems that don’t have strict timing requirements. Alternatively, ROS can also interface with embedded controllers that can handle the time-sensitive tasks.

  • Not compatible with other platforms.

Currently ROS can only be run on Unix-based platforms. This may change in the future as there are several experimental versions that run on other platforms including one that was recently announced by Microsoft for Windows.

It is important to note that a new version of ROS (ROS 2) is currently under development as an effort to address these (and other) concerns. This new version will leverage technologies that were not available when the original ROS was developed and will add features to support new use cases for the platform.

 

ROS for mobile machinery applications

Robotics is no longer a field reserved for scientists in research labs or space agencies.

Over the last few decades we’ve seen robots take over complicated tasks on factory floors and some have even sneaked into our houses to help us vacuum while we’re away.

The global market for robots is booming and is expected to grow to almost $500 billion U.S. by 2025 as robots are adopted by other industries like healthcare, mining, construction, and agriculture.

For the mobile machinery industry, the expectation is that many of these robotic applications will take the form of fully autonomous machines that will operate under minimal supervision. However, there are also a number of opportunities to leverage technology used in robots to automate or simplify tasks in non-autonomous systems. For example, modules used for mapping and localization could improve machine performance in precision agricultural applications, perception technologies can be used to implement systems that improve safety at construction sites and path planning algorithms could be used to increase efficiency in mining operations.

ROS has the potential to significantly shorten the development of both, advanced features and fully autonomous systems as there is no longer a need to develop basic software infrastructure for the system. Therefore, the development team can concentrate on resolving only the unique, industry-specific challenges of a given application.

 

ROS at JCA Electronics

At JCA Electronics, we have the products and the expertise to help you leverage the benefits of ROS to accelerate the development of your mobile machinery application.

Our Hummingbird controller is a ruggedized Linux platform that can be used as ROS master or node and incorporates a number of features that makes it the ideal ROS controller for commercial vehicles including:

  • Environmentally sealed, -40° C to +70° C operating temperatures.
  • Designed for both 12V and 24V systems.
  • Two CAN buses, Ethernet, Wi-Fi, and cellular modem capabilities.
  • Integrated GPS capability.

The Hummingbird can be paired with an embedded controller such as the JCA Falcon to provide a full, ROS-compatible solution with a real-time controller to handle I/O and time-sensitive tasks such as feedback control loops.

Example of a ROS system using JCA Hummingbird and JCA Falcon controllers.

JCA Electronics’ engineering team also has experience developing ROS systems for the mobile machinery market.

Some of the key capabilities of our team include:

  • Development and implementation of ROS drivers and custom ROS packages.
  • Implementation and configuration of ROS packages (localization, navigation, perception, etc.).
  • Development of ROS-based data acquisition systems for field testing.
  • Processing of perception data using PCL and OpenCV in a ROS environment.
  • Development of “bridge” packages to facilitate communication between devices in ROS systems (e.g. bridges for J1939 or MQTT communication).

 

Contact us to learn more about ROS, its capabilities and the competitive advantage it can create for mobile machinery manufacturers.