ROS学习笔记_01:工作空间及功能包

1. ROS安装:

每个ROS版本对应一个Ubuntu版本

UBUNTU ROS End of time
14.04 LTS indigo Igloo April,2019
16.04 LTS Kinetic Kame April,2021
18.04 LTS Melodic Morenia April,2023
20.04 LTS Noetic Ninjemys
(Recommended)
April,2025

下一个ROS长期支持版本Humble Hawksbill将于2022年5月发布,对应Ubuntu 22.04 LTS。
官网:https://www.ros.org/

2. ROS构架:

ROS可以看作是一种中间件,沟通代码和真正的操作系统(如Linux)。
ROS由四部分组成:框架+工具+功能+社区
ROS学习笔记_01:工作空间及功能包_第1张图片
ROS中把进程或可执行文件称为节点(Node),如上图所示,有5个Node,通过节点管理器(master)进行通信。

3. ROS的工程结构:

一个典型的ROS工程结构如下图,包含 catkin workspace (Catkin 工作空间)package (功能包)
ROS学习笔记_01:工作空间及功能包_第2张图片
1. Catkin 工作空间

Catkin是ROS定制的编译构建系统,是对CMake的扩展,负责组织和管理功能包的文件夹,以catkin工具编译。ROS学习笔记_01:工作空间及功能包_第3张图片
目标文件包含:生成的头文件、动态链接库、静态链接库、可执行文件

其中,src是写代码的地方,是由我们自己创建的,可以放多个package,没有创建package前是空的。 ROS学习笔记_01:工作空间及功能包_第4张图片
2. package(功能包)

package(功能包) 是ROS的基本组织形式,也是Catkin的基本编译单元。一个package可以包含多个Node(节点)。Package的完整结构如下:
ROS学习笔记_01:工作空间及功能包_第5张图片

  • CMakeLists.txt(必须): 规定Catkin的编译规则

  • package.xml(必须): 自我描述,定义package的属性信息,如包名、版本、作者等。一般只需要改就可以了。

  • scripts: 用于存放一些shell或python脚本

  • include: 源代码的头文件

  • src: 源代码,如cpp文件、py文件等

  • msg: 自定义消息格式,*.msg

  • srv: 自定义服务,*.srv

  • action: 自定义动作,*.action

  • config: 参数、设置文件等,如*.yaml

  • launch: 启动规则文件,*.launch,配合roslaunch命令可以一次运行多个可执行文件

3. ROS实践

1.创建工作空间

//打开终端
mkdir -p ~/catkin_ws/src  //创建~/catkin_ws/src目录
cd catkin_ws              //切换到工作空间根目录
catkin_make               //初始化工作空间

//作用:在当前bash环境下读取并执行FileName中的命令。
//这一步不要忘了,也可以添加到~/.bashrc,这样就不用每次打开都输入一遍
source ~/catkin_ws/devel/setup.bash

此时:

  • catkin_ws 目录下build、devel文件夹被创建
  • src 目录下CMakeLists.txt被创建

2.创建功能包 或 下载功能包

  • 创建功能包
cd src //切换到 src 目录下
//用法:catkin_create_pkg 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
注:若不加依赖,则不会创建 include、src 目录
完成后,你就可以开始代码工作了

  • 代码完成后编译
cd catkin_ws              //切换到工作空间根目录
catkin_make               //编译
  • 下载功能包
    对于从Github上clone或下载下来的代码
 cd ~/catkin_ws/src
git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
cd ~/catkin_ws
// 安装工作空间下所有软件包的依赖项,kinetic要按你的ROS版本修改
// 可能报错,自行百度
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y 
catkin_make
source ~/catkin_ws/devel/setup.bash    //再次强调,一般添加到~/.bashrc

4. package常用命令

ROS学习笔记_01:工作空间及功能包_第6张图片ROS学习笔记_01:工作空间及功能包_第7张图片

你可能感兴趣的:(学习,自动驾驶,ubuntu)