ROS1.0学习笔记(1)ROS系统架构以及概念

ROS kinetic版本的官方安装教程
http://wiki.ros.org/Installation/Ubuntu?distro=kinetic
与其他操作系统类似,一个ROS程序的不同组件是放在不同的文件夹下的,这些文件夹是根据功能的不同来进行分类的。在ROS中每个不同的组件,就是一个个的功能包,同一类型的功能包又是放在同一类型功能包下的。其组织结构如下图所示:
ROS1.0学习笔记(1)ROS系统架构以及概念_第1张图片

工作空间

工作空间下有三个文件夹,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]

你可能感兴趣的:(ROS,学习笔记)