Reports of the second ROS Meetup on robot navigation


On November 30, 2019, the 2nd ROS Russian MeetUp was held, organized by the Sberbank Robotics Laboratory, which gathered more than 200 ROS developers. In this article, we have made a selection of the most interesting presentations from this MeetUp on robot navigation.

Very soon, on April 18, the next ROS MeetUp will take place, even more ambitious and interesting! Coronavirus does not allow us to meet in person, but nothing prevents us from gathering for an online conference! We invite all colleagues to attend online as listeners and speakers. Broadcast details will be sent to registered participants, registration is open, link here , participation is free. And we remind you that you can find like-minded ROS developers in Russia, find out the latest ROS news in our telegram channel ROS Russia community . We have already published the full announcement of the program and part of the reports of the past MeetUp , and today we will share three more interesting reports.

So let's go!

“Localization of the robot using ARUCO markers”


Report author: Alexey Budyakov



→ Presentation slides

This report examines in detail one of the important components of the navigation subsystem - location by markers.

The introduction highlights the basic principles and concepts of computer vision methods that allow mobile robots to navigate through fiduciary markers: special images designed to be recognized as reference points. They usually have high contrast on their own and against any possible background, optimized for recognition when scanning at an angle and in low light. As markers, you can use primitive logos (for example, “checkers” on board the aircraft), ready-made data encoding systems (DataMatrix, QR), however, in robotics, specially developed marker systems are used, most often in the form of black and white images. One of them is ArUco, which allows you to create pixel markers with several granularity values ​​(from 4 * 4 to 7 * 7) and, unlike a QR code,recognition of which takes several tens of milliseconds, allows to find and detect a marker with minimal computational costs. The report examined the way from detecting a marker on an image to calculating the position of a robot relative to a marker, and considered the advantages of using the ArUco marker recognition modulearuco_marker , part of the popular OpenCV library of computer vision methods. We tried to build the report so that it would give a general understanding of the process of navigating markers without going deeper into mathematics, plus links to methods of popular libraries that implement one or another method used in navigation can be extracted from it.

“Timed Elastic Band Road Planner Overview”


Report author: Ivan Kornev



→ Presentation

slides The purpose of the report was not only to tell about the principle of the local TimedElasticBand scheduler, but also to compare it with another popular ROS scheduler - DynamicWindowApproach, since it is part of the MoveBase navigation stack and is set as the default scheduler in the navigation stack for turtlebot3. It is with this planner that newcomers, as a rule, get to know first.

Report Content:

  1. A brief overview of the MoveBase navigation stack explaining how it works. It will be useful to those who have not previously had dealings with this package, but want to understand it or understand what role the local scheduler plays in it.
  2. Dynamic Window Approach ( — DWA). DWA, . . , , . , . , DWA ROS , . - .
  3. TimedElasticBand ( — TEB). . :

    — , ( )
    — , ( , 0 255, , ROS Costmap) 255 ( 255 ) . , , . , , . . TEB , .
  4. . DWA TEB , ROS Wiki.


“Eurobot: ”


: ,



→ Presentation slides The

vice-champions of Russia, the setUp team , supported by the Sberbank Robotics Laboratory, talk about their own navigation system. The development process is described in a large article .

“Robots travel on a flat field and most obstacles are known in advance, however, insidious opponents can try to steal resources (and we sometimes want to eat a couple of dozen extra points), while we want to drive to the desired point as quickly as possible without hitting the obstacles. From an external camera on the field, we obtain data on the position of the enemy and know where he is now. However, it is not enough to know his position - you need to be able to use this information.

Today we’ll try to drive from point A to point B without having to drive along the tail of a cat who has fallen asleep on the floor. In particular, we will explain how we build a route and control the speed of the robot, as well as how to run everything on our computer. ”

image

Trying to get by with a little blood


When solving this problem, you can take ready-made material written by professionals, then there will be no torment and invention of the next “bicycle”. We used an omni-wheel platform, therefore, although there was an attempt to use a ready-made local planer from ROS, for a number of reasons we found this to be unpromising.

Of the advantages of the standard stack, you can highlight the availability of documentation and the ability to find information on the forums. You can read more on the official website with the documentation .

It is important to mention that ROS packages are most often tested on two-wheeled platforms. We have optimized the assembly of the system for omni-wheels (such a robot is called holonomic: at any time it can move in any direction) by increasing the available angle of rotation when moving up to 360 degrees. It seemed to us that this was a dirty hack, but other options were not universal. The standard planner turned out to be too heavy and had many parameters that we would never need

Global planner


The first thing we decided to refine from the navigation packages was to create our __global planner__ based on theta * algorithm. In short, this is a modified A * . Just as usual, a known map is divided into a grid of elements (nodes) in a raster way; the scheduler constantly searches for the parent node, which can be reached directly, i.e. on the way to which there are no obstacles. This allows you to build convenient paths and smooth them. Further they are transferred to local planner.

image
Comparison of A * and theta *

Local planner


The local scheduler works by the gradient descent method in a potential field. The path from the global planner is used as input . In addition, in local planner, there are internal services for choosing the path construction mode. Two modes of operation are available: the mode of shifting points along the gradient, using multiple passes on the map, as well as the mode of shifting, in which the increment is calculated directly in two coordinates, and the point moves to the edge of the safe zone.

As a result, we decided to use gradient descent in a potential field based on the path from the global planner'and. It turned out to be a lightweight and relatively simple algorithm that completely satisfied us with the quality of the received path, working time and the amount of RAM consumed (in the region of 100-150 mb), which is several times less than what was obtained at the first development iterations with standard packages.

image
Local planner path offset example

Trajectory regulator


The last but not least important element of the navigation stack is the trajectory regulator . He is responsible for converting the path from the local planner to the path and provides the instantaneous speed values ​​for the current step. The first iteration on the way to the new “trajectory” was the algorithm for replacing the vector to which the robot is moving. It was assigned as the sum of vectors to the next three nodes with different coefficients. The second iteration was to write the Minimum Jerk filter through the construction of a polynomial of the 5th degree, where the x and y coordinates depend on the time of arrival to each point.

image
The figure shows a graph of one of the coordinates versus time, as well as the speed along this coordinate

If you are interested in developing robots, robotic modules or software components, if you want to show off your developments or just chat with like-minded people, welcome to our next online ROS Meetup on April 18 !

Authors of the article: Albert Efimov, Alexey Burkov, Alexander Bogoslovsky, Oleg Urzhumtsev

All Articles