Ros navigation in 5 days (common q)

first , why there is nothing being published on the odom topic as the robot moves?
second, when i use the make_plan service can i visualize the plan using rviz and what topic is to be visualized?
third , what does visualize potential and planner_window means i visualized it using point2 cloud but still didn’t get it ?
fourth , how can i know the base_footprint of my robot and what exactly it means ?
sixth , what is the difference between the parameters of the TrajectoryPlannerROS and DWAPlannerROS as they both have a vel and acc parameter?

Hi @80601 ,

Are you sure you have subscribed to /odom correctly? Does rostopic echo /odom -n1 produce any output?

Yes, you can visualize the path created. In Rviz use “Path” as Display Element. Choose the global_plan of your global planner as the topic to use.

To visualize potential you need to add a “PointCloud” to your Display Elements with topic trajectory_cloud of your local planner. To visualize planner_window, you need to add “Map” in Display Elements, set it to Costmap view and set topic to costmap of your global planner.

base_footprint is the representation of the robot in the “world” frame which has its center located in the geometric center of the robot shape in the “world” frame. This point moves when the robot moves.
Refer this image for better understanding:

Yes, TrajectoryPlanner and DWAPlanner share almost all of the parameters.
The difference between the two methods are discussed here:

DWA differs from Trajectory Rollout in how the robot’s control space is sampled. Trajectory Rollout samples from the set of achievable velocities over the entire forward simulation period given the acceleration limits of the robot, while DWA samples from the set of achievable velocities for just one simulation step given the acceleration limits of the robot. This means that DWA is a more efficient algorithm because it samples a smaller space, but may be outperformed by Trajectory Rollout for robots with low acceleration limits because DWA does not forward simulate constant accelerations. In practice however, we find DWA and Trajectory Rollout to perform comparably in all our tests and recommend use of DWA for its efficiency gains.

Everything about visualization in RViz is clearly discussed in the course notes. Refer them back to know them again.


i found that they are using different topic called /odometry/filtered

solved , thanks.

i did as you said but nothing changed so what does it even mean?

do you mean the local costmap?

so when i am using navigation or so how can i set the values of the footprint is it saved in some kind of file like urdf

so as both planners are almost the same why putting both parameters in the common_costmap file
as i know from the course it said the the dwa is an enhanced version of the trajectory_planner

Hi @80601 ,

Then that is the one to use. Try rostopic echo ... on that topic and see if it is the same as what you would get with /odom.


I am not sure if it uses PointCloud or PointCloud2, but you should be able to see the output in one of them. You will not get it in both, just one of them. I am guessing PC2.

You have mentioned planner_window, planner means global planner, controller means local planner.
So to see planner window, set width and height parameters in your global costmap params yaml file. The window size should be atleast 4 times the size of local planner.
In simple words, if local planner width and height is 0.5 and 0.5, global planner width and height should be 2.0, 2.0 at least.

I hope you are not confusing robot_footprint and base_footprint.
You would define robot_footprint in common_costmap_params.
base_footprint is defined in the navigation package. I am not exactly sure where.
I believe, you will not be able to find base_footprint in urdf files.
Navigation package generates the base_footprint. [This is what I know so far, I may be wrong].

I remember from the course, the DWA planner and Trajectory Planner are not defined in common costmap params. It would be defined in a separate local planner params file.
Technically, you can define everything in one single yaml file under proper topic names, like this:

# global planner params

# local planner params
  param: value
  param: value
  param: value
  param: value

# other params

You put it in separate yaml files because you have namespace for the global and local planners.
You will find this in your launch file, when you load the yaml file, you will find a ns=... tag.
It is better to keep them separate than in one single file.

I hope your doubt(s) are clarified.