|
@@ -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
|
|
|
|
|
|

|
|
|
|
|
|
-### 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各个模块参数的配置方法和参数的介绍,下一节就开始编写文件正式建图。
|
|
|
|
|
|
|
|
|
|