学习资料

动手学ROS2

Nav2中文网 | Nav2 中文网

在上一次gazebo卡死强制退出之后,就无法打开

重启就好了。。。不要随便的ctrlZ

之后又出现了gazebo无法打开的情况

直接卡死

具体原因:是因为model库加载不正确导致的,gazebo软件开启的时候会自动从网络下载模型,然而,从外网下载过程非常的漫长,很难加载成功。

学过ros的对gazebo仿真软件应该都不会陌生,但是有时启动真的很烦人,经常卡在这个地方很长时间,查阅资料 gazebo软件开启的时候会自动从国外官网下载模型,因此这个过程比较漫长,原因是网站在国外,下载不顺畅。有一个加速启动的方法就是断开网络连接启动,但频频断网还是不太方便。

手动杀死gazebo(保证杀死)

1
killall gzserver && killall gzclient

按照文章里的把这个文件全部注释了没有用

最后选择断网来解决

有可能是launch文件中的某写模型路径不对

gazebo使用

这个表示坐标点的位置

先标出来初试坐标

1
2
3
4
5
6
7
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch main
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro rolling
colcon build --symlink-install
source install/setup.bash

构建开发中的主分支

第五行的意思是

rosdep是一个用来一键安装依赖的工具,

重要概念

动作服务器

举一个比较形象的例子,这种通信方式就像你的在windows上的文件传输所显示的滚动条,时刻显示文件传输的进度

在ros的路径规划中,就是你发送了这个目标点之后,它的反馈是是否到达目标点(如果你设定的是10hz那就0.1s接受一次),再到达之前一直反馈going,到后反馈reachgoal。

生命周期节点和绑定

生命周期是用于加载和卸载ros2服务器的节点。

绑定

行为树bt

它们是待完成任务的树形结构。

状态机fsm

导航服务器

规划器

选择算法进行全局规划

控制器

选择算法进行局部规划,在ros1中被叫做局部规划器

恢复服务器

容错系统支柱,目标是处理系统未知状况或者故障状况并且自主处理这些情况

举例:

  • 允许机器人从被卡住的位置移动

状态估计

map  到 odom 的坐标变换由 定位系统 (定位,建图,SLAM)提供,
odom 到 base_link 的坐标转换由 里程计 系统提供。
关于 base_link 的其余坐标系应该是 静态 并且在urdf中进行定义

第一个变换 map => odom 通常由处理本地化和映射的不同 ROS 包提供,例如 AMCL。
odom => base_link 通常由我们的里程计系统使用传感器(例如车轮编码器)发布。

全局定位

全局定位系统至少提供 mapodom 的坐标转换

有几种算法:

  • amcl 基于 粒子过滤器 的自适应蒙特卡洛定位技术,用于 静态地图 的定位。

里程计

输出 odombase_link 的坐标转换
数据来源 **激光雷达** 车轮编码器  vio imu

他的作用是提供基于机器人的平滑和连续稳定的 局部坐标系
全局定位系统会相对全局坐标变换进行更新,也就是 重定位 用来解决里程计漂移问题

成本地图和图层

成本地图被看做是插件,各个传感器将信息输入到图层中进行处理

问题记录

开启slam之后会出现抖动

此处为语雀卡片,点击链接查看

nav2学习记录

yaml文件

yaml文件对于缩进有要求
同一层级的元素应该左对齐

成本地图过滤器

速度过滤器

fastlio配置

1
git clone https://github.com/Ericsii/FAST_LIO.git --recursive

–recusive的作用就是迭代将文件夹内部的功能包下载下来

git下载子模块命令git clone –recursive和git submodule update –init_陈 洪 伟的博客-CSDN博客

找不到包

题外话

docker

https://blog.csdn.net/m0_61503020/article/details/125456520?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169957690716800215077200%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169957690716800215077200&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-125456520-null-null.142v96pc_search_result_base2&utm_term=docker&spm=1018.2226.3001.4187

1、什么是docker

和虚拟机很类似

一个容器虚拟化平台。最重要的是,他们不依赖于任何语言、框架或者包装系统。

2、Docker容器技术与虚拟机的区别。

相同点:docker和容器技术和虚拟机技术,都是虚拟化技术。

不同点
虚拟机技术:

容器技术:

通过图片,我们很明显的看到容器少了一层Guest OS,也就是少了虚拟机操作系统这一层,所以docker效率比虚拟机效率高。达到了秒级启动的地步。

docker的安装

我使用的是小鱼的一键安装

1
wget http://fishros.com/install -O fishros && . fishros
1