Robot Operating System (ROS) Software Stack

Robot Operating System (ROS) Software Stack

The Robot Operating System (ROS) is a popular open-source software framework for building robotic applications. It provides a structured communications layer on top of the host operating system, with tools and libraries for simplifying the complex task of creating robot behavior across various robotic platforms. ROS enables code reusability and makes it easier to integrate different capabilities and share solutions. ROS Robotics Software Stack Overview ROS consists of a number of components that work together to enable robotic development. The core ROS components include the communications infrastructure, robot-specific tools and capabilities, and developer tools. The communications infrastructure allows processes to communicate with each other, passing messages for tasks like sensor data processing, control, and actuator commands. ...

November 24, 2024 · 57 min · Vadzim Belski
Software Design principles

Software Design principles

Intro Any architectect and software developer should be aware of and follow best practeces established by many generations of software developers. This article is a recap of the best practices and the most important ones for software developers. Whenever you came to interview with me - you should definitely read this article and know by heart many of the principles. Design principles A brief overview over common design principles SOLID Single Responsibility Principle (SRP): A class should only have a single responsibility, that is, only changes to one part of the software’s specification should be able to affect the specification of the class. Open/Closed Principle (OCP): “Software entities … should be open for extension, but closed for modification.” Liskov Substitution Principle (LSP): “Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.” Interface Segregation Principle (ISP): “Many client-specific interfaces are better than one general-purpose interface.” Dependency Inversion Principle (DIP): One should “depend upon abstractions, [not] concretions.” DRY (Don’t Repeat Yourself) “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system” ...

July 29, 2022 · 3 min · Vadzim Belski