This package adjusts the velocity of the robot in the presence of humans.
This node sets a navigation target and adjusts the velocity move_base/DWAPlannerROS uses to move the robot to a goal. This is achieved by using the
dynamic reconfigure callback of the DWAPlannerROS to set the max_vel_x
, max_rot_vel
, and max_trans_vel
according
to the distance of the robot to the closest human. As a consequence the robot will not be able to move linear or
angular if a human is too close and will graduately slow down when approaching humans. The rotation speed is only
adjusted to prevent the robot from spinning in place when not being able to move forward because this behaviour was
observed even if the clearing rotation recovery behaviour is turnd off.
This is implemented as an action server.
pedestrian_locations
Default: /pedestrian_localisation/localisations: The topic on which the actual pedestrian locations are published by the pedestrian localisation package (bayes_people_tracker/PeopleTracker)./human_aware_navigation/max_dist
Default: 5.0: maximum distance in metres to a human before altering the speed./human_aware_navigation/min_dist
Default: 1.2: minimum distance in metres to a human. Robot stops at that distance./human_aware_navigation/timeout
Default: 5.0: time in seconds after which speed is reseted if no human is detected any more.
rosrun strands_human_aware_velocity human_aware_planner_velocity.py
To start the actual functionality you have to use the actionlib client architecture,
e.g. rosrun actionlib axclient.py /human_aware_planner_velocities
- goal type: move_base/MoveBaseGoal
A node to adjust the velocity of the robot by taking the /cmd_vel topic and republishing it. In order for this to work you have to remap the /cmd_vel output of your node or navigation stack to the input topic of this node. It relies on the output of the strands_pedestrian_localisation package to provide the actual position of humans in the vicinity of the robot.
pedestrian_location
Default: /pedestrian_localisation/localisations: The topic on which the actual pedestrian locations are published by the pedestrian localisation package (bayes_people_tracker/PeopleTracker).cmd_vel_in
Default: /human_aware_cmd_vel/input/cmd_vel: The topic to which the original /cmd_vel should be published.cmd_vel_out
Default: /cmd_vel: The modified /cmd_vel.threshold
Default: 3: Threshold in seconds to determine which person detections from the cache are too old to use.max_speed
Default: 0.7: The maximum speed the robot should achiev.max_dist
Default: 5.0: The distance at which the node starts taking detections of humans into account.min_dist
Default: 1.5: The cmd_vel will be 0.0 if there is a person closer to the robot than this.
rosrun strands_human_aware_velocity human_aware_cmd_vel [_parameter:=value]