naturerobots / move_base_flex

Move Base Flex: a backwards-compatible replacement for move_base
https://uos.github.io/mbf_docs/
BSD 3-Clause "New" or "Revised" License
457 stars 156 forks source link

No plugin loaded with the given name "navfn/NavfnROS" #240

Closed dean4ta closed 4 years ago

dean4ta commented 4 years ago

Background

Hi, I am trying to use move_base_flex to replace move_base so I am using move_base_flex with the move_base_legacy_relay node.

Problem Statement

When I publish a /move_base_simple/goal message I am running into an error: [ERROR] ... The last action goal to "get_path" has been REJECTED and a warning: [ WARN] ... No plugin loaded with the given name "navfn/NavfnROS"!

Initial Debug Notes

  1. Locating the package navfn When I run: rospack find navfn this returns /opt/ros/melodic/share/navfn
  2. I am able to use move_base fine which also relies on the navfn package

Environment

Ubuntu 18 Melodic Robot is Simulated Mapping and Localization with slam_toolbox

Output

Here is the entire output from running the move_base_flex node:

... logging to /root/.ros/log/ec5c7112-2396-11eb-818a-04ed33dd081a/roslaunch-hopper-1849.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
]2;/root/catkin_ws/src/thor_robot_launch/launch/simple_mbf_launch.launch
started roslaunch server http://hopper:43105/

SUMMARY
========

CLEAR PARAMETERS
 * /global_costmap/map_server/

PARAMETERS
 * /move_base_flex/GlobalPlanner/allow_unknown: False
 * /move_base_flex/GlobalPlanner/cost_factor: 0.55
 * /move_base_flex/GlobalPlanner/default_tolerance: 0.0
 * /move_base_flex/GlobalPlanner/lethal_cost: 253
 * /move_base_flex/GlobalPlanner/neutral_cost: 66
 * /move_base_flex/GlobalPlanner/old_navfn_behaviour: False
 * /move_base_flex/GlobalPlanner/use_dijkstra: True
 * /move_base_flex/GlobalPlanner/use_grid_path: False
 * /move_base_flex/GlobalPlanner/use_quadratic: False
 * /move_base_flex/GlobalPlanner/visualize_potential: True
 * /move_base_flex/controllers: [{'type': 'eband_...
 * /move_base_flex/dwa/acc_lim_theta: 10.0
 * /move_base_flex/dwa/acc_lim_x: 0.7
 * /move_base_flex/dwa/acc_lim_y: 0.1
 * /move_base_flex/dwa/angular_sim_granularity: 0.025
 * /move_base_flex/dwa/forward_point_distance: 0.0
 * /move_base_flex/dwa/global_frame_id: map
 * /move_base_flex/dwa/goal_distance_bias: 40.0
 * /move_base_flex/dwa/holonomic_robot: False
 * /move_base_flex/dwa/max_scaling_factor: 0.2
 * /move_base_flex/dwa/max_vel_theta: 2.0
 * /move_base_flex/dwa/max_vel_trans: 2.12
 * /move_base_flex/dwa/max_vel_x: 2.0
 * /move_base_flex/dwa/max_vel_y: 0.0
 * /move_base_flex/dwa/min_vel_theta: 0.4
 * /move_base_flex/dwa/min_vel_trans: 0.1
 * /move_base_flex/dwa/min_vel_x: 0.0
 * /move_base_flex/dwa/min_vel_y: 0.0
 * /move_base_flex/dwa/occdist_scale: 0.2
 * /move_base_flex/dwa/oscillation_reset_dist: 0.1
 * /move_base_flex/dwa/path_distance_bias: 0.1
 * /move_base_flex/dwa/publish_cost_grid_pc: True
 * /move_base_flex/dwa/publish_traj_pc: True
 * /move_base_flex/dwa/scaling_speed: 1.0
 * /move_base_flex/dwa/sim_granularity: 0.025
 * /move_base_flex/dwa/sim_time: 2.0
 * /move_base_flex/dwa/stop_time_buffer: 0.3
 * /move_base_flex/dwa/theta_stopped_vel: 0.1
 * /move_base_flex/dwa/trans_stopped_vel: 0.1
 * /move_base_flex/dwa/vtheta_samples: 20
 * /move_base_flex/dwa/vx_samples: 20
 * /move_base_flex/dwa/vy_samples: 1
 * /move_base_flex/dwa/xy_goal_tolerance: 0.2
 * /move_base_flex/dwa/yaw_goal_tolerance: 0.4
 * /move_base_flex/eband/Ctrl_Rate: 20.0
 * /move_base_flex/eband/bubble_velocity_multiplier: 2.0
 * /move_base_flex/eband/costmap_weight: 10.0
 * /move_base_flex/eband/differential_drive: True
 * /move_base_flex/eband/disallow_hysteresis: False
 * /move_base_flex/eband/eband_equilibrium_approx_max_recursion_depth: 3
 * /move_base_flex/eband/eband_equilibrium_relative_overshoot: 0.75
 * /move_base_flex/eband/eband_external_force_gain: 3.0
 * /move_base_flex/eband/eband_internal_force_gain: 2.0
 * /move_base_flex/eband/eband_min_relative_overlap: 0.7
 * /move_base_flex/eband/eband_significant_force_lower_bound: 0.15
 * /move_base_flex/eband/eband_tiny_bubble_distance: 0.01
 * /move_base_flex/eband/eband_tiny_bubble_expansion: 0.01
 * /move_base_flex/eband/in_place_trans_vel: 0.0
 * /move_base_flex/eband/k_damp: 3.5
 * /move_base_flex/eband/k_prop: 4.0
 * /move_base_flex/eband/marker_lifetime: 0.5
 * /move_base_flex/eband/max_acceleration: 0.2
 * /move_base_flex/eband/max_rotational_acceleration: 0.3
 * /move_base_flex/eband/max_translational_acceleration: 0.4
 * /move_base_flex/eband/max_vel_lin: 1.1
 * /move_base_flex/eband/max_vel_th: 1.2
 * /move_base_flex/eband/min_in_place_vel_th: 0.05
 * /move_base_flex/eband/min_vel_lin: 0.0
 * /move_base_flex/eband/min_vel_th: 0.0
 * /move_base_flex/eband/num_iterations_eband_optimization: 4
 * /move_base_flex/eband/rot_stopped_vel: 0.01
 * /move_base_flex/eband/rotation_correction_threshold: 0.5
 * /move_base_flex/eband/rotation_threshold_multiplier: 1.0
 * /move_base_flex/eband/trans_stopped_vel: 0.01
 * /move_base_flex/eband/virtual_mass: 100.0
 * /move_bas[ INFO] [1605042580.355131574, 67.532000000]: local_costmap: Using plugin "static_map"
[ INFO] [1605042580.360347000, 67.537000000]: Requesting the map...
[ INFO] [1605042580.567732094, 67.739000000]: Resizing static layer to 276 X 415 at 0.050000 m/pix
[ INFO] [1605042580.670515133, 67.839000000]: Received a 276 X 415 map at 0.050000 m/pix
[ INFO] [1605042580.674514669, 67.843000000]: local_costmap: Using plugin "obstacles"
[ INFO] [1605042580.680055500, 67.846000000]:     Subscribed to Topics: sick_tim
[ INFO] [1605042580.707662660, 67.876000000]: local_costmap: Using plugin "inflation"
[ INFO] [1605042580.751172411, 67.915000000]: global_costmap: Using plugin "static_layer"
[ INFO] [1605042580.756923148, 67.921000000]: Requesting the map...
[ INFO] [1605042580.759411755, 67.924000000]: Resizing costmap to 276 X 415 at 0.050000 m/pix
[ INFO] [1605042580.861724173, 68.024000000]: Received a 276 X 415 map at 0.050000 m/pix
[ INFO] [1605042580.865386956, 68.028000000]: global_costmap: Using plugin "obstacle_layer"
[ INFO] [1605042580.869996627, 68.032000000]:     Subscribed to Topics: laser_scan_sensor
[ INFO] [1605042580.887703202, 68.047000000]: global_costmap: Using plugin "inflation_layer"
[ INFO] [1605042580.972436299, 68.129000000]: The plugin with the type "global_planner/GlobalPlanner" has been loaded successfully under the name "GlobalPlanner".
[ INFO] [1605042581.033787411, 68.188000000]: The plugin with the type "eband_local_planner/EBandPlannerROS" has been loaded successfully under the name "eband".
[ INFO] [1605042581.041287757, 68.196000000]: Sim period is set to 0.05
[ INFO] [1605042581.103140273, 68.255000000]: The plugin with the type "dwa_local_planner/DWAPlannerROS" has been loaded successfully under the name "dwa".
[ INFO] [1605042581.171586755, 68.322000000]: odom received!
[ INFO] [1605042597.854262226, 83.920000000]: Shutdown costmap navigation server.
[ INFO] [1605042597.854402646, 83.920000000]: Cancel all goals for "get_path".
[ INFO] [1605042597.854553970, 83.920000000]: Cancel all goals for "exe_path".
[ INFO] [1605042597.854661435, 83.920000000]: Cancel all goals for "recovery".
[ INFO] [1605042597.854828734, 83.920000000]: Stopping local and global costmap for shutdown
e_flex/eband/xy_goal_tolerance: 0.2
 * /move_base_flex/eband/yaw_goal_tolerance: 0.2
 * /move_base_flex/global_costmap/footprint: [[0.17, 0.25], [-...
 * /move_base_flex/global_costmap/global_frame: map
 * /move_base_flex/global_costmap/inflation_radius: 0.55
 * /move_base_flex/global_costmap/laser_scan_sensor/clearing: True
 * /move_base_flex/global_costmap/laser_scan_sensor/data_type: LaserScan
 * /move_base_flex/global_costmap/laser_scan_sensor/marking: True
 * /move_base_flex/global_costmap/laser_scan_sensor/sensor_frame: velodyne
 * /move_base_flex/global_costmap/laser_scan_sensor/topic: /scan
 * /move_base_flex/global_costmap/map_topic: /map
 * /move_base_flex/global_costmap/observation_sources: laser_scan_sensor
 * /move_base_flex/global_costmap/obstacle_range: 2.5
 * /move_base_flex/global_costmap/raytrace_range: 3.0
 * /move_base_flex/global_costmap/robot_base_frame: base_link
 * /move_base_flex/global_costmap/static_map: True
 * /move_base_flex/global_costmap/update_frequency: 7.0
 * /move_base_flex/local_costmap/footprint: [[0.17, 0.25], [-...
 * /move_base_flex/local_costmap/global_frame: odom
 * /move_base_flex/local_costmap/height: 6.0
 * /move_base_flex/local_costmap/inflation/inflation_radius: 0.35
 * /move_base_flex/local_costmap/inflation_radius: 0.55
 * /move_base_flex/local_costmap/laser_scan_sensor/clearing: True
 * /move_base_flex/local_costmap/laser_scan_sensor/data_type: LaserScan
 * /move_base_flex/local_costmap/laser_scan_sensor/marking: True
 * /move_base_flex/local_costmap/laser_scan_sensor/sensor_frame: velodyne
 * /move_base_flex/local_costmap/laser_scan_sensor/topic: /scan
 * /move_base_flex/local_costmap/observation_sources: laser_scan_sensor
 * /move_base_flex/local_costmap/obstacle_range: 2.5
 * /move_base_flex/local_costmap/obstacles/max_obstacle_height: 0.4
 * /move_base_flex/local_costmap/obstacles/observation_sources: sick_tim
 * /move_base_flex/local_costmap/obstacles/publish_voxel_map: True
 * /move_base_flex/local_costmap/obstacles/sick_tim/clearing: True
 * /move_base_flex/local_costmap/obstacles/sick_tim/data_type: LaserScan
 * /move_base_flex/local_costmap/obstacles/sick_tim/marking: True
 * /move_base_flex/local_costmap/obstacles/sick_tim/sensor_frame: laser
 * /move_base_flex/local_costmap/obstacles/sick_tim/topic: scan
 * /move_base_flex/local_costmap/obstacles/z_resolution: 0.05
 * /move_base_flex/local_costmap/obstacles/z_voxels: 10
 * /move_base_flex/local_costmap/plugins: [{'type': 'costma...
 * /move_base_flex/local_costmap/publish_frequency: 10.0
 * /move_base_flex/local_costmap/raytrace_range: 3.0
 * /move_base_flex/local_costmap/resolution: 0.05
 * /move_base_flex/local_costmap/robot_base_frame: base_link
 * /move_base_flex/local_costmap/rolling_window: True
 * /move_base_flex/local_costmap/static_map: False
 * /move_base_flex/local_costmap/update_frequency: 10.0
 * /move_base_flex/local_costmap/width: 6.0
 * /move_base_flex/planner_max_retries: 3
 * /move_base_flex/planner_patience: 10.0
 * /move_base_flex/planners: [{'type': 'global...
 * /move_base_flex/tf_timeout: 1.5
 * /rosdistro: melodic
 * /rosversion: 1.14.9

NODES
  /
    move_base_flex (mbf_costmap_nav/mbf_costmap_nav)
    move_base_legacy_relay (mbf_costmap_nav/move_base_legacy_relay.py)
  /global_costmap/
    map_server (map_server/map_server)

ROS_MASTER_URI=http://localhost:11311

process[global_costmap/map_server-1]: started with pid [1955]
process[move_base_flex-2]: started with pid [1956]
process[move_base_legacy_relay-3]: started with pid [1962]
[ WARN] [1605042651.495310662, 132.787000000]: local_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided
[ INFO] [1605042651.496434886, 132.788000000]: local_costmap: Using plugin "static_map"
[ INFO] [1605042651.502277076, 132.794000000]: Requesting the map...
[ INFO] [1605042651.811956705, 133.096000000]: Resizing static layer to 276 X 415 at 0.050000 m/pix
[ INFO] [1605042651.912801802, 133.196000000]: Received a 276 X 415 map at 0.050000 m/pix
[ INFO] [1605042651.915865379, 133.199000000]: local_costmap: Using plugin "obstacles"
[ INFO] [1605042651.918725354, 133.202000000]:     Subscribed to Topics: sick_tim
[ INFO] [1605042651.938458030, 133.221000000]: local_costmap: Using plugin "inflation"
[ WARN] [1605042651.962606714, 133.245000000]: global_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided
[ INFO] [1605042651.963414245, 133.246000000]: global_costmap: Using plugin "static_layer"
[ INFO] [1605042651.966500464, 133.249000000]: Requesting the map...
[ INFO] [1605042651.967731929, 133.251000000]: Resizing costmap to 276 X 415 at 0.050000 m/pix
[ INFO] [1605042652.069386860, 133.351000000]: Received a 276 X 415 map at 0.050000 m/pix
[ INFO] [1605042652.071877058, 133.353000000]: global_costmap: Using plugin "obstacle_layer"
[ INFO] [1605042652.075639131, 133.357000000]:     Subscribed to Topics: laser_scan_sensor
[ INFO] [1605042652.087482833, 133.367000000]: global_costmap: Using plugin "inflation_layer"
[ INFO] [1605042652.147332810, 133.428000000]: The plugin with the type "global_planner/GlobalPlanner" has been loaded successfully under the name "GlobalPlanner".
[ INFO] [1605042652.188051383, 133.467000000]: The plugin with the type "eband_local_planner/EBandPlannerROS" has been loaded successfully under the name "eband".
[ INFO] [1605042652.192884577, 133.472000000]: Sim period is set to 0.05
[ INFO] [1605042652.234114387, 133.513000000]: The plugin with the type "dwa_local_planner/DWAPlannerROS" has been loaded successfully under the name "dwa".
[ WARN] [1605042652.234439491, 133.513000000]: No recovery_behaviors plugins configured! - Use the param "recovery_behaviors", which must be a list of tuples with a name and a type.
[ INFO] [1605042652.380946673, 133.656000000]: odom received!
[ WARN] [1605042765.372220516, 238.766000000]: No plugin loaded with the given name "navfn/NavfnROS"!                                                                                                                                         
[ERROR] [1605042765.372962640, 238.767000000]: The last action goal to "get_path" has been REJECTED

Launch File and config files

I modeled the launch and config files from https://github.com/uos/ceres_robot/tree/master/ceres_navigation

Here is my launch file for mbf:

<?xml version="1.0" ?>
<launch>

  <node name="map_server" pkg="map_server" type="map_server" args="$(find thor_robot_launch)/maps/map.yaml" ns="global_costmap" clear_params="true"/> 

  <node pkg="mbf_costmap_nav" type="mbf_costmap_nav" respawn="false" name="move_base_flex" output="screen">
    <param name="tf_timeout" value="1.5"/>
    <param name="planner_max_retries" value="3"/>
    <rosparam file="$(find thor_robot_launch)/config/robots/grover/planners.yaml" command="load" />
    <rosparam file="$(find thor_robot_launch)/config/robots/grover/controllers.yaml" command="load" /> 
    <rosparam file="$(find thor_robot_launch)/config/robots/grover/costmap_common_params.yaml" command="load" ns="global_costmap" /> 
    <rosparam file="$(find thor_robot_launch)/config/robots/grover/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find thor_robot_launch)/config/robots/grover/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find thor_robot_launch)/config/robots/grover/global_costmap_params.yaml" command="load" /> 
    <remap from="/cmd_vel" to="/cmd_vel/move_base" />
  </node>

  <node name="move_base_legacy_relay" pkg="mbf_costmap_nav" type="move_base_legacy_relay.py"/>

</launch>

I have attached my config files if those are helpful planners.yaml.txt controllers.yaml.txt costmap_common_params.yaml.txt local_costmap_params.yaml.txt global_costmap_params.yaml.txt

Any help would be greatly appreciated. Thanks, Dean

dean4ta commented 4 years ago

60

I believe this is a relevant issue

spuetz commented 4 years ago

The default global planner is

base_global_planner (string, default: "navfn/NavfnROS")

But this is not listed in planners.yaml Either add it to the config file or set the bgp variable in the move_base_legacy_relay.py

dean4ta commented 4 years ago

Hi Sebastian,

Firstly thanks for the quick reply yesterday. As you suggested, the solution was to add to the planners.yaml:

  - name: 'navfn/NavfnROS'
    type: 'navfn/NavfnROS'

In addition to that I also added to the controllers.yaml:

  - name: 'base_local_planner/TrajectoryPlannerROS'
    type: 'base_local_planner/TrajectoryPlannerROS'

However, I found a bug with the move_base_legacy_relay node with the bgp, blp, and parameters. When setting up the dynamic reconfigure server in this line the MoveBaseConfig is used and overwrites all parameters including bgp, blp. I made a hack fix by only changing bgp and blp when they are set to None, but the rest of my parameters were still overwritten.

I am willing to make changes and submit a PR, but I want to know your thoughts.

Dean

corot commented 4 years ago

Hi @dean4ta, not sure if I get the latest problem, but,,, what you said is correct, that is, that line triggers a first call to reconfigure that will use all the parameters that you define under 'move_base' namespace. So if you choose a base_local/global_planner, it will be added there:

image

Otherwise, the fields will contain the default values:

image