Move_base: Why is the robot still using recovery behaviors if they are turned off?
Hi all,
The current move_base launch file that I am using has the following parameters set as follows:
<param name="recovery_behavior_enabled" value="false"/>
<param name="clearing_rotation_allowed" value="false"/>
The wiki page for move_base http://wiki.ros.org/move_base states the following:
These recovery behaviors can be configured using the recoverybehaviors parameter, and disabled using the recoverybehavior_enabled parameter.
So why does the robot still perform clearing rotations if the related parameters are disabled?
Thanks
move_base launch file:
<launch>
<master auto="start"/>
<arg name="no_static_map" default="false"/>
<arg name="base_global_planner" default="navfn/NavfnROS"/>
<!--<arg name="base_global_planner" default="carrot_planner/CarrotPlanner"/>-->
<arg name="base_local_planner" default="base_local_planner/TrajectoryPlannerROS"/>
<!--<arg name="base_local_planner" default="dwa_local_planner/DWAPlannerROS"/>-->
<!--<arg name="base_local_planner" default="eband_local_planner/EBandPlannerROS"/>-->
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<rosparam file="/home/powerbot67/navigation_powerbot/src/powerbot_2dnav/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="/home/powerbot67/navigation_powerbot/src/powerbot_2dnav/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="/home/powerbot67/navigation_powerbot/src/powerbot_2dnav/config/local_costmap_params.yaml" command="load" />
<rosparam file="/home/powerbot67/navigation_powerbot/src/powerbot_2dnav/config/global_costmap_params.yaml" command="load" />
<rosparam file="/home/powerbot67/navigation_powerbot/src/powerbot_2dnav/config/base_local_planner_params.yaml" command="load" />
<param name="base_global_planner" value="$(arg base_global_planner)"/>
<param name="base_local_planner" value="$(arg base_local_planner)"/>
<param name="recovery_behavior_enabled" value="false"/>
<param name="recovery_behaviour_enabled" value="false"/>
<param name="clearing_rotation_allowed" value="false"/>
<param name="planner_frequency" value="40.0"/>
<!--<param name="controller_frequency" value="10.0"/> -->
<!--<param name="planner_patience" value="40.0"/> -->
<!--<param name="controller_patience" value="40.0"/> -->
<!--<param name="oscillation_timeout" value="40"/> -->
<!-- Remap into namespace for cmd_vel_mux switching-->
<remap from="cmd_vel" to="/RosAria/cmd_vel" />
</node>
</launch>
Asked by DanThe on 2016-03-23 16:04:31 UTC
Comments
Do a
rosparam list
and then 2xrosparam get ...
after launching your system please. Just to confirm that the two parameters end up being set properly. Another issue might be that they're set, but in a different namespace.Asked by spmaniato on 2016-03-23 16:41:46 UTC
I will check it out. Thanks!
Asked by DanThe on 2016-03-23 16:49:33 UTC
are you running catkin_make or catkin_make install after changing those parameters? It could also be that your launch files are being read from /devel and not from /src
Asked by Mehdi. on 2016-03-24 09:35:58 UTC
Thanks for your reply @Mehdi. No, I am not running either of catkin_make or catkin_make install. Is this always required after changing a parameter? I was only pressing 'save' after changing parameters in the launch file. I assumed that this is enough to affect a change in parameter. Thanks again
Asked by DanThe on 2016-03-24 13:18:21 UTC
@DanThe Could you update your question with the entire section of your launch file that runs and parametrizes
move_base
please? Also, did you check usingrosparam
? What's the verdict?Asked by spmaniato on 2016-03-24 14:06:57 UTC
rosparam get shows the parameters set correctly : powerbot67@powerbot67-desktop:~/catkin_ws$ rosparam get /move_base/recovery_behavior_enabled false powerbot67@powerbot67-desktop:~/catkin_ws$ rosparam get /move_base/clearing_rotation_allowed false
Asked by DanThe on 2016-03-28 01:50:52 UTC
@spmaniato I edited the question to include move_base.launch
Asked by DanThe on 2016-03-28 01:53:59 UTC
Hmm, in terms of recovery behaviors, the only difference between your setup and mine seems to be that I'm loading those two params from a YAML file. But that shouldn't matter at all ofc. Another difference is that I do provide the list
recovery_behaviors
in addition to setting the params to false.Asked by spmaniato on 2016-03-28 08:21:44 UTC
Try adding something like this:
recovery_behaviors: []
in addition to setting the two params to false. (That's from my YAML file; you'll have to adjust it for your launch file.)Asked by spmaniato on 2016-03-28 09:26:55 UTC
@spmaniato do you mean inserting recovery_behaviors:false in the move_base launch file?
Asked by DanThe on 2016-03-29 06:01:49 UTC
No.
recovery_behaviors
is of type list (see http://wiki.ros.org/move_base#Parameters) Thus, it has to be set to an empty list. Not sure how to do that in the launch file directly. In a YAML file, you would dorecovery_behaviors: []
Asked by spmaniato on 2016-03-29 08:42:44 UTC