Abstract
Content
- Introduction
- 1. Relevance of the topic
- 2. Purpose and objectives of the study, planned results
- 3. Introduction to ROS
- 4. The concept of ROS
- 5. ROS Computational Graph
- 6. Basic concepts of robots with differential drive
- Conclusions
- The list of sources
Introduction
According to the latest data, today there are 1.8 million different robots working in the world-industrial, home, and toy robots. At the same time, the largest number of robots is used in South Korea, Singapore took the second place, Japan took the third, followed by the United States and China. And in Russia, robots only have about 0.25% of the global market, which is extremely small[1].
Robotics is an applied science that develops automated technical systems.
Robotics is based on such disciplines as electronics, mechanics, and programming. There are construction, industrial, household, aviation, military, and space robotics. When creating robotics, you need to follow the rules, a friendly attitude to humans should be the main thing in robot programming[2].
1. Relevance of the topic
At the moment, ground-based mobile robots – manipulators are very popular in various fields of activity. Being, in fact, receivers of electric energy, they allow you to perform various types of work in dangerous or hard-to-reach places for people. At the same time, manipulators are the most important parts of such mobile platforms.
2. Purpose and objectives of the study
The purpose of the work is to build a mobile robot with a differential drive. The work will use the Arduino UNO microcontroller, as well as the Raspberri Pi 3 B+microcomputer.
3. Introduction to ROS. General information
ROS is a software platform whose purpose is to write robot software. The main goal of ROS is to create and use robotic software around the world. ROS consists of a set of tools, libraries, and software packages that simplify the task of creating robot software.
ROS is an open source meta-operational system developed for the robot. It provides all the services necessary for a given operating system, including hardware visualization, low-level device management, implementation of functionality for general use use, transfer of messages between processes and management packages. It also provides tools and libraries for getting, building, writing, and executing code on multiple computers. The main functions that ROS provides are:
- message passing interface. This is a basic ROS function that allows you to organize interprocess communication. Using this feature, ROS can exchange data between related systems.
- hardware versatility.ROS has a certain degree of versatility that allows developers to create robotic applications. They can be used with any device. Developers only need to take care of the proper hardware of the robot;
- package management. ROS nodes are organized in packages and are called ROS packages. They consist of source codes, configuration files like
build
(build
), and so on. We first develop the package, build it, and install it. ROS has a build system that helps you build these packages. Package management makes ROS development more orderly and organized; - additional libraries. The ROS framework includes several additional libraries developed by third-party organizations, such as Open – CV, PCL, OpenNI, etc. These libraries help make ROS a universal meta-operational system;
- low-level device management. All robots have low-level devices, such as input/output devices, serial port controllers, etc. Control of such devices is also carried out using ROS;
- distributed computing. The amount of computing that will be required to process the data stream from multiple sensors is very high. Using ROS, we can easily distribute them in a group of computing nodes. This will allow you to distribute the calculator evenly more power, and the data will be processed faster than on a single computer;
- code reuse. The main goal of ROS is the reuse of code, contributing to the development of the scientific –research community around the world. ROS executables they are called nodes. They are grouped into a single object called the ROS package. Package group-stack. Stacks can be split and distributed;
- language independence. In ROS, you can program with popular languages such as Python, C++, and Lisp. Nodes can be written in any of these languages, and data exchange between such nodes via ROS will not cause any problems;
- easy testing. ROS has a built-in integration testing module called rostest, designed for testing ROS packages;
- scaling . ROS, after some modification, can perform complex calculations in robots;
- free and open source. The ROS source code is open and completely free to use. The main part of ROS is licensed BSD and can be reused in commercial and closed source products.
ROS is a combination of data flow (message passing), tools, capabilities, and ecosystem[3]. ROS has built-in powerful tools for debugging and visualizing it. A robot equipped with ROS has capabilities such as navigation, location detection, mapping, manipulation, etc. They help create powerful applications for robots. The image below shows the ROS equation:
4. ROS concepts
ROS consists of three main levels, such as:
- ROS file system;
- ROS computational graph;
- ROS community.
The main task of the ROS file system is to organize files on the disk. Basic terms of the ROS file system:.
- packages . ROS packages are the core unit within the ROS software framework. The ROS package may contain executable files, ROS libraries owned by third-party software, configuration files, etc. ROS packages can be reused and shared;
- package descriptions . In the package description (package .XML file) you can find all the details of the packages, including the name, description, license, and dependencies;
- message types (msg). All messages are stored in a separate folder, in files with the extension. msg. ROS. Messages are structured data that passes through ROS;
- service types (SRV). Service descriptions are stored in the SRV folder with the .srv. SRV extension. The files define the request and response for the data structure in the ROSservice.
5. ROS Computational Graph
The ROS computational graph is a peer-to-peer network of ROS systems, the purpose of which is which is the processing of all data. The basic concepts of ROS computational graphics are nodes, ROS Master, parameter server, messages and services.
- Nodes are computational processes in ROS. Each node performs the processing of certain data. For example, one node processes data from a laser scanner, another publishes this data, and so on. The ROS node is created using the ROS client library (for example, roscpp and rospy). In more detail we will look at these libraries during the creation of the sample site.
- The ROS master. The ROS Master acts as a name service in the ROS compute graph. It stores topics and service registration information for ROS nodes. The nodes communicate with the Master by providing their registration data. These nodes, communicating with the master, receive information about other registered nodes and, accordingly, establish connections with them[4]. The wizard also calls back these nodes when the registration information changes, allowing the nodes to dynamically create connections when new nodes are started. Nodes are connected directly to other nodes. The master, like the DNS server, only provides information retrieval. Nodes that subscribe to a topic request connections from nodes that publish the topic and allow connections to be established over a consistent connection protocol. The most common protocol used in ROS is called TCPROS. It uses the standard TCP/IP socket protocol.
- The parameter server. Static ROS data is stored in a public location on the data server, from which the nodes access this data. We can set the volume of the data server and define it as private or public, to restrict access to the server to one node or allow access to all nodes.
- ROS themes. Nodes exchange data in the form of messages through a transport system in the ROS with a specific topic name. Subject is the name used to identify the content of a message. A node interested in a particular type of data will subscribe to the corresponding topic. In general, the publisher and the subscriber are unaware of each other's existence. The idea is to separate the production of information from its consumption. Logically, you can think of a topic as a bus of strongly typed messages. Each bus has a name, and anyone can connect to it to send or receive messages as long as they are of the correct type.
- Messages. Nodes communicate with each other via messages. The ROS message consists of primitive data types, such as integers, floating points, and Boolean values (
true
–true
orfalse
–false
). ROS messages are passed through the ROS topic. A subject can only receive or send one type of message once. We can create our own message definition and pass it through the topic. - Services. It was shown above that forwarding / receiving a message using ROS themes is a very simple method of communication between nodes. This method of communication (
one to many
–one–to–many
) allows any number of nodes to subscribe to a single topic. In some cases, there may be a partial interaction, usually used in distributed systems. Using a specific message, you can send a request to another node that provides the desired service. A node that sent a request to another node must wait for the result of processing this request.
The following figure shows the interaction between the wizard, themes, services, and nodes:
Conclusions
In the course of the work, the design of a mobile robot with a differential drive was developed.
The kinematics of the differential drive with consideration of the mobile platform was considered.
A mechanical model of the robot was assembled, for which, on the basis of the Arduino UNO microcontroller and the Raspberry Pi 3B+ microcomputer, a control system was developed using the ROS operating system. As a result of the research, practical skills and knowledge in the field of developing a system for joint control of several drives were obtained.
When writing this abstract, the master's work is not yet completed. Final completion: June 2021. The full text of the work and materials on the topic can be obtained from the author or his supervisor after the specified date.
Список источников
- Макаров И.М. Робототехника: История и перспективы – М.: МАИ, 2017. – 238 с.
- Шадрин П. Роботы будущего – М.: Махаон, 2014. – 130 с.
- А.А.Антонов. Архитектура ROS. –М.: ВГТУ, 2014 – 39 с.
- Джозеф Л. Изучение робототехники с использованием Python / пер. с анг. А. В. Корягина. – М.: ДМК Пресс, 2019. – 250 с.: ил.
- ROS. TCPROS. Official Ducumentation [Электронный ресурс]. – Режим доступа: http://wiki.ros.org/ros/tcpros
- Программирование робототехники с Arduino и ROS [Электронный ресурс]. – Режим доступа: : https://habr.com/ru/post/249401/
- Петин В. А. Микрокомпьютеры Raspberry Pi. Практическое руководство. — СПб.:БХВ–Петербург, 2015. —240 с.: ил. — (Электроника)