ros的节点与包

ros节点(node)与包(package)是ros系统的重要基本组成部分,依照官网说明做一个简单的整理,详细的参考官网教程

官网网址:https://wiki.ros.org/cn/ROS/Tutorials

简单理解一下节点与包的区别,节点是功能单元,包是文件单元。实现具体功能的是节点,包含节点文件,及launch等文件的一个文件整体叫一个包。而且,一个包里面可以包含多个节点或插件。

在一个包里,CMakeList.txt可以简单理解为节点的编译文件,package.xml可以简单理解为包的描述文件

ros工作目录与文件系统

c++下,ros使用catkin_make指令进行编译,可认为是结合了 cmake 与make指令,官方教程里建议我们把工作空间命名为catkin_ws,ws指的就是工作空间(workspace)。

工作空间文件夹里包含devel 和 build和src三个文件夹,src是我们的源码,在工作空间下运行catkin_make编译命令后,编译出devel和build文件夹,工程才可以执行。

创建

创建包的时候,可以自己根据需要建立文件夹,添加文件,也可以利用catkin_create_pkg指令自动创建

管理

编译 catkin_make

使用前需要source工作空间下的devel/setup.bash(或zsh)文件,在此之前还需要source一下ros自身的setup文件,如source /opt/ros/melodic/setup.zsh,但使用者一般会把这一步设置成开机自动运行

rospack 为包的管理指令,rospack list可以查看系统中现有的包的名称,除此之外还有很多功能,可自行探索

节点

创建

在创建包的过程中,就可以把节点搭建起来了

管理

rosrun为启动节点的命令,此外还可以编写launch文件,使用roslaunch命令启动节点

rosnode为节点的管理指令, rosnode list 可以查看现有节点名称,rosnode还可以使用list之外的很多命令,可以自己探索

roscore 故名思义,roscore是ros的核心,节点正常工作的前提是roscore正常运行

简单介绍一下ros节点编程中一些常用语句

ros::init

顾名思义,初始话用的

ros::NodeHandle

顾名思义,节点句柄,它也可以执行节点初始话,也可以对节点进行销毁等操作,是个很重要的工具

ros::rate

循环工具,循环在ros中很常用,这可以帮你定义一个指定频率的ros循环

ros::ok

很好理解,只要没出啥意外,这玩意就是true,一般在while循环中使用

ros::spin

启动自循环

ros::spinOnce

字面理解,启动单次自循环

ros::shutdown

这家伙被调用的时候,就意味着你的节点要关闭了,

roslaunch
启动文件,可用于启动ros节点

CMakeList.txt

如上文所说,这东西其实是用来编译节点的,想深入理解它的话,可以尝试系统的学习一下cmake和CMakeList的使用方法,

package.xml

顾名思义,这才是描述节点的文件,这个文件标签化的管理了ros软件包的元信息

你可能感兴趣的:(ros,机器人)