导航包之间的关系
在move_base节点运行前需要四个配置文件,这些文件定义了一系列相关参数,包括越过障碍物的代价、机器人的半径、路径规划时需要考虑未来多长的路、我们想让机器人以多块的速度移动等等。这四个配置文件分别是:
base_local_planner_params.yaml
costmap_common_params.yaml
global_costmap_params.yaml
local_costmap_params.yaml
导航包使用代价地图存储有关障碍物的信息。为了正确执行此操作,我们需要为costmaps指定应该监听传感器主题和更新频率。
参考文章:
(31条消息) ROS导航小车1 teb_local_planner参数(仅作记录/收集)_teb local planner参数_Crush Mome的博客-CSDN博客
运行导航:
1. 启动底盘控制包 :
base_conctronl
2.启动键盘控制节点:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
3.机器人端启动雷达扫描建图:
roslaunch robot_navigation robot_slam_laser.launch
4.PC端启动Rviz视图
roslaunch robot_navigation slam_rviz.launch
5. 进入地图包内保存包
roscd robot_navigation/maps #进包
rosrun map_server map_saver -f map #保存地图,命名为map
6. 启动雷达导航:
roslaunch robot_navigation robot_navigation.launch
7. Rviz导航视图:
roslaunch robot_navigation navigation_rviz.launch
一、move_base.launch
<launch>
<!-- Arguments -->
<arg name="cmd_vel_topic" default="cmd_vel" /> # 话题控制
<arg name="odom_topic" default="odom" /> # 里程计
<arg name="planner" default="dwa" doc="opt: dwa, teb"/> # 导航
<arg name="simulation" default= "false"/> # 仿真
<arg name="use_dijkstra" default= "true"/>
<arg name="base_type" default= "$(env BASE_TYPE)"/>
<arg name="move_forward_only" default="false"/>
<!-- move_base use DWA planner-->
<group if="$(eval planner == 'dwa')">
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<!-- use global_planner replace default navfn as global planner ,global_planner support A* and dijkstra algorithm-->
<param name="base_global_planner" value="global_planner/GlobalPlanner"/>
<param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />
<!-- <rosparam file="$(find robot_navigation)/param/$(env BASE_TYPE)/global_planner_params.yaml" command="load" /> -->
<rosparam file="$(find robot_navigation)/param/$(env BASE_TYPE)/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find robot_navigation)/param/$(env BASE_TYPE)/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find robot_navigation)/param/$(env BASE_TYPE)/local_costmap_params.yaml" command="load" />
<rosparam file="$(find robot_navigation)/param/$(env BASE_TYPE)/global_costmap_params.yaml" command="load" />
<rosparam file="$(find robot_navigation)/param/$(env BASE_TYPE)/move_base_params.yaml" command="load" />
<rosparam file=&#