ROS学习笔记02:ROS架构与基础
摘要
本文介绍了ROS(机器人操作系统)的架构及其基本使用方法。文章分为三部分:
ROS架构
ROS分为三个层次:OS层→中间层→应用层,并附有相关图示说明。
第一个ROS例程
- 介绍了turtlesim功能包的核心节点turtlesim_node及其提供的服务与话题接口。
- 列出了turtlesim功能包中的参数及背景色设置,并提供了相关安装命令。
- 详细说明了如何通过启动节点管理器(如roscore)、乌龟仿真器节点(如rosrun turtlesim turtlesimnode)以及键盘控制节点(如rosrun turtlesim turtleteleop_key)进行基本操作。
创建工作空间与功能包- 指导用户如何创建并配置工作空间及功能包。
- 包括创建工作空间目录、使用catkininitworkspace初始化、编译工作空间以及配置环境变量等步骤,并附有相关命令示例及截图说明。
文章目录
- 一、Robot Operating System架构
-
- (1)turtlesim功能模块
-
-
- 服务与主题接口
-
- 参数配置
-
-
- (1)turtlesim功能模块
(二)控制乌龟运动
-
- 1、第一步是开启节点管理器
-
- 2、第二步是激活乌龟仿真器相关的节点
-
-
3、第三步是启用键盘控制功能
-
三、创建工作空间和功能包
-
- (一)工作空间典型结构
- (二)创建工作空间
-
- 1、创建工作空间
- 2、编译工作空间
- 3、让环境变量生效
-
一、ROS架构
ROS架构包含有三层结构:OS层→核心层→上层应用模块


二、第一个ROS例程
(一)turtlesim功能包
turtlesim功能包以其turtlesim_node节点为核心构建,并提供了一个直观的可视化界面来实现各种乌龟仿真的操作。该系统支持对多种ROS基础功能模块进行测试与验证,并通过相应的接口对外交互。每个ROS功能包独立作为一个单元存在,并包含多个子节点来完成特定的功能需求。这些组件通过话题、服务和参数等接口对外交互以完成数据传输与协作任务。
1、话题与服务
| 名 称 | 类 型 | 描 述 | |
|---|---|---|---|
| 话题订阅 | turtleX/cmd_vel | geometry _msgs/Twist | 控制乌龟角速度与线速度的输入指令 |
| 话题发布 | turtleX/pose | turtlesim/Pose | 乌龟的姿态信息,包括x与y的坐标位置、角度、线速度和角速度 |
| 服务 | clear | std_srvs/Empty | 清除仿真器中的背景颜色 |
| 服务 | reset | std_srvs/Empty | 复位仿真器到初始配置 |
| 服务 | kill | turtlesim/Kill | 删除一只乌龟 |
| 服务 | spawn | turtlesim/Spawn | 新生一只乌龟 |
| 服务 | turtleX/set_pen | turtlesim/SetPen | 设置画笔的颜色和线宽 |
| 服务 | turtleX/teleport_absolute | turtlesim/TeleportAbsolute | 移动乌龟到指定姿态 |
| 服务 | turtleX/teleport_relative | turtlesim/TeleportRelative | 移动乌龟到指定的角度和距离 |
2、背景色参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| 〜background_b | int | 255 | 设置背景蓝色通道颜色值 |
| 〜background_g | int | 86 | 设置背景绿色通道颜色值 |
| 〜background_r | int | 69 | 设置背景红色通道颜色值 |
*turtlesim功能包订阅速度控制指令用于实现乌龟在仿真器中的移动操作,并实时获取乌龟的位置姿态信息以更新仿真状态。我们可以通过服务调用实现删除、创建新乌龟等功能。
- 查看是否安装了turtlesim功能包,请执行命令:
apt list --installed | grep turtlesim

可以查看当前状态显示系统已配置完成turtlesim功能组件。若尚未配置,则可通过执行命令sudo apt-get install ros-melodic-turtlesim来完成turtlesim功能组件的安装。
(二)控制乌龟运动
1、启动节点管理器
- 执行命令:
roscore,启动ROS Master(节点管理器)

- 可以看到,turtlesim功能包的核心服务已经启动。
2、启动乌龟仿真器节点
请在新开一个终端窗口中输入命令:rosrun turtlesim turtlesim_node,以启动可视化仿真器界面。

[ INFO] [1649822056.720669300]: Starting turtlesim with node name /turtlesim
[ INFO] [1649822056.726389421]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
- 新生一只乌龟[turtle1],位置:x=[5.544445], y=[5.544445], 朝向:theta=[0.000000](乌龟头朝向x轴正方向)

3、启动键盘控制节点
- 在新终端执行命令:
rosrun turtlesim turtle_teleop_key

- 获取当前输入设备的信息,并通过方向键控制虚拟乌龟移动,在操作界面右下角显示当前状态
- 在确保键盘能够有效控制终端激活的前提下,在计算机界面上操作方向键时会触发相应动作
- 在该系统中运行后,在屏幕底部会实时显示小乌龟当前位置及运动轨迹

- 这个看似简单的小乌龟例程,蕴含着ROS最基础的原理和机制。
三、创建工作空间和功能包
(一)工作空间典型结构
directory用于存储和管理工程源代码和其他相关资料。
Fuerte版本之后的ROS采用了Catkin编译系统。
一个典型Catkin编译系统下的工作空间通常会包括特定的应用程序相关的几个目录结构。


(二)创建工作空间
1、创建工作空间
- 创建工作空间目录,进入该目录,运行工作空间初始化命令

ied@ubuntu:~$ mkdir -p ~/catkin_ws/src
ied@ubuntu:~$ cd ~/catkin_ws/src
ied@ubuntu:~/catkin_ws/src$ catkin_init_workspace
2、编译工作空间
- 在工作空间根目录下使用
catkin_make命令编译整个工作空间

编译过程中,在操作空间根目录内默认会创建build和devel两个目录及其内部文件。当编译完成后,在devel目录中将会生成多个setup.*sh形式的环境变量配置脚本。

3、让环境变量生效
- 执行命令:
source devel/setup.bash,让环境变量在当前终端有效

- 执行命令:
echo $ROS_PACKAGE_PATH,检查环境变量是否生效

运行以下命令以确保指定的环境变量在所有终端设备上保持有效状态:将指向/ catkin_ws/devel/setup.bash文件的源指令重定向到/ users/yourname/.bashrc文件中。

- 新开一个终端,执行命令:
echo $ROS_PACKAGE_PATH,检查环境变量是否生效

