功能包是什么?
英文表述package,我可没有在炫英文啊,我的英文很烂的,只是在提醒大家,在ROS系统中,这个词使用的频率非常之高,你必须记住它,要不就没法正确的看懂信息。言归正传,package是什么呢?指的是一种特定的文件结构和文件夹组合。
如何识别一个package呢?
通俗点儿的方式,就是找manifest.xml文件,这本来就是一个用来描述package相关的各类信息的一个文档,打开后可以看到包的名称、依赖关系等,下图就是一个manifest.xml的样子。当然,是用xml格式编写的,看不懂的xml的话,翻我另一篇博文就成了,如果一个文件夹下有这样一个文件,那这个文件夹描述的就有百分之九十的可能是package,为什么是有可能呢?请耐心看我下文道来。
建立package需要用到的几个简单指令
第一个:
cd ~
怎么样?非常简单吧!这条指令表示进入用户在该系统的home目录下,进行操作;如果你需要需要进入不同目录下进行操作,也可以用这个指令,比如,我想要进入到home目录下的一个叫catkin_ws的文件夹下的一个叫src文件夹下的一个叫做smartcar_description的文件夹里进行操作。
那我就可以:
就是通过这样,来回的切换目标目录的。
第二个:roscreate-pkg [package_name] [depend1] [depend2] [depend3]
这些依赖(depend)包括:std_msgs(包含了常见消息类型,表示基本数据类型和其他的消息构造)和rospy(一个ROS的纯python客户端库),roscpp(一个ROS的纯c++客户端库)
说的这么枯燥,其实经常使用的格式就是:
roscreate-pkg package的名字 std_msgs rospy roscpp,后边的depend基本上不咋变。
比如,建立一个输入 roscreate-pkg zeshou std_msgs rospy roscpp
第三个:
rosmake
用此命令来编译功能包,如果你没有编译,或者说你没有这步,就说明你这个package虽然形式上建立起来了,但实质上还没有跟底层进行连接,这就是为什么我说有 manifest.xml但也有可能不是功能包,我在执行的时候就遇到了,只完成了roscreate-pkg,但没rosmake,就死活用rospack 找不到,快怀疑人生了都,后来又试试了,有的时候,能找到,有的时候又找不到,见鬼了?—— ——(反正流程就是这)
第四个:
rospack find package_name
这个的作用是用来查找目标的
该怎么建立一个package呢?
还不会啊,按上面四个代码一个一个敲就行了。
选定文件夹->创建功能包roscreat-pkg->把新建的功能包编译rosmake->查找一下试试rospack
题外记:
为什么我创建的这个功能包取名叫zeshou呢?因为最近刚刚看到那个文那在一席演讲,特别喜欢她创作的这个角色:泽寿!你喜欢吗?