ROS中的常用组件

ROS不仅为机器人开发提供了分布式通信框架,而且提供了大量实用的组件工具。

这些ROS中的常用组件,开发更加“丰满”的机器人系统。

  • launch启动文件:通过XML文件实现多节点的配置和启动。

  • TF坐标变换:管理机器人系统中繁杂的坐标系变换关系。

  • Qt工具箱:提供多种机器人开发的可视化工具,如日志输出、计算图可视化、数据绘图、参数动态配置等功能。

  • rviz三维可视化平台:实现机器人开发过程中多种数据的可视化显示,并且可通过插件机制无限扩展。

  • gazebo仿真环境:创建仿真环境并实现带有物理属性的机器人仿真。

  • rosbag数据记录与回放:记录并回放ROS系统中运行时的所有话题信息,方便后期调试使用。

launch启动文件

到目前为止,每当我们需要运行一个ROS节点或工具时,都需要打开一个新的终端运行一个命令。当系统中的节点数量不断增加时,“每个节点一个终端”的模式会变得非常麻烦。那么有没有一种方式可以一次性启动所有节点呢?答案当然是肯定的。

启动文件(Launch File)便是ROS中一种同时启动多个节点的途径,它还可以自动启动ROS Master节点管理器,并且可以实现每个节点的各种配置,为多个节点的操作提供很大便利。

TF坐标变换

坐标变换是机器人学中一个非常基础同时也是非常重要的概念。机器人本体和机器人的工作环境中往往存在大量的组件元素,在机器人设计和机器人应用中都会涉及不同组件的位置和
姿态,这就需要引入坐标系以及坐标变换的概念。

ROS中的常用组件_第1张图片
某位姿在A、B两个坐标系下的坐标变换,如上图所示的A、B两个坐标系,A坐标系下的位姿可以通过平移和旋转变换成B坐标系下
的位姿,这里的平移和旋转可以通过4×4的变换矩阵来描述,其理论原理可以参考机器人学的理
论教程。
坐标变换是机器人系统中常用的基础功能,ROS中的坐标变换系统由TF功能包维护。

Qt工具箱

为了方便可视化调试和显示,ROS提供了一个Qt架构的后台图形工具套件——
rqt_common_plugins,其中包含不少实用的工具。
在使用之前,需要使用以下命令安装该Qt工具箱:

sudo apt-get install ros-kinetic-rqt
sudo apt-get install ros-kinetic-rqt-common-plugins

日志输出工具(rqt_console)

qt_console工具用来图像化显示和过滤ROS系统运行状态中的所有日志消息,包括info、
warn、error等级别的日志。使用以下命令即可启动该工具:

rqt_console

ROS中的常用组件_第2张图片
当系统中有不同级别的日志消息时,rqt_console的界面中就会依次显示这些日志的相关内
容,包括日志内容、时间戳、级别等。当日志较多时,也可以使用该工具进行过滤显示。

计算图可视化工具(rqt_graph)

qt_graph工具可以图形化显示当前ROS系统中的计算图。在系统运行时,使用如下命令即
可启动该工具:

 rqt_graph

ROS中的常用组件_第3张图片

rviz三维可视化平台

机器人系统中存在大量数据,比如图像数据中0~255的RGB值。但是这种数据形态的值往
往不利于开发者感受数据所描述的内容,所以常常需要将数据可视化显示,例如机器人模型的
可视化、图像数据的可视化、地图数据的可视化等,如图4-17所示。
ROS针对机器人系统的可视化需求,为用户提供了一款显示多种数据的三维可视化平台
——rviz。
rviz是一款三维可视化工具,很好地兼容了各种基于ROS软件框架的机器人平台。在rviz
中,可以使用XML对机器人、周围物体等任何实物进行尺寸、质量、位置、材质、关节等属性
的描述,并且在界面中呈现出来。同时,rviz还可以通过图形化方式,实时显示机器人传感器的
信息、机器人的运动状态、周围环境的变化等。总而言之,rviz可以帮助开发者实现所有可监测
信息的图形化显示,开发者也可以在rviz的控制界面下,通过按钮、滑动条、数值等方式控制机
器人的行为。

ROS中的常用组件_第4张图片

安装并运行rviz

rviz已经集成在桌面完整版的ROS中,如果已经成功安装桌面完整版的ROS,可以直接跳过
这一步骤,否则,请使用如下命令进行安装:

$ sudo apt-get install ros-kinetic-rviz

安装完成后,在终端中分别运行如下命令即可启动ROS和rviz平台:

$ roscore
$ rosrun rviz rviz

启动成功的rviz主界面如图4-18所示。

ROS中的常用组件_第5张图片
rviz主界面主要包含以下几个部分:

·0:3D视图区,用于可视化显示数据,目前没有任何数据,所以显示黑色。
·1:工具栏,用于提供视角控制、目标设置、发布地点等工具。
·2:显示项列表,用于显示当前选择的显示插件,可以配置每个插件的属性。
·3:视角设置区,用于选择多种观测视角。
·4:时间显示区,用于显示当前的系统时间和ROS时间。
rviz的运行已经没问题,那么如何将数据在rviz中可视化显示出来呢?

Gazebo仿真环境

仿真/模拟(Simulation)泛指基于实验或训练的目的,以及原本的系统、事务或流程,建立一个模型以表征其关键特性或者行为/功能,予以系统化与公式化,以便对关键特征进行模拟。当所研究的系统造价昂贵、实验的危险性大或需要很长时间才能了解系统参数变化所引起的后果时,仿真是一种特别有效的研究手段,目前已经广泛应用于电气、机械、化工、水力、热力、经济、生态、管理等领域。

Gazebo是一个功能强大的三维物理仿真平台,具备强大的物理引擎、高质量的图形渲染、方便的编程与图形接口,最重要的还有其具备开源免费的特性。虽然Gazebo中的机器人模型与rviz使用的模型相同,但是需要在模型中加入机器人和周围环境的物理属性,例如质量、摩擦系数、弹性系数等。机器人的传感器信息也可以通过插件的形式加入仿真环境,以可视化的方式进行显示。

Gazebo的特点

Gazebo是一个优秀的开源物理仿真环境,它具备如下特点:
1)动力学仿真:支持多种高性能的物理引擎,如ODE、Bullet、SimBody、DART等。

2)三维可视化环境:支持显示逼真的三维环境,包括光线、纹理、影子。
3)传感器仿真:支持传感器数据的仿真,同时可以仿真传感器噪声。
4)可扩展插件:用户可以定制化开发插件以扩展Gazebo的功能,满足个性化的需求。
5)多种机器人模型:官方提供PR2、Pioneer2 DX、TurtleBot等机器人模型,当然也可以使用自己创建的机器人模型。

6)TCP/IP传输:Gazebo的后台仿真处理和前台图形显示可以通过网络通信实现远程仿真。
7)云仿真:Gazebo仿真可以在Amazon、Softlayer等云端运行,也可以在自己搭建的云服务器上运行。

8)终端工具:用户可以使用Gazebo提供的命令行工具在终端实现仿真控制。

安装并运行Gazebo
与rviz一样,如果已经安装了桌面完整版的ROS,那么可以直接跳过这一步,否则,请使用
以下命令进行安装:

$ sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control

安装完成后,在终端中使用如下命令启动ROS和Gazebo:

$ roscore
$ rosrun gazebo_ros gazebo

Gazebo启动成功后的界面如图

ROS中的常用组件_第6张图片
ROS中的常用组件_第7张图片
主界面中主要包含以下几个部分。
·0:3D视图区。
·1:工具栏。
·2:模型列表。
·3:模型属性项。
·4:时间显示区。
验证Gazebo是否与ROS系统成功连接,可以查看ROS的话题列表:

$ rostopic list

如果连接成功,应该可以看到Gazebo发布/订阅的如下话题列表:

/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state

rosbag数据记录与回放

为了方便调试测试,ROS提供了数据记录与回放的功能包——rosbag,可以帮助开发者收
集ROS系统运行时的消息数据,然后在离线状态下回放。

你可能感兴趣的:(ROS2,AGV,人工智能,机器人,人工智能)