ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
2

Running Turtlebot Navigation Stack on multiple floors

asked 2021-07-07 05:18:48 -0500

kidRobot gravatar image

updated 2021-07-08 02:34:23 -0500

I currently have a Gazebo world that I generated with two levels. Level 9 (z=0) and Level 10 (z= 20). image description image description

When I am using the navigation stack on level 9, the local costmap and global costmap is being generated. It is able to navigate successfully.

However, when I move to level 10, the local costmap is not being generated and the robot relies purely on the global costmap to avoid obstacles. Is there a way to fix this. I am using the turtlebot simulation stack found on github. Would appreciate any pointers as I have started playing with the local cost params but that does not seem to be affecting anything.

edit retag flag offensive close merge delete

Comments

Possible partial/whole duplicate of https://answers.ros.org/question/2468...

130s gravatar image 130s  ( 2021-07-07 21:09:07 -0500 )edit

Unfortunately those implementations don't seem to work right now and don't solve my problem. My problem is specifically with the local costmap not updating on floors that are not set at z=0 in gazebo

kidRobot gravatar image kidRobot  ( 2021-07-08 02:11:00 -0500 )edit

Which package are you currently running for transistions between floors/level specific navigation?

prince gravatar image prince  ( 2021-07-08 03:54:15 -0500 )edit

Do you need this to work for real physical robots, or is this simulation-only?

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-07-09 06:27:49 -0500 )edit

Please edit your question and append your config for the local costmap. Use the 101010 button to format yaml text.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-07-09 06:45:06 -0500 )edit

Have you figured out how to get this to work?

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-07-16 06:02:23 -0500 )edit

Just managed to get it to work, have added the answer below.

kidRobot gravatar image kidRobot  ( 2021-08-13 00:42:40 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2021-08-13 00:45:35 -0500

kidRobot gravatar image

Hi, So I think I have found the solution, although it seems to be a patch more than an actual solution. As I said before, if the z-coordinate of the robot was 0, there was no problem, but when the robot went to a certain level, the scans were not returning anything despite obstacles being present.

The patch was essentially to add a "tf_fixer" where I set the z-coordinate of the robot to always be zero, regardless of the level it was on. That seemed to have fixed the problem, will continue to edit this answer if I come across a better solution.

edit flag offensive delete link more
1

answered 2021-07-07 10:37:18 -0500

Mike Scheutzow gravatar image

There is a reason that the move_base navigation stack is called "2.5D" and not "3D": much of the code assumes that the robot's position is uniquely defined by (x, y, theta). It has no concept of "z". For some scenarios, you can fake it: either 1) put both levels on a single "flat" map (so x,y coord is unique), OR 2) load a new map & costmap if the robot switches "level".

edit flag offensive delete link more

Comments

Hi, but even after loading a new map everytime it switches floors, the global costmap is able to update itself but the local costmap is not

kidRobot gravatar image kidRobot  ( 2021-07-07 20:18:16 -0500 )edit

You will need to move the robot to different floor in gazebo for update of the costmap. Please check whether the sensor data is being published in correct frames.

prince gravatar image prince  ( 2021-07-08 03:51:02 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2021-07-07 05:18:48 -0500

Seen: 122 times

Last updated: Aug 13 '21