Parcourir la source

[feat]:完成fishbot导航配置

鱼香ROS il y a 3 ans
Parent
commit
437f631907
1 fichiers modifiés avec 76 ajouts et 16 suppressions
  1. 76 16
      docs/chapt10/10.8为Fishbot配置Nav2.md

+ 76 - 16
docs/chapt10/10.8为Fishbot配置Nav2.md

@@ -1,10 +1,10 @@
 # 10.8 为FishBot配置Nav2
 
-安装好了Nav2,我们开始针对我们的fishbot改变一些参数进行导航相关的参数配置。
+安装好了Nav2,我们开始针对我们的fishbot改变一些参数进行导航相关的参数配置。Nav2可配置的参数比起Cartographer更多,但是不要害怕,因为大多数参数我们可能不会改变。
 
-Nav2可配置的参数比起Cartographer更多,但是不要害怕,因为大多数参数我们可能不会改变
+> 有关Nav2的更多参数介绍和详细的配置意义,可以参考**Nav2中文网配置指南**一节
 
-有关Nav2的更多参数介绍和详细的配置意义,可以参考**Nav2中文网配置指南**一节
+本节主要准备两个文件给launch节点使用,第一个是地图文件,第二个是nav2参数文件
 
 ## 1.创建fishbot_navigation2
 
@@ -33,14 +33,14 @@ ros2 pkg create fishbot_navigation2 --dependencies nav2_bringup
 3 directories, 2 files
 ```
 
-### 1.2添加launch、config、map、param、rviz文件夹
+### 1.2 添加maps文件夹
 
 ```
 cd src/fishbot_navigation2
 mkdir launch config maps param rviz
 ```
 
-### 1.3复制地图文件
+### 1.3 复制地图文件
 
 将上一节的地图文件复制到map文件夹下。
 
@@ -62,7 +62,9 @@ mkdir launch config maps param rviz
 5 directories, 5 files
 ```
 
-## 2.添加配置文件
+## 2.添加Nav2配置文件
+
+### 2.1 创建参数文件
 
 我们需要配置的文件是Nav2的参数文件,同样的,贴心的Nav2已经为我们准备好了参数模板
 
@@ -77,21 +79,17 @@ cd src/fishbot_navigation2/param/
 touch fishbot_nav2.yaml
 ```
 
+### 2.2 复制参数
+
 然后将`src/navigation2/nav2_bringup/bringup/params/nav2_params.yaml`的内容复制粘贴到`fishbot_nav2.yaml`文件中。
 
 > **参数文件中的参数是谁的?**
 >
 > 在[5.1.4章节保存参数](chapt5/5.1ROS2参数介绍?id=_4体验参数)中,我们曾用`ros2 param dump <node_name>`指令将某个节点的参数保存为一个`.yaml`格式的文件。`fishbot_nav2.yaml`文件就是保存Nav2相关节点参数的文件。
 
-### 3. 配置参数
-
-其实参数不配置也是可以将Nav2跑起来的,但是后期想要更改运行的效果就需要对参数进行修改,所以这里小鱼会带你学会调参三宝:
+## 3. 配置参数
 
-1. 了解参数含义
-2. 修改参数,再次运行看效果
-3. 根据效果,更新参数
-
-> 以上三步可能是你工作生涯中用到的除复制粘贴外的另一大技能,所以一定要掌握。
+其实参数不配置也是可以将Nav2跑起来的,但是后期想要更改运行的效果就需要对参数进行修改,所以有必要大概了解下参数的配置项和含义查询方法和修改方法。
 
 ### 3.1 参数列表
 
@@ -102,7 +100,7 @@ touch fishbot_nav2.yaml
 | 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) |
+| 6 | local_costmap| 局部代价地图 | [nav2_costmap_2d](http://dev.nav2.fishros.com/doc/configuration/packages/configuring-costmaps.html),[static_layer](http://dev.nav2.fishros.com/doc/configuration/packages/costmap-plugins/static.html),[inflation_layer](http://dev.nav2.fishros.com/doc/configuration/packages/costmap-plugins/inflation.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)   |
 
 
@@ -110,7 +108,69 @@ touch fishbot_nav2.yaml
 
 ![image-20220517203105467](10.8%E4%B8%BAFishbot%E9%85%8D%E7%BD%AENav2/imgs/image-20220517203105467.png)
 
-### 3.2 配置机器人半径
+### 3.2 配置机器人半径和碰撞半径
+
+在全局代价地图和局部代价地图配置用,默认的机器人半径是0.22,而我们fishbot的半径是0.12,所以需要修改机器人的半径为0.12。
+
+```yaml
+local_costmap:
+  local_costmap:
+    ros__parameters:
+      robot_radius: 0.12
+      
+global_costmap:
+  global_costmap:
+    ros__parameters:
+      robot_radius: 0.12
+```
+
+为了防止机器人发生碰撞,一般我们会给代价地图添加一个碰撞层(inflation_layer),在`local_costmap`和`global_costmap`配置中,你可以看到下面关于代价地图相关的配置:
+
+```yaml
+global_costmap:
+  global_costmap:
+    ros__parameters:
+      plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
+      inflation_layer:
+        plugin: "nav2_costmap_2d::InflationLayer"
+        cost_scaling_factor: 3.0
+        inflation_radius: 0.55
+```
+
+打开参数配置中的[inflation_layer](http://dev.nav2.fishros.com/doc/configuration/packages/costmap-plugins/inflation.html),我们来看看其配置项和含义。
+
+此处截图
+
+可以看到`inflation_radius`默认0.55对fishbot来说可能有些大了,我们改小些。
+
+```
+global_costmap:
+  global_costmap:
+    ros__parameters:
+      plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
+      inflation_layer:
+        plugin: "nav2_costmap_2d::InflationLayer"
+        cost_scaling_factor: 3.0
+        inflation_radius: 0.35
+```
+
+**以上就是以代价地图碰撞半径为例的配置方法,nav2可以配置的参数非常多,假如你在导航过程中遇到问题,根据问题的表现推断下是哪个模块中造成的,接着修改其对应参数,大概率就可以解决问题,解决不了的可以看源码详细分析。**
+
+### 3.3 配置frame_id和话题
+
+这里也不用配置,因为我们的fishbot话题名称和tf名称都是遵循着默认的话题的。
+
+如果你的机器人不是,或者你改变了话题,这里就需要重新配置。
+
+- 默认全局的坐标系:map
+- 默认里程计坐标系:odom
+- 默认雷达话题:scan
+- 默认机器人基坐标系:base_link
+- 默认地图话题:map
+
+## 4. 总结
+
+本节我们简单的了解了Nav2各个模块参数的配置方法和参数的介绍,下一节就开始编写文件正式建图。