1、package结构

一个package下常见的文件、 路径有:
├── CMakeLists.txt #package的编译规则(必须)
├── package.xml #package的描述信息(必须)
├── src/ #源代码文件
├── include/ #C++头文件
├── scripts/ #可执行脚本
├── msg/ #自定义消息
├── srv/ #自定义服务
├── models/ #3D模型文件
├── urdf/ #urdf文件
├── launch/ #launch文件

CMakeLists.txt: 定义package的包名、 依赖、 源文件、 目标文件等编译规则, 是package
不可少的成分
package.xml: 描述package的包名、 版本号、 作者、 依赖等信息, 是package不可少的成
分 src
src/: 存放ROS的源代码, 包括C++的源码和(.cpp)以及Python的module(.py)
include/: 存放C++源码对应的头文件
scripts/: 存放可执行脚本, 例如shell脚本(.sh)、 Python脚本(.py)
msg/: 存放自定义格式的消息(.msg)
srv/: 存放自定义格式的服务(.srv)
models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等)
urdf/: 存放机器人的模型描述(.urdf或.xacro)
launch/: 存放launch文件(.launch或.xml)

以上路径中, 只有 CMakeLists.txt package.xml 是必须的, 其余路径根据软件包是否需要来决定。

2、package的创建
创建一个package需要在 catkin_ws/src 下,用到 catkin_create_pkg 命令, 用法是:

catkin_create_pkg package depends

其中package是包名, depends是依赖的包名, 可以依赖多个软件包。

例如, 新建一个package叫做 test_pkg ,依赖roscpp、 rospy、 std_msgs(常用依赖)。

$ catkin_create_pkg test_pkg roscpp rospy std_msgs

这样就会在当前路径下新建 test_pkg 软件包, 包括:
├── CMakeLists.txt
├── include
│ └── test_pkg
├── package.xml
└──
src
catkin_create_pkg 帮你完成了软件包的初始化, 填充好了 CMakeLists.txt 和 package.xml ,
并且将依赖项填进了这两个文件中。

3、package相关命令

rospack
rospack是对package管理的工具, 命令的用法如下:

以上命令如果package缺省, 则默认为当前目录(如果当前目录包含package.xml)

roscd
roscd 命令类似与Linux系统的 cd , 改进之处在于 roscd 可以直接 cd 到ROS的软件包。

rosls
rosls 也可以视为Linux指令 ls 的改进版, 可以直接 ls ROS软件包的内容。

rosdep
rosdep 是用于管理ROS package依赖项的命令行工具, 用法如下:

一个较常使用的命令是 rosdep install --from-paths src --ignore-src --rosdistro=kinetic -
y ,用于安装工作空间中 src 路径下所有package的依赖项( 由pacakge.xml文件指定)

package结构的更多相关文章

  1. 【Python】 关于import和package结构

    关于import语句 python程序需要使用某个第三方模块的话要用import语句,其实就是把目标模块的内容加载到内存里.当然,在加载之前,python会按照一定的顺序寻找sys.path中的目录. ...

  2. ROS笔记1 安装及创建一个ROS Package

    安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package ...

  3. Spring Boot工程结构推荐程结构(最佳实践)

    工程结构(最佳实践) Spring Boot框架本身并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们减少可能会遇见的坑,尤其是Spring包扫描机制的存在,如果您使用最佳实践的工程 ...

  4. Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系

    Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...

  5. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  6. 第二章 编写与设置Servlet

    2.1 第一个Servlet package cc.openhome; import javax.servlet.ServletException; import javax.servlet.http ...

  7. Flask备注4(Structure)

    Flask备注4(Structure) package 通过Flask可以非常简单的通过一个module(一个py文件)创建一个简单的application.这种简单程序的文件结构如下: /youra ...

  8. TJI读书笔记09-访问控制权限

    TJI读书笔记09-访问控制权限 包,package和import 权限修饰符 接口和实现 类的访问权限控制 首先问一个问题,为什么要有访问控制权限? 安全,这当然是一个很重要的原因. 让类库的使用者 ...

  9. Atitit.软件的建模种类and 建模语言选型and UML???

    Atitit.软件的建模种类and  建模语言选型and UML??? 1. 4大的建模种类:ui建模,业务流程建模 , 业务对象建模, 数据库建模 1 2. 文本还是图片化(推荐)的建模 1 3.  ...

随机推荐

  1. Golang beego ORM + CRUP 操作详解

      构建beego Web 项目         首先构建一个beego 的web 项目,这个我们完全可以参考beego 官网中的开发文档,上面介绍的非常的详细,在这我就不给大家介绍,主要是介绍ORM ...

  2. CSS关于文本渲染的属性text-rendering

    CSS关于文本渲染的属性text-rendering告诉渲染引擎工作时如何优化显示文本. 浏览器会在渲染速度.易读性(清晰度)和几何精度方面做一个权衡. 我们知道,SVG-可缩放矢量图形(Scalab ...

  3. Code Signal_10分钟挑战题_constructArray

    完成时间3分06秒 Given an integer size, return an array containing each integer from 1 to size in the follo ...

  4. 关于Datagridview控件用法的一些总结

    一.引言 Datagridview控件在winform开发中还是比较常用,一般的数据库系统都会使用它,但是想要友好的展示数据,形成良好的用户界面,那么就要对c#库中默认的Datagridview设置进 ...

  5. js-权威指南学习笔记15

    第十五章 脚本化文档 1.文档对象模型DOM是表示和操作HTML和XML文档内容的基础API. 2.Document.Element.Text是Node的子类. 3.查询文档的一个或多个元素有如下方法 ...

  6. [转]vue数据绑定(数据,样式,事件)

    1.mounted 与 methods 与 computed 与 watched区别 From:https://blog.csdn.net/qinlulucsdn/article/details/80 ...

  7. p2p手机绑定

    本文工具类     http://www.cnblogs.com/jokerq/p/8590498.html 1.需求分析 2.设计分析 3.前台页面(freemarker) <script t ...

  8. ios 为什么拖拽的控件为weak 手写的strong

    ib拖拽的控件自动声明为weak  而平时自己手写的为strong 在ios中,对象默认都是强引用,不是强引用赋值后会立即释放 ib声明weak 不立即被释放 简单说就是 1.声明的弱引用指向强引用 ...

  9. eclipse打成可运行jar包,清空运行路径选项

    到eclipse的工作空间找到/.metadata/.plugins/org.eclipse.debug.core/.launches文件夹,清空:然后重启eclipse即可:

  10. python及pandas,numpy等知识点技巧点学习笔记

    python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...