ROS2入门到精通—— 2-2 ROS2实战:运动规划仿真环境Nav2搭建和导航测试

1 Nav2总体架构

在这里插入图片描述头文件+源文件约八万行

安装cloc:sudo apt install cloc

bigdavid@bigdavid-Legion-Y9000P-IRX8:~/Nav2$ cloc .
    1137 text files.
    1133 unique files.                                          
      57 files ignored.

github.com/AlDanial/cloc v 1.90  T=0.58 s (1897.7 files/s, 328859.3 lines/s)
--------------------------------------------------------------------------------
Language                      files          blank        comment           code
--------------------------------------------------------------------------------
C++                             399          12238          12520          59110
JSON                             17              0              0          31059
C/C++ Header                    308           5719          17438          20417
Python                           73           1614           2085           5460
CMake                            83            864            179           3725
XML                              86            449            133           3464
YAML                             27             99             72           3331
Markdown                         52            783              0           2134
CSV                               2              0              0           1941
C                                 9            424            717           1148
CSS                               1            169              0            933
Dockerfile                        3             83            123            369
SVG                               3             12            135            300
Bourne Again Shell                5             31             31            162
Gencat NLS                       18             17              0            104
Jupyter Notebook                  1              0             82             88
Bourne Shell                      6             33             19             72
HTML                              1              2              0             34
reStructuredText                  1              1              0              6
INI                               1              0              0              2
--------------------------------------------------------------------------------
SUM:                           1096          22538          33534         133859
--------------------------------------------------------------------------------

Nav2总体架构
在这里插入图片描述

BT行为树对下面三个服务器组织和调用

规划服务器:相当于全局规划器(全局路径)
控制服务器:相当于局部规划器(局部跟踪)
恢复服务器:处理系统的未知状况或故障状况并自主处理这些状况

两大代价地图
(1)Global Costmap
图层:

● Static Map Layer:静态地图层,通常都是SLAM建立完成的静态地图。
● Obstacle Map Layer:障碍地图层,用于动态的记录传感器感知到的障碍物信息。
● Inflation Layer:膨胀层,在以上两层地图上进行膨胀(向外扩张),以避免机器人的外壳会撞上障碍物

(2)Local Costmap

● Obstacle Map Layer:障碍地图层,用于动态的记录传感器感知到的障碍物信息。
● Inflation Layer:膨胀层,在障碍地图层上进行膨胀(向外扩张),以避免机器人的外壳会撞上障碍物。

动作服务器:封装成了行为树的基础节点进行调用
通过动作服务器通信:计算路径规划、控制机器人运动和恢复
生命周期节点和绑定:包含状态机转换的用于加载和卸载ROS2服务器的节点

行为树:待完成任务的树形结构。行为树为定义多步或多状态应用程序创建了一个更具可扩展性和人类可理解性的框架。这与有限状态机 (FSM) 相反,后者可能有几十个状态和数百个状态过渡。

航点跟随nav2_waypoint_follower
如果需要让机器人前往给定位姿并完成像拍照、捡起盒子或等待用户输入之类的特定任务,这会非常有用。

状态估计:自适应蒙特卡洛定位AMCL

里程计:提供 odom -> base_link 的坐标转换
目标是提供基于机器人运动的平滑和连续的局部坐标系。

通过使用成本地图过滤器可以实现以下功能:
● 机器人永远不会进入的禁区/安全区。
● 限速区,机器人进入这些区域的最大速度将受到限制。
● 机器人在工业环境和仓库中移动的首选通道。

在导航项目中,需要提供两个主要的坐标转换。map 到 odom 的坐标变换由定位系统 (定位,建图,SLAM)提供, odom 到 base_link 的坐标转换由里程计系统提供
map => odom:AMCL
odom => base_link:里程计系统使用传感器(例如车轮编码器)发布。

2 Nav2仿真环境搭建与导航测试

本文介绍Nav2的源码安装,虽然比apt install麻烦,但是可以在Nav2框架里开发自己的代码

2.1 apt安装
 sudo apt install ros-humble-nav2-*
2.2 源码安装

安装Turtlebot3

sudo apt install ros-humble-turtlebot3-gazebo

设置环境变量:gedit ~/.bashrc

export TURTLEBOT3_MODEL=waffle
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models

source ~/.bashrc

把该代码放到nav2/src里

mkdir -p nav2/src
cd nav2/src
git clone https://mirror.ghproxy.com/https://github.com/ros-planning/navigation2.git -b humble
cd ..
colcon build # 可以删掉一些功能包加快编译速度
rosdepc install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y

跑Nav2仿真,九根柱子

source install/setup.bash
ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False # 启动rviz和gazebo,不启动gazebo就把headless:=False去掉 ros2 launch nav2_bringup tb3_simulation_launch.py

在这里插入图片描述

2.3 导航测试

一开始机器人并不知道自己在哪里,默认情况下,Nav2会等待用户提供一个大致的起始位置。查看机器人在Gazebo中的位置,并在地图中找到该位置;在Rviz2中点击2D Pose Estimate按钮,然后在该位置下方点击地图来设置初始姿态,一旦设置了初始姿态,tf变换将会完成,Nav2将会完全激活并运行

接下来,点击Navigation2 Goal按钮选择一个目的地,将通过一个动作服务器调用BT导航器向目标前进。

补充:ubuntu22.04好用的画图工具
安装:sudo apt install kolourpaint
在这里插入图片描述

在这里插入图片描述键盘控制:ros2 run teleop_twist_keyboard teleop_twist_keyboard

q、z调车速


至此,Nav2仿真环境搭建和导航测试讲解完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值