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

news2024/9/21 22:43:41

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仿真环境搭建和导航测试讲解完毕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

72.WEB渗透测试-信息收集- WAF、框架组件识别(12)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:71.WEB渗透测试-信息收集- WAF、框架组件识别(11)-CSDN博客 常用…

视频剪辑软件如何选?FCPX和PR更适合新手呢

随着抖音、快手等短视频平台的迅速兴起,短视频数量急剧增加。想要发布一款简单、高质量的短视频,运用剪辑软件至关重要。目前比较流行的有Adobe家的Premiere,以及Final Cut Pro X,经常有用户在二者间,不知如何选择&…

【自媒体直播】手机充当电脑摄像头的方法

你知道如何使用手机作为电脑摄像头进行直播吗?当我们短时间内需要通过线上直播的方式进行录课、召开线上会议等紧急情况,但又不想花费昂贵的费用购买高清电脑摄像设备时,我们可以通过使用第三方专业虚拟摄像头软件通过手机充当电脑摄像头的方…

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud【SLAM-翻译与解读】

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud 摘要 特征提取和匹配是许多机器人视觉任务的基本组成部分,如 2D 或 3D 目标检测、识别和配准。2D 特征提取和匹配已取得巨大成功。然而,在 3D 领域,当前方法由于描述性差…

亲测有效!2024年11月软考详细备考计划分享

一、基础奠基阶段(1-2个月) 目标设定:全面理解考试要求,奠定坚实的知识基础。 研究考纲:深入研读考试大纲,精确把握考试范围与核心考点。 个性化规划:根据个人学习进度与理解能力&#xff0c…

Dockerfile介绍及创建流程

什么是Dockerfile Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。 Dockerfile 用于指示 docker image build 命令…

2024最新AI创作系统,ChatGPT商业运营系统,AI绘画系统源码,AI视频生成系统,AI智能体、文档分析、多模态模型一站式AIGC解决方案

一、人工智能 人工智能技术正在迅速发展,AI语言模型、AI绘画、AI视频在多个领域都有广泛的应用。它们不仅在科技创新方面表现出色,还在艺术创作、内容生产和商业应用中展现出巨大的潜力。 AI语言模型可以用于自动化内容生成、智能客服、文本翻译等方面…

科技云报道:产业为根大模型应用为擎,容联云推动企业营销服场景重塑

科技云报道原创。 “没有应用,光有一个基础模型,不管是开源还是闭源,一文不值。”在2024世界人工智能大会(WAIC 2024)现场,百度创始人、董事长兼首席执行官李彦宏直言。 国产大模型的种类越发丰富&#x…

浅谈大模型工程化中的安全防护

之前在社区看很多人谈论大模型,感觉大模型无所不能。但是近期我也是陆续做了两个大模型应用项目,深刻感受到目前阶段大模型还是存在很多问题,深刻体验到了大模型在迈向工程化的过程中任重而道远。 今天把发现的一些主要问题粗略梳理&#xff…

CAN总线学习

can主要用于汽车、航空等控制行业,是一种串行异步通信方式,因为其相较于其他通信方式抗干扰能力更强,更加稳定。原因在于CAN不像其他通信方式那样,以高电平代表1,以低电平代表0,而是通过电压差来表示逻辑10…

树莓派关机

文件 shutdown.sh #!/usr/bin/bash sudo shutdown -r nowpython 文件开头添加 #!/usr/bin/python3

在VSCode上创建Vue项目详细教程

1.前期环境准备 搭建Vue项目使用的是Vue-cli 脚手架。前期环境需要准备Node.js环境,就像Java开发要依赖JDK环境一样。 1.1 Node.js环境配置 1)具体安装步骤操作即可: npm 安装教程_如何安装npm-CSDN博客文章浏览阅读836次。本文主要在Win…

企业全历史行为数据 让你对竞争对手的一切清清楚楚

关于商业竞争,在刚进入信息时代的那些年,人们说“现代商战就是信息战”,强调用非对称的或者更快获得的信息来赢得竞争;近些年进入大数据时代,人们又说“得数据者得天下”,发现“数据算法”有很多妙用&#…

890亿,瞄准集成电路和人工智能等领域!

近日,上海市政府近期宣布拟设立总规模达890亿元的三只产业先导母基金,专注于集成电路、生物医药和人工智能三大先导产业的发展。这一举措旨在推动这些领域的创新和产业升级,同时也响应了国家战略新兴产业的发展需求,为支持上海市集…

pytest测试框架+allure超详细教程

1、测试识别和运行 文件识别: 在给定的目录中,搜索所有test_.py或者_test.py文件 用例识别: Test*类包含的所有test_*的方法(测试类不能有__init__方法)不在类中的所有test_*方法pytest也能执行unit test写的用例和…

一个真正有本事的人,往往有这4个特征,遇见一定要深交!

点击上方△腾阳 关注 转载请联系授权 你好,我是腾阳。 根据社会学和心理学的研究,一个人在其一生中可能会有更深层次交往的人数通常是有限的。 英国人类学家罗宾邓巴提出了著名的“邓巴数字”,即一个人能够维持稳定社交关系的人数大约在15…

使用嵌入式知识打造智能手环:nRF52蓝牙开发实战(C++/BLE/传感器)

项目概述 现代人越来越注重健康管理,智能穿戴设备应运而生。本项目旨在利用低功耗蓝牙芯片nRF52832,结合加速度计、心率传感器、陀螺仪等传感器,开发一款功能完善、性能稳定的智能运动手环。该手环能够实时采集用户的运动数据和生理指标&…

c++ map operator[] 陷阱

背景&#xff1a;以前做的一个功能&#xff0c;在程序中保存了一个map&#xff0c;这个map的类型是这样的&#xff1a; std::map<int, std::set<自定义类型>>&#xff0c;一般情况下这个 set 只有一个元素&#xff0c;特殊情况是允许set有两个元素。现在是项目测试…

线程间通信与变量修改感知:几种常用方法

线程间通信与变量修改感知&#xff1a;几种常用方法 1. 使用volatile关键字2. 使用synchronized关键字3. 使用wait/notify/notifyAll机制4. 使用轮询&#xff08;Polling&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java…

入选中国信通院首期全景图,美创数据安全再显“专、精、全”

近日&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;正式发布《数字安全护航技术能力全景图》&#xff0c;共划分为14项一级目录103项二级目录&#xff0c;从391家报名厂商中审核评估&#xff0c;共收录147家厂商。 美创科技入选21个细分领域&#…