ROS学习笔记4-创建一个ROS包
本文内容来源于官方wiki,http://wiki.ros.org/ROS/Tutorials/CreatingPackage
- 一个catkin包包含什么
- 必须包含package.xml文件,该文件用来描述包相关信息。
- 必须有一个catkin使用的CMakeLists.txt文件。
- 每个包必须有自己的文件夹。
一个简单包结构如下:my_package/
CMakeLists.txt
package.xml
- catkin 工作空间(workspace)中的包
建议catkin包在catkin 工作空间中工作,虽然也可以单独构建包。
一个典型的catkin 工作空间文件结构如下:workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n在继续之前,先看一下如何创建一个catkin工作空间。
- 创建catkin工作空间。
装了ROS后可以使用该命令安装catkin,$ source /opt/ros/kinetic/setup.bash
使用如下命令创建一个catkin工作空间,名字为catkin_ws:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make使用ls命令查看,可以看出已经出现build,devel,src的子目录。
然后运行:$ source devel/setup.bash
$ echo $ROS_PACKAGE_PATH返回如下:
/home/spy/catkin_ws/src:/opt/ros/kinetic/share
可以看出,环境变量中已经包含了该工作空间中的目录。
- 创建一个catkin包
可以使用catkin_create_pkg命令创建一个catkin包,该命令语法如下:# This is an example, do not try to run this
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]例如如下命令:
$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp创建一个名为 beginner_tutorials 的包,依赖项为 std_msgs rospy 和roscpp
输出如下:Created file begginner_tutorials/CMakeLists.txt
Created file begginner_tutorials/package.xml
Created folder begginner_tutorials/include/begginner_tutorials
Created folder begginner_tutorials/src
Successfully created files in /home/shao/catkin_ws/src/begginner_tutorials. Please adjust the values in package.xml.可以看出,该命令自动创建了一些文件。其中包括CMakeLists.txt和package.xml这些文件。
- 编译catkin包
使用如下命令$ cd ~/catkin_ws
$ catkin_make则会自动将所有包都编译,包括刚创建的beginner_tutorials包。
catkin_make命令实际上调用了cmake命令,关于更多catkin_make的信息,请参考catkin/commands/catkin_make
- 包依赖
- 一级依赖
在使用catkin_create_pkg命令创建包时可以指定一些依赖项,可以rospack命令查看这些依赖项:$ rospack depends1 begginner_tutorials
则返回:
roscpp
rospy
std_msgs这些依赖信息存储在package.xml中,可以查看package.xml。
- 间接依赖
一级依赖项可能存在自己的依赖,这些称之为间接依赖,例如,rospy包又存在自己的依赖项:$ rospack depends1 rospy
genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs - 全部依赖
使用rospack depends命令可以查看全部依赖项$ rospack depends begginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
catkin
genmsg
genpy
message_runtime
gencpp
geneus
gennodejs
genlisp
message_generation
rosbuild
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
rospy
- 一级依赖
- 定制包信息
可以通过定制package.xml的信息来定制包的元信息,关于更详细信息请参考package.xml
同时,CMakeLists.txt用于编译包,该文件也可以定制。
ROS学习笔记4-创建一个ROS包的更多相关文章
- ROS学习笔记七:在ROS中使用USB摄像头
下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...
- ROS学习笔记(一) # ROS参数服务器
参考 roscpp/Overview/Parameter Server 0. 概述 ROS参数服务器能够保存 string, int, float, double, bool, list, dicti ...
- ROS学习笔记三(理解ROS节点)
要求已经在Linux系统中安装一个学习用的ros软件包例子: sudo apt-get install ros-indigo-ros-tutorials ROS图形概念概述 nodes:节点,一个节点 ...
- yii学习笔记--快速创建一个项目
下载yii框架 下载地址:http://www.yiiframework.com/ 中文网站:http://www.yiichina.com/ 解压文件
- django examples 学习笔记(1)创建一个独立的python环境
pip install virtualenv 创建一个虚拟环境 virtualenv my_env 创建一个独立的环境 source my_env/bin/activate 激活 ...
- ROS学习笔记(三)——ROS安装
安装指南: indigo安装 http://wiki.ros.org/indigo/Installation/Ubuntu 中文参考教程: http://wiki.ros.org/cn 1.配置Uba ...
- DirectX11 学习笔记3 - 创建一个立方体 和 轴
该方案将在进一步的程序 面向对象. 独立的模型类.更像是一个框架. 其中以超过遇到了一个非常有趣的问题,.获得一晚.我读了好几遍,以找到其他的列子.必须放在某些功能Render里面实时更新,而不是仅仅 ...
- ROS学习笔记(二) # ROS NodeHandles
1. 自动启动和关闭 ros::NodeHandle nh: 这段代码执行之后,如果内部节点还没有启动,ros::NodeHandle 会启动这个节点:一旦所有的 ros::NodeHandle 实例 ...
- Html+css学习笔记一 创建一个网页
第一个网页 新建一个记事本,把名字改成first.html <html> <head> <title>MyFristHtml</title> </ ...
随机推荐
- jvm 内存,线程,gc分析
1.查看 gc的次数,和各个垃圾回收区域的内存比例 jstat : jstat -gcutil pid interval(ms) 例子:jstat -gcutil 332 1000 参数说明如下: ...
- 连接mysql,oracle的命令 以及导入sql文件
Oracle 1,sqlplus username/password 导入: 2,@后面跟着sql文件的路径,回车,导入数据 @D:/test.sql; 导入完毕,输入commit; MySQL: ...
- ubuntu---查看、安装、切换内核
首先可以查看一下内核列表:sudo dpkg --get-selections | grep linux-image 查看Linux中安装了哪些内核: dpkg --get-selection ...
- 【Fine学习笔记】python 文件l操作方法整理
python脚本可以对excel进行创建.读.写.保存成指定文件名,保存到指定路径的操作.整理了以下处理方法: 首先区别几个操作方式: "r" 以读方式打开,只能读文件 , 如 ...
- HttpClient和HtmlUnit的比较总结以及使用技巧
本文转自: https://blog.csdn.net/zstu_cc/article/details/39250903 https://blog.csdn.net/zstu_cc/article/d ...
- Jmeter-maven-plugin github 版本插件变更历史
https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/blob/master/CHANGELOG.md
- pycharm 右键无法显示unittest框架&&解决右键只有unittest 运行如何取消右键显示进行普通run
上面是普通文件和unittest 导入的文件右键快捷键显示情况,可以看出两者快捷键都是ctr+shift+F10,如果你是右键模式想运行unitest,但是又不知道哪里配置unittest直接运行快捷 ...
- 爬虫(十四):Scrapy框架(一) 初识Scrapy、第一个案例
1. Scrapy框架 Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展程度非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架. 1.1 Scrapy介绍 ...
- GlusterFS分布式文件系统概述
一.GlusterFS概述 GlusterFS是一个开源的分布式文件系统,同时也是Scale-Out存储解决方案Gluster的核心,在存储数据方面有强大的横向扩展能力,通过扩展不同的节点可以支持PB ...
- (踩过的坑)使用Github Page搭建个人博客
最近需要搭建一个网站,作为导航网址,但是自己的域名备案还要等上几天,就想着有没有别的办法来搭建一个公网可以访问的网站. Github Page的话是一个github个人主页,完全适合用来搭建普通网站. ...