Global planner passes through the wall
When I give a navigation goal to my robot, the global path is just a simple straight between the goal point and my robot current location, even pass through the wall between them. The local planner works well, it is able to navigate to goal point when a short and simple navigation goal is given to it. The following is my move_base launch file:
<launch>
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<param name="base_global_planner" value="carrot_planner/CarrotPlanner"/> <!--- new added -->
<rosparam file="$(find my_robot_2dnav)/move_base_config/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find my_robot_2dnav)/move_base_config/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find my_robot_2dnav)/move_base_config/local_costmap_params.yaml" command="load" />
<rosparam file="$(find my_robot_2dnav)/move_base_config/global_costmap_params.yaml" command="load" />
<rosparam file="$(find my_robot_2dnav)/move_base_config/base_local_planner_params.yaml" command="load" />
<remap from="cmd_vel" to="linear_angular"/>
</node>
</launch>
Is it because I am using carrot_planner? Is there any other planner I can use to solve this problem?
Yes. The carrot_planner is (intentionally) very simple, and the behavior you describe is well-documented.