ROS2 and Gazebo: 2.5D Navigation

Introduction

The code for this section is located in kalman part of an archive. Note that archive includes some additional folders, like maps and worlds, that are used by all projects and therefore are located outside of them. Also note that we use ROS2 Galactic.

Kalman filter is one of the most popular tools used in robotic navigation, and there are literally tens (hundreds?) of thousands articles about it. Which is bad: if we need so many publications, then probably we do not have a single, perfect one, right?

Surprisingly, such publication exists: I strongly recommend (see links below) the free "Kalman and Bayesian Filters in Python" by Roger R Labbe Jr. The author put an enormous amount of efforts in this tutorial, and result is trully extraordinary. I highly recommend you to read it.

Needless to say, I am going to build my code on this book's examples, fixing minor glitches and adding features that will make your life, as a ROS2 developer, easier. As a tutorial, the book is very good. The problem (that I hope to fix) is that it doesn't pay enough attention to what developers really need: building code ground up. Say, we are told how to use GPS sensor. And in a separate example - how to use landscape markers. Now, how can we merge these sensors? How to dispose GPS and use IMO instead? What to do if at some point 3 out of 7 landmarks are obscured? What if "GPS signal lost"? And so on.

However, this is all about practical applications. As for theory, I only have this section because... well, it is a tradition. I can not jump into coding without saying few words, yet few words are not enough.

Also, there are many other useful links in a list of links. Please read them, Kalman filter requires some efforts to learn, but when learning is done, it is quite simple.

That means that I am not going to create 1,000,001th tutorial on Kalman filter. I am only going to provide a brief outline, and for the rest, please refer to the list of links below.