# 10.8 为FishBot配置Nav2 安装好了Nav2,我们开始针对我们的fishbot改变一些参数进行导航相关的参数配置。 Nav2可配置的参数比起Cartographer更多,但是不要害怕,因为大多数参数我们可能不会改变。 有关Nav2的更多参数介绍和详细的配置意义,可以参考**Nav2中文网配置指南**一节。 ## 1.创建fishbot_navigation2 ### 1.1创建功能包 和前面在Cartographer中一样,我们需要创建一个文件夹放置配置文件、launch文件、rviz配置和地图等。 进入到src目录下,使用下面指令创建功能包: ```shell ros2 pkg create fishbot_navigation2 --dependencies nav2_bringup ``` 这里我们添加了一个依赖`nav2_bringup`,后面写launch文件要用到,这里提前添加一下依赖。 创建完成后的目录结构: ``` . ├── CMakeLists.txt ├── include │ └── fishbot_navigation2 ├── package.xml └── src 3 directories, 2 files ``` ### 1.2添加launch、config、map、param、rviz文件夹 ``` cd src/fishbot_navigation2 mkdir launch config maps param rviz ``` ### 1.3复制地图文件 将上一节的地图文件复制到map文件夹下。 复制完成后`fishbot_navigation2`的文件结构如下 ``` . ├── CMakeLists.txt ├── config ├── launch ├── maps │ ├── fishbot_map.png │ ├── fishbot_map.pgm │ ├── fishbot_map.yaml ├── package.xml ├── param └── rviz 5 directories, 5 files ``` ## 2.添加配置文件 我们需要配置的文件是Nav2的参数文件,同样的,贴心的Nav2已经为我们准备好了参数模板 ``` src/navigation2/nav2_bringup/bringup/params/nav2_params.yaml ``` 在`src/fishbot_navigation2/param/`目录下创建`fishbot_nav2.yaml` ```shell cd src/fishbot_navigation2/param/ touch fishbot_nav2.yaml ``` 然后将`src/navigation2/nav2_bringup/bringup/params/nav2_params.yaml`的内容复制粘贴到`fishbot_nav2.yaml`文件中。 > **参数文件中的参数是谁的?** > > 在[5.1.4章节保存参数](chapt5/5.1ROS2参数介绍?id=_4体验参数)中,我们曾用`ros2 param dump `指令将某个节点的参数保存为一个`.yaml`格式的文件。`fishbot_nav2.yaml`文件就是保存Nav2相关节点参数的文件。 ### 3. 配置参数 其实参数不配置也是可以将Nav2跑起来的,但是后期想要更改运行的效果就需要对参数进行修改,所以这里小鱼会带你学会调参三宝: 1. 了解参数含义 2. 修改参数,再次运行看效果 3. 根据效果,更新参数 > 以上三步可能是你工作生涯中用到的除复制粘贴外的另一大技能,所以一定要掌握。 ### 3.1 参数列表 | 编号 | 配置项 | 用途 |对应模块与参数详解 | | ----| ---------------------- | ------------ | --------------------------- | | 1 | amcl| 机器人定位 | [nav2_amcl](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-amcl.html) | | 2| bt_navigator| 导航行为树(用于加载行为树节点并根据xml配置进行调度) | [nav2_bt_navigator](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-bt-navigator.html),[nav2_behavior_tree](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-bt-xml.html) | | 3| controller_server| 控制器服务器 | [nav2_controller](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-controller-server.html),[nav2_dwb_controller](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-dwb-controller.html),[nav2_regulated_pure_pursuit_controller](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-regulated-pp.html) | | 4 | planner_server| 规划服务器 | [nav2_planner](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-planner-server.html),[nav2_navfn_planner](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-navfn.html),[smac_planner](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-smac-planner.html) | | 5 | recoveries_server| 恢复服务器 | [nav2_recoveries](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-recovery-server.html) | | 6 | local_costmap| 局部代价地图 | [nav2_costmap_2d](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-costmaps.html) | | 7 | global_costmap| 全局代价地图 | [nav2_costmap_2d](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-costmaps.html),[nav2_map_server](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-map-server.html) | 有关更多的Nav2所有参数的详细介绍,可以访问Nav2中文网中的配置指南章节,非常的详细,无比的具体。 ![image-20220517203105467](10.8%E4%B8%BAFishbot%E9%85%8D%E7%BD%AENav2/imgs/image-20220517203105467.png) ### 3.2 配置机器人半径 -------------- 技术交流&&问题求助: - **微信公众号及交流群:鱼香ROS** - **小鱼微信:AiIotRobot** - **QQ交流群:139707339** - 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划