Can social_navigation_layer be used in local avoidance by DWA?
I am trying to use social costmap in my project . Unlike the examples showed in people where a person is detected by 2D laser scan, a simulated topic /tracked_persons about the pose of people is sent to a simulated robot controlled by move_base. My local_costmap_params.yaml is listed below.
local_costmap:
publish_voxel_map: true
global_frame: odom
robot_base_frame: base_link
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 6.0
height: 6.0
resolution: 0.05 # was 0.025
plugins:
- {name: people_map, type: "social_navigation_layers::ProxemicLayer"}
#publish_frequency: 10.0
people_map:
observation_sources: tracked_persons
tracked_persons: {data_type: TrackedPersons, sensor_frame: /base_link, topic: /tracked_persons}
EDIT1: An example where a robot is planned by move_base goint through the local area with costmap constructed by simulated tracked persons is showed in following two images below.
In above two images, the areas(i.e. local costmap) consisting of black blocks are simulated tracked persons. This local costmap is constructed with parameter cutoff=126.0
and amplitude=254.0
in social navigation layer.
The coloured axes is the robot's TF. The blue line ahead of the red axis ( I am sorry it is not so clear) is the local plan of DWAPlannerROS.
The first image was captured at the time when a robot was about to go through the tracked persons. The second image was captured at the time when a robot just has been gone through the tracked persons. The robot walked over the costmap (black areas) with non-zero values.
To my knowledge, Dynamic window approach(DWA) is a collision avoidance method directly relying on costmap_2d, that is why I don't use laser scan to generate local cost map but simulated tracked person messages. By using social navigation layer, a local costmap can be constructed from person messages. Then a robot can avoid people around by using DWA running on the constructed costmap.
However, from the images above, the local path plan (i.e. local collision avoidance) generated by dwa local planner is also over the area with non-zero costmap.
I think the robot should avoid these grey areas and choose a path going through white areas( with zero costmap). So I am confused that if DWA can avoid people around with social navigation layer.
Thank you. I quite expect that the author of people package @David Lu can answer my question.
EDIT2: The first image was replaced by an image with red global path plan, The global path plan was generated by default navfn method. Additionally, the static map is with 1 resolution, each grid in the image is with 1m X 1m. The blacked blocks in local costmap are generated by moving tracked persons.
Can you explain what exactly is in the picture? Where is the robot and what are the two paths shown?
Also, are you using a custom compiled version of the social layer?
I only added a callback function to deal with topic /tracked_persons. The incoming messages about people are still stored in people_list in social_layer.cpp
Thank you for your attention! I just re-edit the content, please give me great advices.
Where is the global path in the two images?
Please see the updated first image. Thanks.