ROS2: First Person View 2.5D world navigation

Introduction

About

Download link: teleop_gui.zip.
Note: This archive should be added to archive.

First, download archive
Then unzip teleop_gui.zip into utils_commercial subfolder of it.

In one of the previous sections we have created the teleop_gui, which was a rather primitive utility imitating the corresponding ROS2 command line tool, plus some UI. This tool is no longer supported (though the article is still there, so it can be used as a source of info).

Instead, I am going to create a more advanced and universal dashboard to control robots in a multi-robot environment. It allows the person to see the world through the camera of any selected robot, and to control that robot. In the following sections (when I get to them) it will also become possible to read robot's navigation info (speed, coordinates) and (perhaps) set it some tasks.

As before, there are two ways of starting the simulation, one for a single robot and one for two (or many) robots. The new teleop_gui utility can "attach" to any of these robots.

The teleop_gui utility works with mouse (you can move the control knob imitating the joystick) and with arrows. Space bar is for STOP command. Robot moves and turns at different speed (depending on the position of a knob). It also shows the First Person View video from robot's camera.

Changes made to the world

With all my (moderate) respect to Gazebo simulator, it is far from being realistic. Particularly, it can simulate a 0.5 kg robot, but not, to my knowlege, a 50 kg robot, due to problems with friction. Do not be surprised when you see a one meter size robot that weights 0.5kg: it is due to some strange things in Gazebo drivers.

To make world more realistic, I have reduced height of the mountains (an original map is still included, if you want Canyonlands, just comment out the code in topo_map_3d utility, one that divides height by 4.)

The size of a map is also reduced: to do it I have set self.dResolution = 0.5 both in map_editor utility and in topo_map_3d; as the result, initial map (1600x1600 meters) translates to 800x800. The only reason is, it takes robot too long to cross all that wilderness.

Additional changes were made to friction and bouncing properties of the world. Plus, "ground plane" is now completely replaced with the "ground mesh", the landscape the topo_3d utility generated.

Changes made to the robot

The center of gravity was moved down, camera was moved up for better view, and all sensors were moved forward, just to keep them in the same place.

As the result, the robot can move across a very rugged terrain:

(C) snowcron.com, all rights reserved

Please read the disclaimer