• ROS读书记录1:机器人SLAM导航核心技术与实战1



    视频参考: 《机器人SLAM导航核心技术与实战》书籍配套教学视频

    第一章

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    第2章 ROS相关知识

    ROS:机器人开发平台
    ①ROS是一个分布式通信框架(最核心的本质
    ②ROS是一个开发工具的集台
    ③ROS是一系列开源软件包

    计算机中程序的通信分为:①进程内通信 (程序内通信)
    ②进程间通信 (程序间通信)
    ③跨计算机通信 (设备间通信)
    ROS=进程通信+网络通信;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ROS中程序=进程=节点;
    topic:多对多;解耦合,可以分开设计;
    service:多对一;实时性更高;
    action:
    消息类型分为:标准消息类型和自定义消息类型;标准的消息类型可以参考下面的网站
    https://wiki.ros.org/std_msgs
    ROS1的特点:中心化,XMLRPC/TCP/UDP传输;
    ROS2.0的特点:去中心化,DDS信息传输方式。兼容ROS1,通过Bridge机制。
    在这里插入图片描述

    第3章 C++编程范式

    SLAM选C++不选Python的原因:
    实时性方面,C++要优于Python,Python是对程序员友好的编程语言,C++是对计算机友好的编程语言。Python一般用来开发跟实时性无关的功能,比如车道识别/动态物体追踪。
    Python可以跨平台,是因为程序运行在Python虚拟机上。
    在这里插入图片描述

    C++编译

    在这里插入图片描述
    在这里插入图片描述
    静态链接库 libxx.o结尾是.O;动态链接库 libxx.so结尾是.SO;
    静态库:会打包所有的二进制文件,这样bin文件较大。缺点:程序升级麻烦。可能只改动了一个小的库,但是要升级所有的文件。
    动态库:不用强行打包到一起,程序运行的时候自动查找库。这样就避免重复打包公用库,bin文件会较小。缺点:可能会有库不兼容问题。

    g++

    示例代码和执行流程

    cd dero/
    g++ foo.cpp main.cpp -o demo
    ./demo
    
    • 1
    • 2
    • 3

    makefile

    类似一个脚本文件;
    示例代码和执行流程

    start:
    g++ -o foo.o -c foo.cpp
    g++ -o main.o -c main.cpp
    g++ -o demo foo.o main.o
    clean:
    rm -rf foo.o main.o
    
    //执行流程
    cd demo/
    make
    make clean
    ./demo
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    CMake

    比Make更智能,会自动处理引用关系
    写在CMakeLists.txt文件中
    示例代码和执行流程

    cmake_minimum_required (VERSION 2.8]
    project(demo)
    
    include_directories("$[PROJECT_BINARY_DIR)")
    
    add_library(foo foo.cPp)  // 编译成库
    addLexecutable (demo main.cpp)  // 编译成可执行文件
    target_link libraries (demo foo)   // 链接
    
    // 执行流程
    cd demo/
    cmake .
    make
    ./demo
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    命名规范

    成员变量:m+驼峰;package用大驼峰;

    第4章 OpenCv

    图像处理是利用计算机对图像进行计算分析的技术,包括数字图像处理和计算机视觉两大领域。
    数字图像处理:初级算法,滤波、缩放、分割;
    计算机视觉:高级算法,识别、追踪;
    常见图片处理库:口OpenCV、Halcon、Matlab、PIL、skimage。
    AI图片处理平台:TensorFlow、PyTorch、Caffe。
    在这里插入图片描述

    OpenCv与PCL

    单目相机得到的数据一般是2维的,所以需要OpenCv来进行处理;
    双目、RGB-D相机、激光雷达得到的数据一般是3维的,需要PCL来进行点云处理。

  • 相关阅读:
    【驱动开发】实现三盏灯的控制,编写应用程序测试
    11、监测数据采集物联网应用开发步骤(8.2)
    ucharts最详细教程(含踩坑记录)
    svelte初探-中
    算法通关村第十三关——幂运算问题解析
    Fourier变换中的能量积分及其详细证明过程
    读书记录 《就算生得暗淡,也要活得光彩》
    SAP S4 FI后台详细配置教程- PART4 (科目及税费相关配置篇)
    【VUE】
    c++内存管理
  • 原文地址:https://blog.csdn.net/qq_45113070/article/details/136430810