学习机器人SLAM导航核心技术(一)

news2025/1/22 16:14:39

本章节,我们将学习基于SLAM导航的机器人技术。

 学习资料主要参照张虎的《机器人SLAM导航核心技术与实战》和高翔的《视觉SLAM十四讲》。
以机器人SLAM导航核心技术与实战作为学习的技术路线。在此基础上增加自己学习到的内容。

第1章:ROS入门必备知识
    1.1 ROS简介
        1.1.1 ROS的性能特色
        1.1.2 ROS的发行版本
        1.1.3 ROS的学习方法
    1.2 ROS开发环境的搭建
        1.2.1 ROS的安装(上机演示)
        1.2.2 ROS文件的组织方式
        1.2.4 集成开发工具
    1.3 ROS系统架构
        1.4 ROS调试工具
            1.4.1 命令行工具
                roscore、rosrun、roslaunch(上机演示)
                rosnode、rostopic、rosservice、rosparam、rosmsg、rossrv、rosbag(上机演示)
                catkin_init_workspace、catkin_create_pkg、catkin_make(上机演示)
                rospack、rosinstall、rosdep(上机演示)
            1.4.2 可视化工具
                rviz(上机演示)
                rqt(上机演示)
        1.3.1 从计算图视角理解ROS架构
        1.3.2 从文件系统视角理解ROS架构
        1.3.3 从开源社区视角理解ROS架构
    1.5 ROS节点通信
        1.5.1 话题通信方式(上机演示)
        1.5.2 服务通信方式(上机演示)
        1.5.3 动作通信方式(上机演示)
    1.6 ROS的其他重要概念
        parameter
        tf
        urdf
        launch
        plugin
        nodelet
    1.7 ROS2.0展望
第2章:C++编程范式
    2.1 C++工程的组织结构
        2.1.1 C++工程的一般组织结构
        2.1.2 C++工程在机器人中的组织结构
    2.2 C++代码的编译方法
        2.2.1 使用g++编译代码(上机演示)
        2.2.2 使用make编译代码(上机演示)
        2.2.3 使用CMake编译代码(上机演示)
    2.3 C++编程风格指南
第3章:OpenCV图像处理
    3.1 认识图像数据
        3.1.1 获取图像数据
            从图片文件获取(上机演示)
            从视频文件获取(上机演示)
            从相机设备获取(上机演示)
        3.1.2 访问图像数据
    3.2 图像滤波
        3.2.1 线性滤波
            均值滤波
            高斯滤波
        3.2.2 非线性滤波
            中值滤波
            双边滤波
        3.2.3 形态学滤波
    3.3 图像变换
        3.3.1 射影变换
            欧式变换(上机演示)
            相似变换(上机演示)
            仿射变换(上机演示)
            射影变换(上机演示)
        3.3.2 霍夫变换
        3.3.3 边缘检测
        3.3.4 直方图均衡
    3.4 图像特征点提取
        3.4.1 SIFT特征点(上机演示)
        3.4.2 SURF特征点(上机演示)
        3.4.3 ORB特征点(上机演示)
第4章:机器人传感器
    4.1 惯性测量单元
        4.1.1 工作原理
            测量方法
                加速度测量
                角速度测量
                地磁测量
            性能指标
            芯片选型
        4.1.2 原始数据采集
            硬件电路搭建
            固件驱动开发
            上位机ROS驱动程序(上机演示)
        4.1.3 参数标定(上机演示)
        4.1.4 数据滤波
        4.1.5 姿态融合
            卡尔曼滤波
                问题建模
                数学推导
                具体实现(上机演示)
            互补滤波
                Madgwick算法
                Mahony算法
    4.2 激光雷达
        4.2.1 工作原理
            测距原理
                三角测距
                TOF测距原理
            扫描原理
                单线激光雷达
                多线激光雷达
                其他激光雷达
        4.2.2 性能参数
        4.2.3 数据处理
            上位机ROS驱动程序(上机演示)
            扫描点处理
            扫描点的时间同步
                纯估计法
                里程计辅助法
    4.3 相机
        4.3.1 单目相机
            单目相机原理
            上位机ROS驱动程序(上机演示)
                ROS驱动功能包usb_cam
                ROS驱动功能包gscam
                自制基于OpenCV的驱动功能包
            单目相机标定(上机演示)
            单目图像传输
        4.3.2 双目相机
            双目相机原理
            上位机ROS驱动程序(上机演示)
            双目相机标定(上机演示)
            双目图像传输
        4.3.3 RGB-D相机
            结构光测量深度
            TOF测量深度
    4.4 带编码器的减速电机
        4.4.1 电机
        4.4.2 电机驱动电路
        4.4.3 电机控制主板
            上、下位机主板方案对比
            PID控制
            通信协议
        4.4.4 轮式里程计
第5章:机器人主机
    5.1 X86与ARM主机对比
    5.2 ARM主机树莓派3B+
        5.2.1 安装Ubuntu MATE 18.04(上机演示)
        5.2.2 安装ROS melodic(上机演示)
        5.2.3 装机软件与系统设置(上机演示)
            开机自动登录
            超级用户root密码创建
            扩展SWAP空间
            WiFi连接设置
            安装vim文本编辑器
            安装ssh远程登录工具
            USB外设绑定
            ROS节点开机自启动
    5.3 ARM主机RK3399
    5.4 ARM主机Jetson-tx2
    5.5 分布式架构主机
        5.5.1 ROS网络通信(上机演示)
        5.5.2 机器人程序的远程开发
            远程登录(上机演示)
            远程编辑文件(上机演示)
            远程文件系统挂载
            远程桌面
            远程数据可视化(上机演示)
                ROS网络通信
                rviz

第6章:机器人底盘
    6.1 底盘运动学模型
        6.1.1 两轮差速模型
            前向运动学
            逆向运动学
            轮式里程计
        6.1.2 四轮差速模型
            前向运动学
            逆向运动学
            轮式里程计
            估计跟踪问题
        6.1.3 阿克曼模型
            前向运动学
            逆向运动学
            轮式里程计
            估计跟踪问题
        6.1.4 全向模型
            前向运动学
            逆向运动学
            轮式里程计
        6.1.5 其他模型
    6.2 底盘性能指标
        6.2.1 载重能力
        6.2.2 动力性能
        6.2.3 控制精度
        6.2.4 里程计精度
    6.3 典型机器人底盘搭建
        6.3.1 底盘运动学模型选择
        6.3.2 传感器选择
        6.3.3 主机选择
第7章:SLAM中的数学基础
    7.1 SLAM发展简史
        7.1.1 数据关联、收敛和一致性
            数据关联
            收敛性
            一致性
        7.1.2 SLAM的基本理论
            滤波方法
            优化方法
    7.2 SLAM中的概率理论
        7.2.1 状态估计问题
        7.2.2 概率运动模型
            速度运动模型
            里程计运动模型
        7.2.3 概率观测模型
            波束模型
            似然域模型
        7.2.4 概率图模型
            概率论基础
            贝叶斯网络
            因子图
    7.3 估计理论
        7.3.1 估计量的性质
            一致性
            偏差性
        7.3.2 估计量的构建
            最大似然估计
            最小二乘估计
            贝叶斯估计
                最小均方误差估计
                最大后验估计
        7.3.3 各估计量对比
            从策略角度对比
            从模型角度对比
            等价转换关系
    7.4 基于贝叶斯网络的状态估计
        7.4.1 贝叶斯估计
        7.4.2 参数化实现
            卡尔曼滤波
                KF
                EKF
                UKF
            信息滤波
                IF
                EIF
        7.4.3 非参数化实现
            直方图滤波
            粒子滤波
    7.5 基于因子图的状态估计
        7.5.1 非线性最小二乘估计
        7.5.2 直接求解方法
        7.5.3 优化方法
            梯度下降算法
            最速下降算法
            高斯-牛顿算法(GN)
            列文伯格-马夸尔特算法(LM)
            狗腿算法(DogLeg)
        7.5.4 各优化方法对比
        7.5.5 常用优化工具
            图优化工具g2o(上机演示)
            非线性优化工具Ceres-Solver(上机演示)
            增量优化工具GTSAM
    7.6 典型SLAM算法
第8章:激光SLAM系统
    8.1 Gmapping算法
        8.1.1 原理分析
            RBPF的滤波过程
                采样
                重要性权重
                重采样
                地图估计
            RBPF的建议分布改进
            RBPF的重采样改进
            改进RBPF的滤波过程
        8.1.2 源码解读
        8.1.3 安装与运行(上机演示)
            Gmapping安装
            Gmapping在线运行
            Gmapping离线运行
    8.2 Cartographer算法
        8.2.1 原理分析
            局部建图
                扫描匹配
                地图结构
                局部优化
            闭环检测
            全局建图
        8.2.2 源码解读
            cartographer_ros功能包
            cartographer核心库
            Ceres-Solver非线性优化库
        8.2.3 安装与运行(上机演示)
            Cartographer安装
            Cartographer在实际机器人中运行
    8.3 LOAM算法
        8.3.1 原理分析
        8.3.2 源码解读
        8.3.3 安装与运行(上机演示)
第9章:视觉SLAM系统
    9.1 ORB-SLAM2算法
        9.1.1 原理分析
            特征点法
                特征提取
                特征匹配
                模型构建
            三维空间运动
                欧拉角、旋转矩阵、四元数
                转移矩阵
                李群、李代数
            多视图几何
                2D-2D模型
                    对极约束
                    本质矩阵E与基础矩阵F
                    单应矩阵H
                    三角化重建
                    BA优化
                3D-2D模型
                    DLT
                    P3P
                    EPnP
                    BA优化
                3D-3D模型
                    ICP
                    BA优化
            ORB-SLAM2系统框架
                地图结构
                地图初始化
                位置识别
                    构建视觉单词的离线字典
                    构建图像序列的在线数据库
                    应用词袋模型
                追踪线程
                局部建图线程
                闭环线程
        9.1.2 源码解读
            System类
            Map、MapPoint、Frame和KeyFrame类
            Initializer类
            KeyFrameDatabase类
            ORBextractor类和ORBmatcher类
            PnPsolver类
            Sim3Solver类
            Optimizer类
            Tracking、LocalMapping和LoopClosing类
        9.1.3 安装与运行(上机演示)
            ORB-SLAM2安装
            ORB-SLAM2离线运行
            ORB-SLAM2在线运行
        9.1.4 拓展
            ORB-SLAM3
    9.2 LSD-SLAM算法
        9.2.1 原理分析
            直接法
                重投影误差与光度误差对比分析
                特征点法与直接法优缺点分析
            LSD-SLAM系统框架
                地图结构
                追踪
                深度估计
                地图优化
        9.2.2 源码解读
        9.2.3 安装与运行
    9.3 SVO算法
        9.3.1 原理分析
            半直接法
            SVO系统框架
        9.3.2 源码解读
第10章:其他SLAM系统
    10.1 RTABMAP算法
        10.1.1 原理分析
            RTABMAP系统框架
            内存管理机制
            里程计节点
            局部地图
            闭环检测与图优化
            全局地图
        10.1.2 源码解读
            rtabmap_ros功能包
            rtabmap核心库
        10.1.3 安装与运行
            RTABMAP安装
            RTABMAP离线运行
            RTABMAP在线运行
    10.2 VINS算法
        10.2.1 原理分析
            标定
                IMU内参标定
                单目相机内参标定
                IMU与单目相机外参标定
                拓展
            数据融合
                松耦合
                紧耦合
                松耦合与紧耦合对比
            VINS系统框架
                观测预处理模块
                初始化模块
                VIO融合模块
                全局优化模块
        10.2.2 源码解读
        10.2.3 安装与运行(上机演示)
    10.3 机器学习与SLAM
        10.3.1 机器学习
            发展历程
                线性模型
                核模型
                神经网络模型
                概率图模型
                决策树
                组合模型
                基于训练样本的模型学习过程
            神经网络
                前向网络
                卷积网络
                循环网络
            深度学习
                计算机视觉
                自然语言处理
                人工智能+
            应用实践(上机演示)
        10.3.2 CNN-SLAM算法(上机演示)
        10.3.3 DeepVO算法(上机演示)

第11章 :主导航中的数学基础
    11.1 自主导航
    11.2 环境感知
        11.2.1 实时定位
            被动定位
            主动定位
        11.2.2 环境建模
            二维栅格地图
            三维栅格地图
        11.2.3 语义理解
    11.3 路径规划(上机演示)
        11.3.1 常见的路径规划算法
            基于图结构的路径搜索
                Dijkstra
                A*
                D*
            基于采样的路径搜索
                PRM
                RRT
        11.3.2 带约束的路径规划算法
            什么是约束
                完整约束与非完整约束
                硬约束与软约束
                定常约束与非定常约束
            几何约束
            微分约束
        11.3.3 覆盖的路径规划算法
    11.4 运动控制
        11.4.1 基于PID的运动控制
        11.4.2 基于MPC的运动控制
        11.4.3 基于强化学习的运动控制
    11.5 强化学习与自主导航
        11.5.1 强化学习
            马尔可夫决策过程
                马尔可夫性、马尔可夫过程和马尔可夫决策过程
                价值函数
                贝尔曼方程
                贝尔曼最优方程
                马尔可夫决策过程求解方法
            动态规划方法
                策略迭代
                价值迭代
                广义策略迭代
            采样方法
                蒙特卡洛
                时间差分
            价值函数逼近
            策略搜索
        11.5.2 基于强化学习的自主导航
            AutoRL
            PRM-RL
第12章:典型自主导航系统
    12.1 ros-navigation导航系统
        12.1.1 原理分析
            AMCL
            Costmap代价地图
            ros-navigation系统框架
                定位(上机演示)
                障碍度量(上机演示)
                路径规划(上机演示)
                恢复策略(上机演示)
        12.1.2 源码解读
            可选功能包
            必选功能包
            插件接口组件
            全局路径规划插件
            局部路径规划插件
            代价地图插件
            恢复策略插件
            其他
        12.1.3 安装与运行(上机演示)
            ros-navigation安装
            ros-navigation在实际机器人中运行
                机器人平台相关节点的配置与启动
                    运动控制与轮式里程计节点
                    传感器节点
                    传感器静态tf节点
                地图供应节点的配置与启动
                全局定位节点的配置与启动
                导航核心节点的配置与启动
                    顶层壳体move_base的配置
                    代价地图的配置
                    路径规划插件的配置
        12.1.4 路径规划改进
            基于图搜索的全局路径规划插件SBPL_Lattice_Planner
                SBPL_Lattice_Planner与SBPL的安装
                在move_base中加载SBPL_Lattice_Planner插件
            基于采样的全局路径规划插件srl_global_planner
            基于弹性带的局部路径规划插件teb_local_planner
        12.1.5 环境探索
            frontier_exploration
            rrt_exploration
    12.2 riskrrt导航系统
    12.3 autoware导航系统
    12.4 导航系统面临的一些挑战
第13章:机器人SLAM导航综合实战
    13.1 运行机器人上的传感器
        13.1.1 运行底盘的ROS驱动(上机演示)
        13.1.2 运行激光雷达的ROS驱动
        13.1.3 运行IMU的ROS驱动
        13.1.4 运行相机的ROS驱动
        13.1.5 运行底盘的urdf模型 
        13.1.6 传感器一键启动
    13.2 运行SLAM建图功能
        13.2.1 运行激光SLAM建图功能
        13.2.2 运行视觉SLAM建图功能
        13.2.3 运行激光与视觉联合建图功能
    13.3 运行自主导航
    13.4 基于自主导航的应用

以上是《机器人SLAM导航核心技术与实战》学习线路,我将以此为基础,自学一系列相关内容,并且分享给大家。

 

 

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

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

相关文章

Git介绍与相关操作

git简介 git是用于版本控制的软件,保留历史记录,便于回溯 GitHub中文官方文档 访问GitHub GitHub520 无法访问GitHub太常见了,主要方法就是查ip,改本地host文件。 GitHub520本质也是修改hosts来实现,但是无需手动查…

Pycharm Debug调试技巧

Pycharm Debug调试 Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。 常见的Python Bug包括: 语法错误:例如拼写错误、缺少冒号、使用了错误的缩进等等。逻辑错误:程序可以…

草图大师su通过照片建模建筑 零插件sketchup

打开sketchup,相机-匹配新照片。照片的要求: “匹配照片”最适合主要由直角组成的结构。您肯定至少需要一个直角才能使用匹配照片。使用从角落以大约 45 度角拍摄的照片。上图来自谷歌街景图是以 45 度角拍摄的图像示例。如果您正在拍照,则可…

模糊数学求传递闭包(C语言)

一、问题描述 我们在模糊数学中利用传递闭包法进行聚类分析的时候,需要求模糊相似矩阵的传递闭包,对于阶数比较高的矩阵,手工计算太过于繁琐,我们可以借助程序实现。 我们先来看一下模糊矩阵的合成规则: 设为有限论域…

ChatGPT能取代传统伪原创工具吗?

文章伪原创工具是一种计算机辅助写作工具,通过算法和技术实现对原有文章内容进行修改和改写,生成新的、看起来不同于原文的文章,以达到避免抄袭和提高原创性的目的。今天我们来聊聊传统伪原创工具和使用ChatGPT进行文章改写的优缺点。 一、传…

【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C++ Linux Web Server 面试基础篇-操作系统(一、Linux基础)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及…

CVE-2021-27905 Apache Solr SSRF漏洞

预备知识 1. 漏洞信息 漏洞编号:CVE-2021-27905 漏洞名称:Apache Solr SSRF漏洞 漏洞描述:Apache Solr是一个开源的搜索服务,使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器,是Apache Lucene项目的开源…

在Claude穿越千年,问了孔子人生问题

📕如果大家还不知道Claude的话,可以先了解下,它是chatgpt最大的竞争对手。他有很多的知识,能做的事情也非常的多。 今天我们就让他用孔子的思想来跟我们对话,看看他会怎么回答我们的人生问题。 我们先问问他&#xf…

组播协议的RP

某组播网络示意图如图,其中MCS1是组播地址(G1)的组播源,PC1和PC2是组G1的接收者。 1.上述组播网络中,端口1、2、3需要运行哪些协议,为什么需要运行这些协议?(仅填必配的组播协议)详细写出具体原因 结合上述拓扑,考虑到存在RP场景,因此运行组播路由协议为PIM-SM协议,…

『pyqt5 从0基础开始项目实战』07. 次数清零与多行数据删除(保姆级图文)

目录 导包和框架代码 次数清零按钮添加绑定事件实现数据清零 数据删除按钮添加绑定事件实现删除功能完整代码总结 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 导包和框架代码 请…

GEE:Gmeans图像分割

G-means是一种聚类算法,它是基于K-means算法的改进版本。K-means算法的一个主要缺点是需要事先指定聚类的数量,而G-means算法则可以自动确定聚类的数量。 G-means算法使用了类似于K-means的迭代过程,但在每次迭代时,它会检查每个聚类是否可以继续细分为两个子聚类。这个检…

保护你的数字资产:网络安全的重要性和应对策略

网络安全已经成为现代企业和组织的重要问题。在数字化的时代,网络攻击和安全威胁的规模和复杂性不断增加,因此保护数字资产变得越来越重要。而Log360作为一款全面的网络安全解决方案,可以帮助企业识别、分析和应对网络安全威胁,从…

【PyTorch】第六节:乳腺癌的预测(二分类问题)

作者🕵️‍♂️:让机器理解语言か 专栏🎇:PyTorch 描述🎨:PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语💓:🐾没有白走的路,每一步都算数&#…

【SCI电气】考虑不同充电需求的电动汽车有序充电调度方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Python】【进阶篇】二十、Python爬虫实现Cookie模拟登录

目录 二十、Python爬虫实现Cookie模拟登录20.1 注册登录20.2 分析网页结构20.3 编写完整程序 二十、Python爬虫实现Cookie模拟登录 在使用爬虫采集数据的规程中,我们会遇到许多不同类型的网站,比如一些网站需要用户登录后才允许查看相关内容&#xff0c…

【获奖案例巡展】信创先锋之星——甘肃省住房和城乡建设厅住建数据大脑

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…

推进数字化转型进程,AntDB数据库协同神州云动共促新发展

当今,数字化转型已成为企业发展的必由之路。随着新技术的不断发展和市场的日益竞争,越来越多的企业开始意识到数字化转型的重要性,在帮助企业数字化转型过程中,高效的客户关系管理软件和具有灵活性、可伸缩的数字底座,…

关于于pyreadline模块的py3k_compat.py的函数collections.Callable兼容性问题

上图警告的官网链接地址 上图警告信息是一个警告信息,提醒你在代码中使用了即将被弃用的函数或配置项,建议及时修改以避免在将来的版本中出现不兼容的情况。具体解释如下: 这段段警告信息来自于pyreadline模块的py3k_compat.py文件,提示你使用了collections模块中即将被弃用…