ROS学习笔记之——ROS与gazebo之间的控制关系

2023-05-16

之前博客《学习笔记之——gazebo仿真》有采用用ricz来监控gazebo中的机器人。本博文对其进行深入的介绍。

本文以《 ROS学习笔记之——gazebo模型(URDF)》中的RRBot为例。

 

目录

ros_control package

ROS与gazebo之间的连接

 transmission elements to a URDF

Add the gazebo_ros_control plugin

Create a ros_controls package

使用rviz来监控机器人

参考资料


 

ros_control package

(https://wiki.ros.org/ros_control)

The ros_control packages are a rewrite of the pr2_mechanism packages to make controllers generic to all robots beyond just the PR2.

ros_control packages从机器人执行器的编码器和输入设定点获取关节状态数据作为输入。它使用一个通用的控制回路反馈机制,通常是一个PID控制器,来控制发送到执行器的输出,通常是作用力。ros_control packages对于没有一对一的联合位置、工作等映射的物理机制变得更加复杂,但是这些场景是使用传输来解释的。

 

ROS与gazebo之间的连接

An overview of the relationship between simulation, hardware, controllers and transmissions is shown below:

其实gazebo与ROS的关键跟ROS跟硬件设备的关系是类似的。

 

 transmission elements to a URDF

To use ros_control with your robot, you need to add some additional elements to your URDF. The <transmission> element is used to link actuators (连接执行器) to joints, see the <transmission> spec for exact XML format.

For the purposes of gazebo_ros_control in its current implementation, the only important information in these transmission tags are:

  • <joint name=""> - the name must correspond to a joint else where in your URDF
  • <type> - the type of transmission. Currently only "transmission_interface/SimpleTransmission" is implemented. (feel free to add more)
  • <hardwareInterface> - within the <actuator> and <joint> tags, this tells the gazebo_ros_control plugin what hardware interface to load (position, velocity or effort interfaces). Currently only effort interfaces are implemented. (feel free to add more)

The rest of the names and elements are currently ignored.

Add the gazebo_ros_control plugin

In addition to the transmission tags, a Gazebo plugin needs to be added to your URDF that actually parses the transmission tags and loads the appropriate hardware interfaces and controller manager. By default the gazebo_ros_control plugin is very simple, though it is also extensible (可扩展的) via an additional plugin architecture to allow power users to create their own custom robot hardware interfaces between ros_control and Gazebo.

除了传输标签之外,还需要在URDF中添加一个Gazebo插件,该插件可以解析传输标签并加载适当的硬件接口和控制器管理器。

默认情况下,gazebo_ros_control插件非常简单,但它也可以通过附加的插件架构进行扩展,允许超级用户在ros_control和gazebo之间创建自己的自定义机器人硬件接口。

The default plugin XML should be added to your URDF:

<gazebo>
  <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
    <robotNamespace>/MYROBOT</robotNamespace>
  </plugin>
</gazebo>

The gazebo_ros_control <plugin> tag also has the following optional child elements:

  • <robotNamespace>: The ROS namespace to be used for this instance (实例) of the plugin, defaults to robot name in URDF/SDF
  • <controlPeriod>: The period of the controller update (in seconds), defaults to Gazebo's period
  • <robotParam>: The location of the robot_description (URDF) on the parameter server, defaults to '/robot_description'
  • <robotSimType>: The pluginlib name of a custom robot sim interface to be used (see below for more details), defaults to 'DefaultRobotHWSim'

打开《 ROS学习笔记之——gazebo模型(URDF)》中的rrbot.xacro,在文件的下面会看到以下语句:

  <transmission name="tran1">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="joint1">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
    </joint>
    <actuator name="motor1">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>

  <transmission name="tran2">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="joint2">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
    </joint>
    <actuator name="motor2">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>

同时在文件rrbot.gazebo也会看到gazebo_ros_control 插件。如下图所示

  <!-- ros_control plugin -->
  <gazebo>
    <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
      <robotNamespace>/rrbot</robotNamespace>
      <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
    </plugin>
  </gazebo>

Create a ros_controls package

We'll next need to create a configuration file and launch file for our ros_control controllers that interface with Gazebo.

将gazebo与ROS的插件添加完后,需要配置相应的环境来让ROS与gazebo交互。也就是下面这个软件包

mkdir ~/catkin_ws
cd ~/catkin_ws
catkin_create_pkg MYROBOT_control controller_manager joint_state_controller robot_state_publisher
cd MYROBOT_control
mkdir config
mkdir launch

(关于这部分的详细介绍参考http://gazebosim.org/tutorials?tut=ros_control)

 

使用rviz来监控机器人

 use Rviz to monitor the state of your simulated robot by publishing /joint_states directly from Gazebo. In the previous example, the RRBot in Rviz is getting its /joint_states from a fake joint_states_publisher node (the window with the slider bars).

rosrun rviz rviz

 

 

参考资料

http://gazebosim.org/tutorials?tut=ros_control

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

ROS学习笔记之——ROS与gazebo之间的控制关系 的相关文章

  • CMake&CMakeList.txt

    1 各种关系 在各种开源项目中 xff0c 经常会发现项目中除了代码源文件 xff0c 还包含了 CMakeList txt Makefile 文件 xff0c 在项目的编译时候需要用到的命令有 cmake make 我们本次想搞清楚他们之
  • 使用Docker制作镜像并推送到镜像仓库

    本文会告诉你如何使用docker从远端下载一个镜像 xff0c 然后对镜像做修改 xff0c 最后再把镜像推送到你自己的镜像仓库 1 安装Docker 这个没啥说的 xff0c 根据你自己的环境下载对应的安装包安装就是了 docker官网下
  • Mac上几款免费的MySql客户端

    由于开发需要在Mac上连接MySql数据库 xff0c 虽然命令行也能用 xff0c 但是我还是喜欢用带UI的客户端去连 就用过的mysql客户端来说 xff0c 最好用的是Navicate xff0c 不过后来收费了 xff0c 还收的贼
  • Mac M1芯片安装 Numpy Pandas

    本文教你如何简单的在M1芯片的MacBook上安装Numpy和Pandas 刚入手了一个Mac Pro xff0c 是M1芯片的 xff0c 结果在安装Numpy和Pandas时遇到了各种莫名奇妙的问题 第1种报错 xff0c 很长 xff
  • addr2line

    1 符号表 1 1什么是符号表 符号表是内存地址与函数名 文件名 行号的映射表 符号表元素如下所示 xff1a lt 起始地址 gt lt 结束地址 gt lt 函数 gt lt 文件名 行号 gt 1 2为什么要配置符号表 为了能快速并准
  • 一些有用的Python库

    1 制作动态排序图的库 做出来像这种效果 https mp weixin qq com s DQf35t7PUcFmi3j942Q7A 2 基于matplotlib轻松绘制漂亮的表格 比自己在ppt或者excel中搞出来的表格好看多了 像这
  • Android创建杀不死的Service

    在Android开发中我们经常会遇到一些特殊的需求需要让我们的服务常驻内存 xff0c 但是会遇到各种清理软件或者用户在设置中手动停止程序的情况而导致我们的服务被异常的终止掉 虽然没有办法保证绝对的常驻内存 xff0c 但是通过策略我们还是
  • Mac 从Bash切换到Zsh的注意事项

    1 第一步要安装Zsh xff0c 可以参考现成的文章 xff0c 推荐一篇https zhuanlan zhihu com p 19556676 2 安装完成之后退出命令行重新进入 xff0c 就可以看到Zsh的效果啦 3 及得切换默认的
  • 数组求实际长度(逻辑长度)

    有很多情况下 xff0c 比如我们定义了一个数组 xff0c byte a 61 new byte 100 但是给数组赋值的时候只赋了10个 xff0c 虽然这个数组在内存中的长度仍然是100 xff0c 但是我们想得到的确实数组的实际长度
  • java清空数组

    定义一个数字byte a 61 new byte 20 如果给数组赋值后又想让数组恢复到初始的状态 xff0c 那如何做呢 xff0c 其实很简单 xff0c 直接上方法 将byte数组置空 public static byte reset
  • 使用gazebo的官方模型库文件

    首先下载所有的gazebo模型库文件 xff0c 我已经打包上传到csdn了 xff0c 可以从如下链接中下载 xff1a 下载link 然后将下载好的文件存放在如下目录 xff1a cd gazebo models 如果没有上述目录就自行
  • 作为一个普通的程序员,到底应不应该转型AI工程师?

    动不动就是50万的毕业生年薪 xff0c 动不动就是100万起步价的海归AI高级人才 xff0c 普通员到底应不应该转型AI工程师 xff0c 普通程序员到底应该如何转型AI工程师 xff1f 下面就分享几个特别典型的普通程序员成功转型AI
  • 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装

    我用的是韩国hardkernel公司做的Odroid XU板子 xff0c 类似于树莓派香蕉派 xff0c 看下它的真面目 相关参数点他 gt Odroid XU 搭建NAS之前先来安装好Ubuntu系统 下载安装文件 在Odroid里安装
  • 立创eda学习笔记一:pcb板基础知识

    整理了一下零基础学习pcb板画图需要了解的一些基础知识 xff0c 否则后面画图很困扰 什么是pcb板 xff1f PCB xff08 Printed Circuit Board xff09 xff0c 中文名称为印制电路板 xff0c 又
  • 立创eda学习笔记二:画pcb板流程(极简入门版)

    一般PCB基本设计流程如下 xff1a 前期准备 gt PCB结构设计 gt PCB布局 gt 布线 gt 布线优化和丝印 gt 网络和DRC检查和结构检查 gt 制版 一 画原理图 完成后检查元件的封装 连线是否正确 核实电路结构 xff
  • 立创eda学习笔记十一:立创eda、立创商城、嘉立创的区别

    简单来说 xff1a 立创eda是一个画原理图和pcb的eda软件 xff0c 类似于ad 立创商城是一个卖元器件网上平台 xff0c 类似于淘宝 嘉立创是一个生产pcb板 给pcb板贴片的生产厂家 一般情况下 xff0c 你可以在立创ed
  • 立创eda学习笔记十七:铺铜

    铺铜是pcb设计很常用的指令 xff0c 或者是必然用到的指令 xff0c 很多时候布线的时候不去画gnd的线 xff0c 把其他线画好了之后 xff0c 再统一铺铜作为gnd xff0c 这样方便很多 铺铜这个概念可以理解为大面积的布线
  • 立创eda学习笔记二十六:手把手教你使用立创eda的官方教程

    可以通过以下办法找到教程 xff1a 1 xff0c 在软件界面点帮助 使用教程 2 xff0c 在网站首页 帮助 教程进入 如何使用教程 xff1a 这里是一级目录 xff0c 其实对新手最有用的是前面3个部分 xff0c 后面的仿真先不
  • 立创eda学习笔记二十四:拼板

    这里主要是两部分 xff1a 自带拼板和手动拼板 xff0c 软件自带拼板功能 xff0c 那么手动拼板当然就是自己重新画图拼板了 一般用自带拼板功能就可以了 xff0c 把单板画好之后很容易就拼好了 xff0c 完全不用动任何器件和丝印编
  • Prometheus实战教程:监控mysql数据库

    今天我们使用prometheus 43 Grafana 43 mysql exporter实现监控mysql数据库各项指标数据 mysql exporter xff1a 采集mysql数据库各项指标数据 prometheus xff1a 获

随机推荐

  • prometheus常用exporter下载地址大全

    1 node exporter下载 https github com prometheus node exporter releases 2 blackbox exporter下载 https github com prometheus b
  • 论文润色 ‖ 一分钟教你如何写好SCI论文里的主题句,事半功倍

    今天 xff0c 小编来分享一下论文润色 xff0c SCI论文的主题句 xff08 Topic Sentences xff09 怎么写 xff1a 01什么是主题句 xff1f 主题句通常是段落开头的一句话 xff0c 是整个段落的小主题
  • Go xml文件处理

    在开发中会常遇到xml数据序列化和反序列化 xff0c 这里我们介绍go语言处理xml数据 encoding xml 包实现了一个简单的xml 1 0解析器 xff0c 可以理解xml名称空间 读取xml 示例 xff1a package
  • UC/OS-III 消息队列

    消息队列 一 消息队列基本概念讲解1 消息队列基本概念2 消息池2 1 消息池概念2 2 消息池初始化2 3 消息队列的运作机制2 4 消息队列的阻塞机制2 5 消息队列的应用场景 二 消息队列创建步骤1 定义消息队列2 创建消息队列 三
  • Altium Designer绘制stm32f103c8t6最小系统原理图

    文章目录 前言芯片封装自定义封装原理图绘制总结 前言 本文提供了初学者绘制stm32最小系统 xff0c 同时初学者的同学可以跟着小白学习绘制原理图哦 芯片封装 提示 xff1a 下载安装好Altium Designer之后才能进行以下操作
  • Jetson Xavier NX安装opencv3.x以及踩过的坑

    Jetson Xavier NX默认安装的是opencv4 x xff0c 在很多项目中其与opencv3 x xff0c 其中opencv3与opencv4中有部分函数是完全不同的 xff08 例如点一些Point的定义 xff0c Cv
  • 【导航算法】无人机路径跟踪L1导航算法

    L1导航算法是非常经典的非线性无人机路径跟随算法 xff0c 最早由MIT于2004年提出 xff0c 论文为 A New Nonlinear Guidance Logic for Trajectory Tracking xff0c 其导航
  • 【人工智能】1.问题求解:状态空间图和盲目搜索

    什么是问题求解 xff1f 问题求解可以理解为利用知识 xff0c 尽可能有效的找到问题的解 xff0c 或者最优解的过程 xff0c 主要包括 xff1a 1 xff09 问题描述方法 xff1a 状态空间法 xff0c 与或树表示法 x
  • 【路径规划】A*三维全局路径规划(附Python实现源码)

    1 A 启发式搜索 A 算法介绍 xff1a 启发式搜索算法 xff0c 除了wiki之外比较全的一个参考资料 xff1a A 启发式搜索算法详解 人工智能 这里是用Python写了一个简单的路径规划例子供参考 2 Matplotlib库
  • 【数据结构】3.图、最小生成树

    一 图的基本概念 1 什么是图 图表示一种多对多的关系 图包括 xff1a 1 xff09 一组顶点 xff1a 通常用 V Vertex 表示顶点集合 2 xff09 一组边 xff1a 通常用 E Edge 表示边的集合 3 xff09
  • 【NLP】主题模型文本分类

    自然语言处理之主题模型文本分类 LDA主题模型 1 主题模型 xff08 Topic Model xff09 主题模型是以非监督学习的方式对文集的隐含语义结构进行聚类的统计模型 主题模型主要被用于自然语言处理中的语义分析和文本挖掘问题 xf
  • 【NLP】Word2Vec模型文本分类

    自然语言处理之词向量模型聚类分析 Word Embedding 词嵌入向量 Word Embedding 是NLP里面一个重要的概念 xff0c 我们可以利用Word Embedding一个单词固定长度向量的表示一种表示形式 Word Em
  • (6.1)Kubernetes的Sevice服务间调用

    1 场景1 选择器 xff08 selector xff09 在k8s上运行了两个pod replicas 2 我们通过Service来整合这两个pod 在创建 Service 时 xff0c 就要通过选择器 xff08 selector
  • 【飞控算法】四旋翼飞行器控制原理与设计入门

    从动力学建模和几个四旋翼核心算法角度分析半自主飞控系统的建立 xff0c 即实现传统四旋翼的姿态控制和高度控制的过程 xff0c 文章主要借鉴了北航多旋翼设计课程 正点原子minifly微型四旋翼的资料 四旋翼无人飞行器设计 清华出版社 x
  • 【开源飞控】匿名飞控TI版解析(1)

    准备电赛的飞控题 xff0c 买来了匿名的飞控学习一下 xff0c 这里整理了一下匿名飞控中比较关键的几部分 xff0c 学习了一下原理 xff0c 然后代码解读都写注释里了 xff0c 篇幅较长 目录 一 遥控器信号接收 1 代码解读 2
  • 【开源飞控】匿名飞控TI版解析(2)

    因为电赛 xff0c 买来匿名飞控研究一下 xff0c 感觉相比其他的一下开源飞控 xff0c 易开发性和稳定性都是比较好的 xff0c 但就是比较贵 匿名TI版飞控是从32版改过来的 xff0c 硬件上就换了个芯片 xff0c 程序里也有
  • ROS中机器人与电脑的网络配置

    打开网络连接菜单 xff1a 选择网络 xff0c 输密码 并连接 xff08 以350502为例 xff0c 这里我就不连进去这个WiFi了 xff0c 还是连回402 xff0c 意思到了就行 xff09 查看连接信息 xff08 GU
  • ROS学习笔记之——gazebo仿真

    本博文是本人学习gazebo的学习记录 Gazebo是一款3D仿真器 xff0c 支持机器人开发所需的机器人 传感器和环境模型 xff0c 并且通过搭载的物理引擎可以得到逼真的仿真结果 Gazebo是近年来最受欢迎的三维仿真器之一 xff0
  • ROS学习笔记之——gazebo模型(URDF)

    最近在学习gazebo仿真 在之前博文里面 学习笔记之 gazebo仿真 xff0c 在介绍深度相机的ROS插件的时候 xff0c 涉及到了gazebo里面的一些模型文件架构的定义 本博文主要是对模型文件的定义做学习记录 目录 Model
  • ROS学习笔记之——ROS与gazebo之间的控制关系

    之前博客 学习笔记之 gazebo仿真 有采用用ricz来监控gazebo中的机器人 本博文对其进行深入的介绍 本文以 ROS学习笔记之 gazebo模型 xff08 URDF xff09 中的RRBot为例 目录 ros control