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

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

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

命名规范

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

第4章 OpenCv

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

OpenCv与PCL

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

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 16:34:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 16:34:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 16:34:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 16:34:01       18 阅读

热门阅读

  1. MapReduce-Join多种应用

    2024-03-10 16:34:01       20 阅读
  2. MySQL中UNION和UNION ALL的区别

    2024-03-10 16:34:01       19 阅读
  3. 云计算高级课程作业

    2024-03-10 16:34:01       20 阅读
  4. CentOS 8使用笔记

    2024-03-10 16:34:01       18 阅读
  5. CCF-CSP真题201403-2《窗口》(结构体+数组)

    2024-03-10 16:34:01       17 阅读
  6. misc40

    misc40

    2024-03-10 16:34:01      19 阅读
  7. python实现回溯算法

    2024-03-10 16:34:01       21 阅读
  8. Svelte之基础知识一

    2024-03-10 16:34:01       24 阅读
  9. 读书·基于RISC-V和FPGA的嵌入式系统设计·第3章

    2024-03-10 16:34:01       21 阅读