ROS Navigate through slope

asked 2020-04-10 03:01:32 -0500

Gerry gravatar image

Basically, we use ROS Navigation Stack. According to those materials we have found so far, it seems that Navigation works well in planar surface. Our environment, however, has some slopes. About generation of the map, actually, we constructed 3D map at first. Then, we did some conversion to get 2D map based on this 3D map. During the conversion procedure, 2D map is also generated with respect to traversability. By this means, it is possible to drive from planar surface through slope provided the robot has such climbing capability. And one more detail, we use RGB-D camera, so PointCloud data is published from the sensor. Now at running time, the global planner can calculate a path from starting point to end via the slope since it is traversable. The problem, however, lies in that when our robot is driving close to the slope, it recognizes the slope as obstacle and starts to re-plan a new path. Except from tuning related parameters in costmap configuration yaml files, I'd like to ask whether there is any other possibility not to recognize slope as obstacle if the global traversable map indicates that the planned path is feasible? Any help/insight is highly appreciated and thanks in advance.

Best regards,

Gerry

edit retag flag offensive close merge delete

Comments

Hi @Gerry,

I do not know if this is feasible in your set up but why not process the PointCloud to filter the floor at a certain height? With PCL you will be able to filter the points above a certain Z.

Weasfas gravatar image Weasfas  ( 2020-04-12 05:54:42 -0500 )edit

Hi, Thanks for your reply. The problem is that there are other obstacles in our environment except slopes. These obstacles must be detected correctly and avoided during navigation. If filtering the floor at certain height, I guess some real obstacles might be unnecessarily skipped at the same time. Actually, there are parameters, min_obstacle_height and max_obstacle_height, which are configurable in costmap obstacle layer that I guess might have similar effect as filtering. To be more concrete, our problem is how to discriminate false positive obstacles (slopes) from those real obstacles in 2D navigation.

Gerry gravatar image Gerry  ( 2020-04-12 19:41:53 -0500 )edit

Yes you are correct, maybe you can use IMU data together with wheel odometry to fuse with robot_localization package and detetc when you are in slopes. Once you localize yourself inside or near a slope you can implement the logic to tell the navigation stack you are in the slope.

I am not an expert in this kind of things maybe more experienced users in the community can help you with this issue but as far as I know, mapping and localization in this slope enviroments is tricky. I was ablew to find this appreachs and comments in this forum: here,here and here. Maybe those help.

Weasfas gravatar image Weasfas  ( 2020-04-13 13:49:51 -0500 )edit

Hi, thanks for your comments again. Similar to your suggestion, our plan is to compare the surrounding environment presented by PointCloud and the traversability map if some obstacle is detected. The traversability map provides information about if something is really an obstacle or a slope that is traversable. We will do some coding work to check if this idea works or not. Our worry is about the performance since this additional procedure definitely incurs some time cost.

Gerry gravatar image Gerry  ( 2020-04-13 19:59:29 -0500 )edit