Robotics StackExchange | Archived questions

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 2x rosparam 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 using rosparam? 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 do recovery_behaviors: []

Asked by spmaniato on 2016-03-29 08:42:44 UTC

Answers