3.1 导航配置
安装导航包
sudo apt-get install ros-melodic-navigation
创建功能包navigation,并编译
catkin_create_pkg navigation
在navigation下创建config, launch, maps, rviz, scripts, src
mkdir config launch maps rviz sricpts src
config–用于存储导航算法配置文件,包括全局和局部路径规划算法
launch–配置启动文件,包括定位,导航算法等
maps–存放地图文件
rviz–存放可视化文件
scripts–存放python编写的特定文件
src–存放cpp控制文件
3.2 各文件夹配置
config文件夹
下一节单独写
launch文件夹
创建amcl.launch文件
<launch>
<arg name="scan_topic" default="scan"/>
<arg name="initial_pose_x" default="0.0"/>
<arg name="initial_pose_y" default="0.0"/>
<arg name="initial_pose_a" default="0.0"/>
<node pkg="amcl" type="amcl" name="amcl" clear_params="true">
<param name="min_particles" value="500"/>
<param name="max_particles" value="3000"/>
<param name="kld_err" value="0.02"/>
<param name="update_min_d" value="0.20"/>
<param name="update_min_a" value="0.20"/>
<param name="resample_interval" value="1"/>
<param name="transform_tolerance" value="0.5"/>
<param name="recovery_alpha_slow" value="0.00"/>
<param name="recovery_alpha_fast" value="0.00"/>
<param name="initial_pose_x" value="$(arg initial_pose_x)"/>
<param name="initial_pose_y" value="$(arg initial_pose_y)"/>
<param name="initial_pose_a" value="$(arg initial_pose_a)"/>
<param name="gui_publish_rate" value="50.0"/>
<remap from="scan" to="$(arg scan_topic)"/>
<param name="laser_max_range" value="3.5"/>
<param name="laser_max_beams" value="180"/>
<param name="laser_z_hit" value="0.5"/>
<param name="laser_z_short" value="0.05"/>
<param name="laser_z_max" value="0.05"/>
<param name="laser_z_rand" value="0.5"/>
<param name="laser_sigma_hit" value="0.2"/>
<param name="laser_lambda_short" value="0.1"/>
<param name="laser_likelihood_max_dist" value="2.0"/>
<param name="laser_model_type" value="likelihood_field"/>
<param name="odom_model_type" value="diff"/>
<param name="odom_alpha1" value="0.1"/>
<param name="odom_alpha2" value="0.1"/>
<param name="odom_alpha3" value="0.1"/>
<param name="odom_alpha4" value="0.1"/>
<param name="odom_frame_id" value="odom"/>
<param name="base_frame_id" value="base_footprint"/>
</node>
</launch>
创建teb_base.launch和teb_demo.launch
其中teb_base.launch用于启动move_base节点,并加载所有配置文件
<launch>
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
<param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
<rosparam file="$(find navigation)/config/TEB/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find navigation)/config/TEB/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find navigation)/config/TEB/global_costmap_params.yaml" command="load" />
<rosparam file="$(find navigation)/config/TEB/local_costmap_params.yaml" command="load" />
<rosparam file="$(find navigation)/config/TEB/global_planner_params.yaml" command="load" />
<rosparam file="$(find navigation)/config/TEB/teb_local_planner_params.yaml" command="load" />
<rosparam file="$(find navigation)/config/TEB/move_base_params.yaml" command="load" />
<!--<remap from="/cmd_vel" to="/my/cmd_vel"/> -->
</node>
</launch>
teb_demo.launch是一个运行所有导航功能节点的顶层launch文件
用于启动gazebo和rviz
<launch>
<!-- 启动仿真环境 -->
<include file="$(find gazebo_pkg)/launch/icra.launch"/>
<!-- 设置地图的配置文件 -->
<arg name="map" default="icra_map.yaml" />
<!-- 运行地图服务器,并且加载设置的地图-->
<node name="map_server" pkg="map_server" type="map_server" args="$(find gazebo_map)/map/$(arg map)"/>
<!-- 运行move_base节点 -->
<include file="$(find navigation)/launch/teb_base.launch"/>
<!-- 启动AMCL节点 -->
<include file="$(find navigation)/launch/amcl.launch" />
<!-- 显示odom节点 -->
<!--node name="showodom" pkg="navigation" type="showpath" />-->
<!-- 订阅路径节点 -->
<!--<node name="my_control" pkg="navigation" type="my_control" />-->
<!-- 运行rviz -->
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find navigation)/rviz/teb_nav.rviz"/>
</launch>
maps文件夹
将gazebo_map中的icra_map两个文件copy到该文件夹
rviz文件夹
后续配置完rviz文件后保存到此处
scripts和src文件夹
暂定
配置完文件后进行导航算法的验证
3.3 配置rviz文件并测试
打开工作空间终端
source devel/setup.bash
roslaunch navigation teb_demo.launch
运行后会打开gazebo以及rviz
在rviz中add以下topic
全局路径和局部路径可以设置为不同颜色便于辨识
配置完成后命名为teb_nav保存在rviz文件夹中
在菜单栏选择2D Nav Goal,可以选择目标点及到达的方位
实现导航
动态调节TEB参数
rosrun rqt_reconfigure rqt_reconfigure
3.4 后续工作
1)调整小车在地图中的位置
2)调节TEB参数
3)TEB算法优化后应用