ROS kinetic版本的官方安装教程
http://wiki.ros.org/Installation/Ubuntu?distro=kinetic
与其他操作系统类似,一个ROS程序的不同组件是放在不同的文件夹下的,这些文件夹是根据功能的不同来进行分类的。在ROS中每个不同的组件,就是一个个的功能包,同一类型的功能包又是放在同一类型功能包下的。其组织结构如下图所示:
工作空间
工作空间下有三个文件夹,src,devel,build。
- src 源空间主要用来放置功能包,项目等。其中,文件 CMakeLists.txt 是用来配置功能包。
- build 编译空间,里面主要用来存放编译生成的各种文件,msg,srv等经过编译生成的头文件就放在这里。
- devel 开发空间,其中最重要的就是setup.bash(.zsh等),经过编译的消息,需要source 一下这个文件。
工作空间的创建:
首先,新建工作空间的文件夹,举例,在home下创建
$ mkdir -p ~/catkin_ws/src
进入该src文件夹下
$ cd ~/catkin_ws/src
初始化工作空间
$ catkin_init_workspace
初始化完成后,空间内生成了一个 CMakeLists.txt 用来在系统中声明这个工作空间。
工作空间的编译
$ cd ~/catkin_ws/
$ catkin_make
编译完成后,可以看到catkin_ws中多了,devel和build两个文件夹。
设置环境变量
在bash中添工作空间的环境变量,并让这些环境变量在终端生效。
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
后期查看环境
$ echo $ROS_PACKAGE_PATH
就可以看到相关设置好的环境变量信息。
创建功能包
首先,回到工作空间的src文件夹下,
$ cd ~/catkin_ws/src
创建功能包的格式为
catkin_create_pkg package_name depend1 depend2 … dependn
package_name 功能包名称(功能包的名称需要用小写,且无特殊符号)
depend1 depend2 … dependn 相关的依赖项
创建功能包
$ catkin_create_pkg ros_learning std_msgs roscpp rospy
std_msgs : ROS的常见消息格式
roscpp : 用C++实现ROS各种功能
rospy : 用python实现ROS各种功能
在创建完功能包,并在包里面完善好相关功能后,对功能包进行编译
$ cd ~/catkin_ws
$ catkin_make
功能包内包含有一系列的不同类型文件和文件夹,如下所示:
include 文件夹: 把要用的头文件放在这里
msg 文件夹 : 自定义的 msg 文件放在此处
scripts 文件夹: 把 python 等其他可执行脚本文件
src 文件夹: 存放相关源文件
srv 文件夹: 服务文件
launch 文件夹: 把 launch 文件放在这里
CMakeList.txt : 功能包的配置文件,相关依赖等在这个文件中进行编辑
package.xml : 功能包清单文件
后面,会专门介绍一下 CMakeList.txt 和 package.xml 这两个文件的配置。
最后,列举一些功能包相关的工具使用:
rospack
列出本地功能包
$ rospack list
查找某个pkg的位置
$ rospack find package_name
roscd
跳转到pkg的目录下
$ roscd package_name
rosls
列举出功能包下的文件
$ rosls package_name
rosdep
安装相应功能包的依赖项
$ rosdep install package_name
rosed
编辑功能包下的某个文件
$ rosed package_name file_name
roscp
从功能包下拷贝出一个文件到目标文件夹目录
$ roscp package_name file_name [target directory]