我们学习ros是为了什么?
在我看来:ros是一种协议,框架,库还有连接高度集合的集合体。
就拿我学习机器人视觉的直观感受来讲:
从硬件配备来讲:一个linux系统的小主机是我们机器人的根本所在,没这个东西大家都没得玩。
从通信的角度来讲:当我们的算法成功跑出结果之后,如果不把他传递给中间处理层,那这坨数据就是一摊废物。即:数据无法互通,我需要记录得出结果的独立路径,通过某种协议把数据传输给中间处理层,告诉他:“小y的数据来了,给我速度分析结束然后把相对应的结果传输给机械臂”
那么谁是这一切的大前提呢?
:ros
在上述过程结束后,我们通过视觉,语言,导航的信息就可以被中间层的某种协议恰到好处的处理掉,那么学会独立处理建立协议,定向处理数据,输出数据这一套过程,就是我们学习ros的目的
ros中有三种通信机制:话题通信 服务通信 参数服务器(数据共享)
在进行视觉的封装过程中,使用次数比较多的还是话题通信。
话题通信更像是在不停在的吐出数据,而服务通信需要一个中间商master做中介
先想一个问题:一次成功的话题通信都需要什么?
1:发布方(pub)接收方(sub)
2:框架:包
在大致明白了我们需要做什么之后我们开始介绍相关包(库)
1:Cmakelist,CMAKE
ex:
#进入终端
#进入工程包
cd visual_part_WS
catkin_make
通过编写简单的 CMakeLists.txt 规则文件,就能自动生成 makefile 文件,并且 CMake 是跨平台的,十分强大。ROS 的编译器便是 CMake,为了更加人性化,ROS 在 CMake 基础上封装了 catkin 命令,用 cmake 命令创建功能包时,会自动生成 CMakeList.txt 文件,已配置了多数编译选项,且包含详细的注释,只需稍作修改便可编译自己的文件。在每次catkin-make的时候系统都会找到每个工程包下的CMake.
我们平常所使用的:catkin_make,在终端经行运行命令之后,找到每个工程文件下的CMake.list文件
CMake.list文件直接表明了:这个工程项目要依赖哪些包,编译的最终结果是什么。既是:由源码到目标文件的过度使用。
注1:catkin 是 ROS 定制的编译构建系统,是对CMake的扩展
注2:Cmake文件中有其他名称
在Cmake文件CMakeLists.txt中有一个add_executable宏定