RUDRA Navigation Stack

Adarsh Gouda
3 min readMay 24, 2022

Setting up rudra_workstation on which the Navigation Stack will be running.

You may refer to the below link to set up the remote workstation. Note that you could also run the Navigation stack on rudra_deck. I prefer running the stack on the rudra_workstation.

Once the remote workstation is set up for ROS. Let’s first install the Navigation Stack:

sudo apt-get install ros-noetic-navigation

To see if it is installed correctly, type:

rospack find amcl

You should see the following output:

/opt/ros/noetic/share/amcl

Let’s create a package just for the navigation:

cd ~/rudra_ws/src/catkin_create_pkg rudra_navigation rospy roscpp std_msgs tf tf2_ros geometry_msgs sensor_msgs nav_msgs move_base map_server amcl

Go inside your rudra_navigation package.

roscd rudra_navigation

Add a folder called param.

mkdir param launch maps rviz

Go back to your package.

roscd rudra_navigation

Open CMakeLists.txt.

gedit CMakeLists.txt

Remove the hashtag on line 5 to ensure that C++11 support is enabled.

Save and close the file.

Now let’s compile the package.

cd ~/rudra_ws/catkin build

We will set up 3 different configurations in which RUDRA can be operated with the Navigation Stack:

  • Navigation in an odometric frame without a map, using only move_base.
  • Generating a map using gmapping.
  • Localization with a known map using amcl.

Open a new terminal window, and move to your rudra_navigation package.

roscd rudra_navigationmkdir launchcd launch

Create 3 launch files.

gedit rudra_navigation.launch
gedit move_base.launch
gedit amcl.launch

Add the following code in all the above 3 launch files:

<launch>

</launch>

Save these files, and close them.

  1. move_base

Notice that move_base is the most fundamental and also the most crucial package in the Navigation stack. It has 2 components — costmaps and planners.

The ROS Navigation Stack uses two costmaps to store information about obstacles in the world.

  1. Global costmap: This costmap is used to generate long term plans over the entire environment….for example, to calculate the shortest path from point A to point B on a map.
  2. Local costmap: This costmap is used to generate short term plans over the environment….for example, to avoid obstacles.

We have to configure these costmaps for our project. We set the configurations in .yaml files which we wil store in ~/rudra_ws/src/rudra_navigation/params folder.

cd ~/rudra_ws/src/rudra_navigation/params

Let’s create a configuration file that will house parameters that are common to both the global and the local costmap. The name of this file will be costmap_common_params.yaml.

gedit costmap_common_params.yaml

Copy the following and close.

To learn more about each of the parameters and what they mean, check out this link.

Let’s create a configuration file that will house parameters for the global costmap. The name of this file will be global_costmap_params.yaml

gedit global_costmap_params.yaml

Save and close the file.

Let’s create a configuration file that will house parameters for the local costmap. The name of this file will be local_costmap_params.yaml.

gedit local_costmap_params.yaml

Save and close the file.

--

--