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

geoporus's profile - activity

2021-07-22 12:25:59 -0500 received badge  Famous Question (source)
2021-05-25 06:09:01 -0500 edited answer move_base global costmap is not updated when removing an object/obstacle from the environment

In the meantime I have managed to find the solution for my problem by using the information found in this question. Wha

2021-05-25 06:07:54 -0500 received badge  Notable Question (source)
2021-04-08 15:50:21 -0500 received badge  Popular Question (source)
2021-04-08 08:18:17 -0500 received badge  Self-Learner (source)
2021-04-08 02:54:44 -0500 marked best answer move_base global costmap is not updated when removing an object/obstacle from the environment

Hello everyone!

I am currently working on a project using the ROS 1 navigation stack and for the past few weeks I have been struggling with this issue regarding the proper updating of move_base's global costmap when removing an obstacle from the static map. In this situation the mapping is done using the slam-toolbox package. The issue appears when switching from mapping mode to localization mode. While mapping, all the obstacles are marked in the static map and in turn the global costmap is tracking all the changes in the static map. Once I switch to localization mode, and no more changes are brought to the static map, if i remove one obstacle from the environment and my robot is close to it (the robot has 4 cameras as observation sources) I would expect for that obstacle to be cleared from the global costmap, at least as long as the cameras can see that it is not there, even though the obstacle would still be marked in the static map. I believe that the issue is related to some poor configuration of the move_base costmaps but no new combination of parameters or new configuration seems to lead me to the desired behavior.

I am attaching here the current configuration I use for my costmaps and some screenshots with the issue.

Costmaps configuration:

costmap_common.yaml

footprint: [[-0.475, -0.34], [-0.475, 0.34], [0.475, 0.34], [0.475, -0.34]]
footprint_padding: 0.02

robot_base_frame: base_footprint
update_frequency: 8.0  # Default 4.0
publish_frequency: 6.0  # Default 3.0
transform_tolerance: 0.5

resolution: 0.05

#always_send_full_costmap: true

inflation:
    inflation_radius: 1.0

#layer definitions
static:
    map_topic: /map
    subscribe_to_updates: true

virtual_walls_static_map:
    map_topic: /virtual_walls_map
    subscribe_to_updates: true
    use_maximum: true  
    track_unknown_space: false 

obstacles_laser:
    observation_sources: ultrasonics_warn ultrasonics_alert camera_1_obstacles camera_2_obstacles camera_3_obstacles camera_4_obstacles camera_1_laser camera_2_laser camera_3_laser camera_4_laser
    camera_1_laser: { data_type: LaserScan, clearing: true, marking: true, topic: /camera_1/laser_scan, obstacle_range: 5.5, raytrace_range: 6.0 }
    camera_2_laser: { data_type: LaserScan, clearing: true, marking: true, topic: /camera_2/laser_scan, obstacle_range: 5.5, raytrace_range: 6.0 }
    camera_3_laser: { data_type: LaserScan, clearing: true, marking: true, topic: /camera_3/laser_scan, obstacle_range: 5.5, raytrace_range: 6.0 }
    camera_4_laser: { data_type: LaserScan, clearing: true, marking: true, topic: /camera_4/laser_scan, obstacle_range: 5.5, raytrace_range: 6.0 }
    camera_1_obstacles: {data_type: PointCloud2, clearing: true, marking: true, topic: /camera_1/obstacles_cloud, obstacle_range: 5.5, raytrace_range: 6.0}
    camera_2_obstacles: {data_type: PointCloud2, clearing: true, marking: true, topic: /camera_2/obstacles_cloud, obstacle_range: 5.5, raytrace_range: 6.0}
    camera_3_obstacles: {data_type: PointCloud2, clearing: true, marking: true, topic: /camera_3/obstacles_cloud, obstacle_range: 5.5, raytrace_range: 6.0}
    camera_4_obstacles: {data_type: PointCloud2, clearing: true, marking: true, topic: /camera_4/obstacles_cloud, obstacle_range: 5.5, raytrace_range: 6.0}
    ultrasonics_warn: {data_type: PointCloud, clearing: false, marking: true, topic: /ultrasonic/warn_point_cloud/combined, obstacle_range: 5.5, raytrace_range: 6.0}
    ultrasonics_alert: {data_type: PointCloud, clearing: false, marking: true, topic: /ultrasonic/alert_point_cloud/combined, obstacle_range: 5.5, raytrace_range: 6.0}
    #laser: {data_type: LaserScan, clearing: true, marking: true, topic: camera/laser_scan, inf_is_valid: true, obstacle_range: 5.5, raytrace_range: 6.0}
    #camera_1_ground: {data_type: PointCloud2, clearing: false, marking: true, topic: /camera_1/ground_cloud, obstacle_range: 5.5, raytrace_range: 6.0}
    #camera_2_ground: {data_type: PointCloud2, clearing: false ...
(more)
2021-04-08 02:53:34 -0500 edited question move_base global costmap is not updated when removing an object/obstacle from the environment

move_base global costmap is not updated when removing an object/obstacle from the environment Hello everyone! I am curr

2021-04-08 02:53:05 -0500 edited question move_base global costmap is not updated when removing an object/obstacle from the environment

move_base global costmap is not updated when removing an object/obstacle from the environment Hello everyone! I am curr

2021-04-08 02:52:34 -0500 answered a question move_base global costmap is not updated when removing an object/obstacle from the environment

In the meantime I have managed to find the solution for my problem by using the information found in this question. Wha

2021-04-08 02:52:34 -0500 received badge  Rapid Responder (source)
2021-04-08 02:44:50 -0500 commented question move_base global costmap is not updated when removing an object/obstacle from the environment

Coming back with an update, the information in the thread linked above helped me in fixing the issue! Thanks @tryan for

2021-04-08 02:44:50 -0500 received badge  Commentator
2021-04-08 02:44:00 -0500 commented answer static_layer gets deleted by obstacle_layer in global_costmap

thanks a lot for all the info and answers you have guys posted in this thread!

2021-04-08 01:55:19 -0500 commented question move_base global costmap is not updated when removing an object/obstacle from the environment

Hey @tryan! Thanks for the tip...checking it now to see maybe the information there can help me!

2021-04-07 11:52:51 -0500 asked a question move_base global costmap is not updated when removing an object/obstacle from the environment

move_base global costmap is not updated when removing an object/obstacle from the environment Hello everyone! I am curr

2021-01-04 06:39:02 -0500 received badge  Self-Learner (source)
2020-11-29 11:21:36 -0500 received badge  Famous Question (source)
2020-11-27 10:31:51 -0500 marked best answer How to call move_base's clear_costmap_recovery functionality manually from Python

Hello everyone!

This is my first question ever on ROS answers so please go easy on me :).

I would like to know how could I manually call the clear_costmap_recovery functionality with a custom obstacles layer from inside a custom package I developed for ROS Melodic on Ubuntu 18.04, in Python.

To give a bit of background to my specific situation, I am working on a project using the ROS 1 navigation stack which required some way of creating "virtual walls/obstacles" for the robot which would then define "artificial no-go zones" on the map for it. I managed to achieve this by implementing a package which allows me to add custom PointCloud obstacles with different shapes to a custom layer on the costmaps.

The issue I am now facing is that when I am removing those obstacles from the map, they still stick to the local/global costmaps even though they have the "clearing" parameter set to True. This is problematic for me as I would like to have them disappear entirely once I am not publishing the corresponding PointCloud to the specific topic anymore.

What worked for me thus far is I have set a custom clearing behavior using the clear_costmap_recovery functionality from move_base, to only clear my virtual obstacles layer when move_base cannot plan a specific path due to a goal being posted inside one of these "ghost" virtual obstacles. When this happens the recovery behavior manages to clear the areas that remain in the costmaps.

What I would like to do now is to somehow call the clear_costmap_recovery behavior for my custom obstacle layer from inside my virtual_walls package whenever I delete an obstacle. I have been unable to find a tutorial or some piece of info that would point me to a good solution in this direction. For now I am calling the clear_costmaps service in its place but i am not sure if this is truly okay for my situation. I would just want to be able to clear that specific layer, programmatically, from inside my package.

Sorry for the long question, if any extra-info is needed please let me know and I will update my question! Hopefully there is some kind of solution for my issue!

Thanks!

EDIT 1: I would add also some RVIZ screenshots to further clarify this issue but for now I am unable to due to low karma points .

2020-11-27 10:31:51 -0500 received badge  Scholar (source)
2020-11-27 10:31:39 -0500 answered a question How to call move_base's clear_costmap_recovery functionality manually from Python

Hello everyone! Since I posted this question I have managed to somehow find a workaround for my problem. Unfortunately,

2020-11-18 02:51:30 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

@JackB yeah, unfortunately it seems like, at least for ROS1, the python support of the whole navigation stack is not rea

2020-11-18 02:46:50 -0500 received badge  Enthusiast
2020-11-17 10:08:39 -0500 received badge  Notable Question (source)
2020-11-17 09:52:50 -0500 received badge  Teacher (source)
2020-11-17 09:10:33 -0500 received badge  Student (source)
2020-11-17 07:28:59 -0500 received badge  Organizer (source)
2020-11-17 07:01:23 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

Hey @JackB, thanks for your reply! As I have also stated in my question, I already use the clear_costmaps service as a t

2020-11-17 05:49:01 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The expected behavior that I am describing in the comment above happens when I define a custom recovery behavior for jus

2020-11-17 05:37:57 -0500 answered a question Names of topics

In a way, all of the string is considered the name of that topic. So for example if you would want to querry what is pub

2020-11-17 05:37:57 -0500 received badge  Rapid Responder (source)
2020-11-17 05:03:56 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The expected behavior that I am describing in the comment above happens when I define a custom recovery behavior for jus

2020-11-17 04:58:05 -0500 edited question How to call move_base's clear_costmap_recovery functionality manually from Python

How to call move_base's clear_costmap_recovery functionality manually from Python Hello everyone! This is my first ques

2020-11-17 04:57:53 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The behavior that I am describing above seems to happen when I define a custom recovery behavior for just the custom obs

2020-11-17 04:57:32 -0500 edited question How to call move_base's clear_costmap_recovery functionality manually from Python

How to call move_base's clear_costmap_recovery functionality manually from Python Hello everyone! This is my first ques

2020-11-17 04:57:32 -0500 received badge  Editor (source)
2020-11-17 04:56:28 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The behavior that I am describing above seems to happen when I define a custom recovery behavior for just the custom obs

2020-11-17 04:54:50 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The behavior that I am describing above seems to happen when I define a custom recovery behavior for just the custom ob

2020-11-17 04:54:35 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The behavior that I am describing above seems to happen when I define a custom recovery behavior for just the custom ob

2020-11-17 04:53:54 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

The behavior that I am describing above seems to happen when I define a custom recovery behavior for just the custom ob

2020-11-17 04:47:58 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

Hello @tryan, thanks for the reply! While I believe your answer lead me to looking into some valuable piece of info rega

2020-11-17 03:04:03 -0500 commented answer How to call move_base's clear_costmap_recovery functionality manually from Python

Hey @JackB, thanks for your reply! As I have also stated in my question, I already use the clear_costmaps service as a t

2020-11-17 02:59:13 -0500 received badge  Popular Question (source)
2020-11-16 08:58:06 -0500 edited question How to call move_base's clear_costmap_recovery functionality manually from Python

How to call move_base's clear_costmap_recovery functionality manually from Python Hello everyone! This is my first ques

2020-11-16 08:46:11 -0500 asked a question How to call move_base's clear_costmap_recovery functionality manually from Python

How to call move_base's clear_costmap_recovery functionality manually from Python Hello everyone! This is my first ques

2020-11-16 08:27:42 -0500 commented question How does recovery behavior get triggered in navigation?

Hey did you find anything after your investigations? I am trying to run clear_costmap_recovery from move_base from pytho