技术分享 | ROS与Gazebo的通信机制

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | ROS与Gazebo的通信机制相关的知识,希望对你有一定的参考价值。

做机器人算法的相信大家对ROS和Gazebo都不陌生,可以说是我们的两大利器,ROS全称机器人操作系统,它为我们提供了软件操作平台,我们可以方便的在ROS的软件框架下编写我们自己的机器人算法。gazebo是一款功能强大的三维物理仿真平台,具备强大的物理引擎、高质量的图形渲染、方便的编程与图形接口,最重要的是其开源免费的特性。

那么下面我们一起来认识一下gazebo和ros到底是怎么搭配一起工作的?Gazebo和ros他们的功能完全不一样,内部的消息机制以及驱动也相去甚远,那么它们之间是怎么通信的呢?

这是官方给出的框架图 从图上我们可以看到,当ros的消息传递过来的时候,它并没有给gazebo,而是给了Controller Manager中的一个controller,经过controller中的控制器计算出来相应的值之后,数据流入了JointCommand接口中,然后由这个接口转交给gazebo模块;当gazebo计算数据完成之后,数据也是先流入一个叫做JointState的接口中,随后又流入了一个controller中,这个controller再将消息发布出去。

这个模块就是我们今天要介绍的主角ros_control功能包,它重写ros原有的pr2_mechanism包,使得它能够控制所有机器人,而并不仅止于PR2。下图是ros_control的工作流程,可以看到它将机器人执行器关节状态数据和期望状态作为输入。它使用一般的控制回路反馈机制(通常是PID控制器),来控制输出(通常为力矩)。

ros_control的架构

  • Controller 控制器:读取硬件资源接口中的状态,发布控制指令。不直接接触硬件,从硬件抽象层请求资源;
  • Controller Manager 控制器管理器:管理不同控制器的通用接口;
  • RobotHW 机器人硬件抽象:直接和硬件资源交互,通过 write 和 read 方法完成硬件操作。管理硬件资源,处理硬件冲突;
  • RobotHW 机器人硬件抽象:直接和硬件资源交互,通过 write 和 read 方法完成硬件操作。管理硬件资源,处理硬件冲突;

下面我们主要了解一下Controller 控制器和Controller Manager 控制器管理器。

控制器 Controller ros_control提供的controller的种类如下: 控制器管理器 Controller Manager 用于管理多个控制器,实现控制器的加载、运行、停止等操作。

1、命令行操作

  • rosrun controller_manager controller_manager 包括:

load unload start stop spawn: load & start kill: stop & unload

  • 查看某个控制器状态 rosrun controller_manager controller_manager 包括: list list-types reload-libraries reload-libraries –restore

2、launch

3、可视化工具 rosrun rqt_controller_manager rqt_controller_manager

以上就是gazebo和ros的通讯机制,希望小编有帮助到您更清晰的了解gazebo和ros。如果想深入了解某个部分可以查看 ros官网:http://wiki.ros.org/ros_control

  • End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

以上是关于技术分享 | ROS与Gazebo的通信机制的主要内容,如果未能解决你的问题,请参考以下文章

ROS和Gazebo进行机器人仿真

技术分享 | 4点带你快速理解ROS2通信

ROS与ROS2通讯机制的区别

12.27-ros-gazebo基础

解决ROS中gazebo卡在Waiting for service /gazebo/spawn_urdf_model

ROS 下运行gazebo 和rviz gazebo吃了很多内存,导致电脑死机