The article provides an overview of ROS software and its various applications. ROS software on the example of the robot developed by EnCata to automate warehousing.

According to DHL, despite the evident advantages of automation technologies and the increasing demand for swifter and more precise services, approximately 80% of warehouses still lack automation solutions, opting for manual labour instead. Rick Faulk, CEO at Locus Robotics, paints an even bleaker picture, suggesting that based on his data, more than 100,000 warehouses worldwide, equivalent to 95% of the total, continue to depend on manual labor.

Market analysis by Interact Analysis forecasts remarkable growth in the robotic assembly orders, projecting an increase from $236 million in 2022 to a staggering $6.8 billion by 2030. As of the close of 2022, there were around 33 suppliers of automation systems globally, with 18 of them based in the United States. Statista predicts that the global warehouse automation technology market will expand from $9.95 billion in 2016 to a substantial $30.15 billion by 2026. This highlights the warehouse robot market as a highly promising and rapidly expanding sector.

At EnCata, our team not only tracks these advancements but also actively engages in robotics projects, including those that help our customers automate their warehousing. Examples of the projects can be found here and here. In this article, we will delve into popular software used in robot programming, using the development of the LeanKey warehouse robot as a case study.

Advantages and features of programming with ROS

The Robot Operating System (ROS) stands as an open-source meta-operating system designed for robot programming. Since its inception in 2017 as an initiative at Stanford University, ROS has evolved into a powerful tool employed by NASA for robotic development.

At its core, the philosophy of ROS is based on the open source model. Developers have the flexibility to select configurations of tools and libraries and tailor the firmware to suit the specific requirements of individual robots. This emphasis on openness has fostered the growth of a robust and dynamic community of developers and researchers who continually contribute to the advancement of the platform. Their efforts translate into enhancements in functionality and the expansion of its capabilities.

Advantages of Embracing ROS:

  • ROS offers the unique advantage of interfacing with its environment through a plethora of programming languages. This means that nodes written in different languages, such as Python and C++, can effortlessly communicate without any hiccups;
  • at the heart of ROS lies a modular architecture, neatly compartmentalizing a robot's functionality into reusable components, aptly named "nodes." These nodes communicate using well-defined message-passing mechanisms. This modularity simplifies the development of intricate robotic systems by encouraging the integration and reutilization of existing components;
  • ROS boasts an extensive toolkit of libraries and tools that span various facets of robotics, encompassing perception, motion planning, control, and modeling. These readily available libraries empower developers, sparing them valuable time and effort with their pre-built functionalities;
  • ROS seamlessly melds with simulation environments like Gazebo and RViz. This seamless integration empowers developers to rigorously test algorithms and robot applications within a simulated realm prior to their real-world deployment. This strategic approach ultimately conserves both time and resources;
  • ROS caters to both small-scale robots and large, intricate robotic systems. Its flexible architecture is engineered for effortless scalability, rendering it adaptable to a broad spectrum of applications, from cutting-edge research prototypes to industrial automation.

Applications of ROS in Warehouse Robot Development

We are currently utilizing the ROS environment in our LeanKey project, a warehouse robot. Among dozens of intermediate software options, our specialists chose ROS as the foundation for programming the warehouse robot. The choice of an operating system for robotic projects depends on specific needs and project objectives. While ROS stands as one of the most popular and versatile choices, other systems such as Autoware, YARP, MOOS, OROCOS, and the Player Project are tailored to specialized domains and use cases, lacking the universal appeal of ROS.

Why did we opt for ROS?

Our primary goal was to create a cohesive program from various algorithms, and we discovered that ROS provided support for most of them, particularly navigation, mapping, and localization algorithms. These algorithms are pivotal and the most complex parts of the robot. ROS offers robust navigation and mapping libraries, including SLAM (Simultaneous Localization and Mapping). These tools empower warehouse robots to autonomously navigate dynamic environments, generate environment maps, and plan optimal delivery routes.

Warehouse robots interact with various objects, such as packages, pallets, and shelves. ROS facilitates the integration of sensors like cameras, LIDAR, and depth sensors, simplifying the development of object detection and perception algorithms, aiding the robot in identifying and processing items.

In a warehouse setting, where robots coexist with humans and other equipment, safety is paramount. ROS's navigation stack includes collision avoidance features, enabling robots to operate safely by avoiding collisions with obstacles and other robots.

ROS streamlines the development of robotic manipulation capabilities, enabling warehouse robots to accurately pick up, move, and place objects. Integration with robotic manipulators and grippers can be achieved through ROS-controlled hardware interfaces.

Many warehouse operations require collaboration among a fleet of robots. ROS facilitates seamless communication and coordination between multiple robots, allowing them to work together in tasks like sorting, inventory management, and goods delivery. This is achieved through a distributed architecture, message-passing system, and tools specifically designed for multi-robot systems.

ROS can be integrated with warehouse management systems to ensure seamless communication between robots and the central management system. Such integration ensures efficient coordination between robots and warehouse operations. Implementing ROS into a warehouse management system requires collaboration between robotics engineers and warehouse operation specialists. With proper integration, ROS-based robots can enhance warehouse automation, optimize inventory management, reduce operational costs, and enhance overall efficiency.

How We Utilize ROS Capabilities in Leankey

Hardware Abstraction

In our work with the Leankey robot, ROS's hardware abstraction plays a pivotal role. This capability refers to the ability of a robot's operating system to separate high-level software components, such as perception, planning, and control algorithms, from the low-level details of the underlying hardware.

In traditional robot development, coding for sensor interactions, actuator control, and communication protocols can be complex and labor-intensive. Code is often written specifically for the hardware models, intertwining low-level software with high-level logic. This is akin to a recipe specifying a particular brand of knife, plate manufacturer, or frying pan; substituting any of these components would result in an unsuccessful dish.

Different robots employ varying hardware configurations and communication protocols, making it challenging to develop "universal" robot applications that can easily be ported to different platforms.

ROS addresses these challenges by providing a unified interface for interacting with robot hardware. Here's how it works:

  • In ROS, hardware functionality is encapsulated within modular components known as "drivers." These drivers are responsible for directly interfacing with physical hardware and translating low-level commands and data into standardized messages for ROS services.
  • ROS defines standard message and signal types for relaying data and commands from various hardware components. All messages and signals are standardized and identical across different models of the same component type. For instance, pre-defined message types exist for sensor readings, ensuring that data from two different LiDAR sensors will appear identical before transmission. Services for issuing commands to actuating devices, such as motor control, will also be transformed into a uniform format. Often, manufacturers of motors, cameras, sensors, and other hardware supply their devices with libraries ready for use in ROS, significantly expediting software development for robots. Higher-level ROS nodes containing application-specific logic, such as navigation, perception, or planning algorithms, can interact with the robot's hardware solely through standardized ROS messages and services. These nodes remain unaware of hardware intricacies and communicate with it solely through standard signals.

Consequently, hardware abstraction confers the following advantages:

  1. By employing ROS's hardware abstraction, we can develop robot applications that are agnostic to the underlying hardware. This portability enables the same application to run on different robots with minimal adjustments, saving both development time for our engineers and costs for our clients.
  2. Developers can concentrate on high-level logic and algorithms without worrying about hardware intricacies. The standardized ROS API streamlines development and enhances code maintainability.
  3. Robots with diverse hardware configurations can easily interact with each other and exchange information via ROS, fostering the creation of a cohesive network of robots collaborating on tasks.
  4. Hardware abstraction facilitates modular development, simplifies the replacement or upgrading of individual hardware components without compromising other aspects of the robot's functionality.

Ros2_control Framework

Ros2_control is one of the most valuable frameworks within ROS 2, offering a standardized and modular approach to robot control. To illustrate, imagine you are building a robot composed of various components such as arms, wheels, sensors, and more. Ensuring the seamless coordination of all these parts can be a daunting task. This is where ros2_control steps in as your robot's assistant. It helps manage each component of the robot, instructing manipulators on how to move or guiding sensors on how to perceive information. Instead of dealing with each component separately, ros2_control provides a unified means of communication with all parts.

Think of ros2_control as traffic signs. Just as road signs help cars, buses, and bicycles navigate the road safely, ros2_control assists different parts of your robot in communicating with one another without causing confusion. The workings of ros2_control are illustrated below.

The workings of ros2_control

It simplifies the process of creating robots, as you don't need to delve into every intricate detail of each component. You can simply instruct ros2_control about your requirements, and it takes care of the rest.


MicroROS is another extension we utilize in robot development. Specifically designed for microcontrollers, MicroROS addresses a fundamental challenge.

ROS is typically deployed on powerful computers and robots with substantial computational resources. The aim of MicroROS is to extend the capabilities of ROS to devices with limited resources, achieving this by creating a streamlined and optimized version of ROS that operates on microcontrollers.

MicroROS is tailored for efficient operation on microcontrollers with limited memory and computational power. It offers the core functionalities of ROS while minimizing overhead and resource utilization.

MicroROS supports the communication infrastructure of ROS 2, enabling microcontroller-based devices to interact seamlessly with other ROS nodes, whether they are also on microcontrollers or more powerful computers. This facilitates smooth data exchange within mixed-hardware robotic systems.

With MicroROS, you can develop software for a powerful computer and then, with minimal modifications, transfer it to a microcontroller.

In simpler terms, MicroROS is a scaled-down version of ROS capable of running on small, resource-constrained computers within robots. It enables these compact computers to communicate and collaborate, even with their limited resources. This proves especially valuable when creating robots and devices that need to perform 'smart' actions while consuming minimal energy and occupying minimal space.

The Navigation2 Package

Navigation2 is a collection of packages designed for robot navigation in space. It is tailored for mobile robots operating on two-dimensional (floor space) or three-dimensional (hilly terrain) surfaces.

Navigation2's purpose is to assist robots in moving from one place to another, avoiding obstacles, planning safe paths, and making informed decisions to reach their destination. It is a critically important component for various robotics solutions, ranging from service robots and autonomous vehicles to industrial mobile robots. You can think of Navigation2 as a map application on your phone. Just as you consult a map to know where to turn, how to navigate around traffic, Navigation2 helps the robot determine where to move and how to stay safe.

Key functions of Navigation2 include:

  1. Map Operations: Creating, updating, and using maps.
  2. Path Planning: Generating routes around obstacles.
  3. Dynamic Obstacle Detection: Identifying dynamic obstacles and either avoiding them or tracking them.
  4. Obstacle Avoidance Scenarios: Implementing obstacle avoidance scenarios, such as reversing or circling to update the map.
  5. Decision Trees: Programming the robot to execute complex sequences of actions and respond to changes in the environment, such as returning to base for charging or patrolling a designated route.
  6. Visualization: Providing visual information about the generated route, the internal map of the world, and obstacles.
Simulation of LiDAR operation

In simpler terms, Navigation2 serves as the GPS and mapping system for robots. It helps robots understand their location, where they need to go, and how to get there without colliding with objects around them. It acts as an intelligent guide, enabling robots to move safely and make autonomous, informed decisions.

Results of ROS-based Design

Upon completing the software development for the LeanKey robot, it will be capable of performing the following functions:

  1. Operating in Two Modes: The first mode involves mapping the environment, while the second mode focuses on orientation using previously generated or loaded maps.
  2. Receiving messages with destination coordinates, calculating routes to specified points on the map or autonomously finding a path to them while navigating around obstacles.
  3. Responding to Sudden Obstacles: This includes reacting to unforeseen obstacles, such as humans or objects not reflected on the map.
  4. Maneuvering and Braking: The robot is capable of evasive maneuvers or braking when approaching an object in a hazardous manner.
  5. Accepting Manual Control Commands: Manual control commands from a wireless remote or PC can be received and executed.

A significant advantage of ROS is the ability to preview the software's operation in a simulator. We utilize simulation tools such as Gazebo and RViz. 

Gazebo and RViz are integral tools within the ROS ecosystem, although they serve different purposes and offer distinct functional capabilities:


Gazebo serves as a comprehensive simulation environment, crafting virtual worlds where robots can be modeled and tested as if they were in the real world.

Gazebo simulates the physical behavior of objects, including gravity, friction, and collisions, enabling robots to interact realistically with their surroundings. It supports the creation and manipulation of detailed 3D models of robots, sensors, and the environment.

Gazebo facilitates the simulation of various sensors (such as cameras and LIDAR) and the actions of actuators (such as motors).

Operating in real-time, Gazebo provides immediate feedback on the behavior of robots and their components within the simulated environment.

Gazebo Interface


RViz is primarily a visualization tool designed to display and 'comprehend' data generated by robots, such as sensors and other software components.

RViz creates a 3D visualization environment where users can view robot models, sensor data, and the surrounding environment.

In real-time, RViz displays sensor data graphically, including images from cameras, LIDAR scans, and point clouds.

RViz can also showcase 3D models of robots, aiding users in visualizing the robot's appearance and movements. It can display planned paths and trajectories, helping users understand how the robot plans its movements.

RViz Interface

In summary, Gazebo is a simulator that creates virtual worlds for testing and modeling the physical interactions of robots, while RViz is a visualization tool that assists users in comprehending and representing data obtained from robots and their surroundings. Gazebo simulates the overall behavior of the robot, whereas RViz focuses on visualizing sensor data and planning information. Both tools are invaluable components in the development and testing of robots.

On the left – simulation of Gazebo  operation, on the right – simulation of RViz operation

In closing,

ROS significantly accelerates the software development process for warehouse robots. The open-source nature of ROS has led to the formation of an active community of developers, researchers, and enthusiasts who contribute to its rich libraries. Often, components such as sensors, LiDARs, and more come with ROS libraries right out of the box.

ROS encourages modular design, making it easier to create complex robotic systems by combining and reusing existing software components (nodes). This saves time and effort in development.

ROS provides high-level abstraction of robot hardware and software, allowing developers to focus on specific tasks without worrying about low-level hardware details.

ROS easily integrates with simulation environments like Gazebo and RViz, enabling testing and verification of robot behavior and algorithms before deploying them on real hardware.

Overall, ROS offers powerful tools for robotics development, promotes collaboration, and fosters innovation in the robotics community. However, it requires a certain level of knowledge and consideration of real-time performance requirements. ROS may be challenging for newcomers, and gaining a deep understanding of its architecture and tools may require substantial training.