舟山气象台,荆门市会计网,艾微库
下面是Cmakelists文件的一个例子。
从上到下依次指定了Cmake的版本、project的名字、ROS工程所依赖的c++的版本、另外是依赖的库文件,最后生成可执行文件以及这个文件所链接的依赖库。
2.Eclipse下编译ROS基本工程
工程建立好之后,catkin build可以直接对工程进行编译。直接用 catkin build去编译,会把整个工程目录里面的所有的package进行统一编译,如果是构建一个比较复杂的系统,可能一个文件夹包含了很多节点或者package包,编译时间会比较久,可以通过指定package名,编译某一个固定的package包,提升编译效率。
下面介绍在Eclipse下如何编译ROS基本工程
首先是设置工作ROS工作区,然后将ROS package导入到Eclipse设置的工作区。
通过Eclipse提供的build或者run等功能去调试ROS工程。同时Eclipse里面提供的快捷键在编译程序里面同样适用。
3.通过hello world 了解ROS基本的运行逻辑
上图的hello world程序展现了ROS框架写Node所使用的核心要素:
Include 就是include ROS的一个基本环境;
Main函数里面有三行需要重点注意:
1.init:引入ROS的一个基本环境,指定节点使用的node名字和一些参数信息;
2.NodeHandle:node和整个ROS框架进行通信所使用的一个句柄指针;
3.数据发送的频率:looprate(10)以10赫兹发送消息。
最底下的while循环以10赫兹的消息频率进行发送,同时进行计数。
Spinonce:有一帧消息就把这消息立马发送出去,同时进行下一轮的消息等待。
4.ROS提供的日志系统
在示例程序里面有一个ROS_INFO,它就是ROS提供的日志系统;
ROS的日志系统是分级的,即在编写节点程序的时候对打印的信息进行分级,对不同的分级,ROS会提供不同的颜色和格式进行展示。分级的作用是为了帮助开发者快速地定位到关键信息,不会对整个节点的逻辑产生实质性的影响。
日志系统提供了两种格式ROS_INFO与ROS_INFO_stream:
ROS_INFO:默认把信息打印到当时运行的屏幕上。
ROS_INFO_stream:它是流式数据,默认输出到后台这个节点所对应的日志文件。
5.ROS提供的subscriber和publisher功能