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

2023-05-16

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

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

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

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

ros_control的架构

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

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

控制器 Controller ros_control提供的controller的种类如下: file 控制器管理器 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科技的教育和智能装备,让机器人研发更高效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

技术分享 | ROS与Gazebo的通信机制 的相关文章

  • 如何处理PHP开发中的单元测试和自动化测试?

    如何处理PHP开发中的单元测试和自动化测试 需要具体代码示例 随着软件开发行业的日益发展 单元测试和自动化测试成为了开发者们重视的环节 PHP作为一种广泛应用于Web开发的脚本语言 单元测试和自动化测试同样也在PHP开发中扮演着重要的角色
  • 从零开始搭建自动化测试平台,构建自动化测试平台的最全指南!

    前言 随着软件开发的不断进步 测试工程师也需要跟上趋势并适应新的测试方法 自动化测试已成为现代测试领域中不可或缺的一部分 它可以提高测试效率 减少测试成本 并且可以避免人为错误对测试结果的影响 在这篇文章中 我们将介绍如何构建一个自动化测试
  • 从自动化视角去思考测试人员的职业发展!

    在近年来 技术的不断进步促生了大量新的工具 理论和实践方法 自动化测试在实际工作中已形成了多种理论和实践模式 对于推动这些技术发展背后的原因 我认为值得深入探索和回顾 下面先聊聊一下先自动化测试相关的发展 仅个人观点 自动化测试发展历程 以
  • Web自动化测试流程:从入门到精通,帮你成为测试专家

    摘要 Web应用程序在今天的软件开发中占据着越来越重要的地位 保证Web应用程序的质量和稳定性是非常必要的 而自动化测试是一种有效的方法 本文将介绍Web自动化测试流程 并提供代码示例 步骤一 选取测试工具 选择适合自己团队的自动化测试工具
  • 性能测试怎么入门?一文7个知识点带你成功入门!

    一 相关概念 1 性能测试相关 负载测试 性能测试 压力测试 稳定性测试 全链路测试等 2 性能指标 吞吐率 tps 并发用户数 吞吐量 响应时间等 二 性能测试 1 概念解析 通过工具 找出或者获得系统在不同工况下的性能指标值 主要使用性
  • 性能测试 —— 生成html测试报告、参数化、jvm监控

    1 生成HTML的测试报告 1 1配置 1 找到 jmeter 的安装目录 下的bin中的jmeter properties jmeter配置文件 2 ctrl f 搜索jmeter save saveservice output form
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • 性能测试怎么入门?一文7个知识点带你成功入门!

    一 相关概念 1 性能测试相关 负载测试 性能测试 压力测试 稳定性测试 全链路测试等 2 性能指标 吞吐率 tps 并发用户数 吞吐量 响应时间等 二 性能测试 1 概念解析 通过工具 找出或者获得系统在不同工况下的性能指标值 主要使用性
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • JMeter 批量接口测试

    一 背景 最近在进行某中台的接口测试准备 发现接口数量非常多 有6 70个 而且每个接口都有大量的参数并且需要进行各种参数验证来测试接口是否能够正确返回响应值 想了几种方案后 决定尝试使用JMeter的csv读取来实现批量的接口测试 二 脚
  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • Linux终端常见用法总结

    熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率 笔者结合自身学习实践 总结以下终端用法供同行交流学习 常 见 用 法 1 快捷键 1 1 Alt 在光标位置插入上一次执行命令的最后一个参数 1 2 Ctrl R
  • Locust负载测试工具实操

    本中介绍如何使用Locust为开发的服务 网站执行负载测试 Locust 是一个开源负载测试工具 可以通过 Python 代码构造来定义用户行为 避免混乱的 UI 和臃肿的 XML 配置 步骤 设置Locust 在简单的 HTTP 服务上模
  • Python自动化操作:简单、有趣、高效!解放你的工作流程!

    今天跟大家分享一套自动化操作流程解决方案 基于 Python语言 涉及 pyautogui pyperclip pythoncom win32com 依赖包 安装命令为 pip install pyautogui pip install p
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 测试工程师能否作为一份「终身职业」?30岁+怎么办?

    讨论 测试工程师可否作为一份终生的职业 这是我在论坛看到的一个讨论 你的答案是什么呢 我希望大家能认真思考后给出一个属于自己的答案 无论你是新手入门 还是资深专家 回答这个问题请不要凭一腔热血 也不用过分消极 别总和钱挂钩 平心而论即可 就
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • MySQL 核心模块揭秘 | 03 期 | 我是一个事务,请给我一个对象

    每个事务都有一个对象 这篇文章我们聊聊 事务的对象从哪里来 要到哪里去 作者 操盛春 爱可生技术专家 公众号 一树一溪 作者 专注于研究 MySQL 和 OceanBase 源码 爱可生开源社区出品 原创内容未经授权不得随意使用 转载请联系
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc

随机推荐