技术分享 | 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 <command> <controller_name> <command> 包括:
load unload start stop spawn: load & start kill: stop & unload
- 查看某个控制器状态 rosrun controller_manager controller_manager <command> <command> 包括: list list-types reload-libraries reload-libraries –restore
2、launch <launch> <node pkg="controller_manager" type="spawner" args="controller_name1 controller_name2" /> </launch>
3、可视化工具 rosrun rqt_controller_manager rqt_controller_manager
以上就是gazebo和ros的通讯机制,希望小编有帮助到您更清晰的了解gazebo和ros。如果想深入了解某个部分可以查看 ros官网:http://wiki.ros.org/ros_control
- End -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
IO多路复用原理分析以及技术延伸分析
前言 前不久在和搞技术朋友聊天的时候聊到了IO多路复用问题,当时为了解决IO瓶颈问题就没有深入研究,问题解决之后,工作之余进行深入研究,便记录下来,供给需要的小伙伴进行学习与研究提供一种思路。为了加深对IO多路复用机制理解,以及了解IO多路复用局限性,前面主要对基本概念以及一些常见问题分析,同时也回顾下UNIX网络编程中五种IO模型,本篇重点学习理解IO多路复用的底层实现机制。 概念说明 IO多路复用有三种实现方式,在介绍select、poll、epoll之前,我们先介绍下UNIX/Linux中几个基本概念 用户空间与内核空间 进程切换 进程的阻塞 文件描述符 缓存I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对于32位系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次幂)。操作系统核心就是内核。可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。 针对Unix/Linux操作系统而言,将最高的1G字节(从虚拟地址0xC00...
- 下一篇
网络协议之:加密传输中的NPN和ALPN
网络协议之:加密传输中的NPN和ALPN 文章目录 简介 SSL/TLS协议 NPN和ALPN 总结 简介 自从HTTP从1.1升级到了2,一切都变得不同了。虽然HTTP2没有强制说必须使用加密协议进行传输,但是业界的标准包括各大流行的浏览器都只支持HTTPS情况下的HTTP2协议。 那么怎么在HTTPS之中加入HTTP2协议的支持呢?今天本文将会跟大家聊一下SSL/TLS协议的扩展NPN和ALPN。 SSL/TLS协议 SSL(Secure Socket Layer)安全套接层,是1994年由Netscape公司设计的一套协议,并与1995年发布了3.0版本。 TLS(Transport Layer Security)传输层安全是IETF在SSL3.0基础上设计的协议,实际上相当于SSL的后续版本。 SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。 TLS主要分为两层,底层的是TLS记录协议,主要负责使用对称密码对消息进行加密。 上层的是TLS握手协议,主要分为握手协议,密码规格变更协议和应用数据协议4个部分。 其中最重要的就是握手协议,通过客户端和服务器端的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)