当前位置: 首页 > news >正文

ROS理论与实践学习笔记——5 ROS机器人系统仿真之URDF集成Gazebo

5.1 URDF与Gazebo基本集成流程

(1)创建功能包,导入依赖项:urdf、xacro、gazebo_ros、gazebo_ros_control、gazebo_plugins

(2)编写 URDF 或 Xacro 文件

(3)启动 Gazebo 并显示机器人模型

5.2 URDF集成Gazebo相关设置

(1)collision

        如果机器人link是标准的几何体形状,和link的 visual 属性设置一致即可。

(2)inertial

        惯性矩阵的设置需要结合link的质量与外形参数动态生成

球体惯性矩阵

<!-- Macro for inertia matrix --><xacro:macro name="sphere_inertial_matrix" params="m r"><inertial><mass value="${m}" /><inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"iyy="${2*m*r*r/5}" iyz="0" izz="${2*m*r*r/5}" /></inertial></xacro:macro>

圆柱惯性矩阵

<xacro:macro name="cylinder_inertial_matrix" params="m r h"><inertial><mass value="${m}" /><inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"iyy="${m*(3*r*r+h*h)/12}" iyz = "0"izz="${m*r*r/2}" /> </inertial></xacro:macro>

立方体惯性矩阵

 <xacro:macro name="Box_inertial_matrix" params="m l w h"><inertial><mass value="${m}" /><inertia ixx="${m*(h*h + l*l)/12}" ixy = "0" ixz = "0"iyy="${m*(w*w + l*l)/12}" iyz= "0"izz="${m*(w*w + h*h)/12}" /></inertial></xacro:macro>

        原则上,除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。

(3)颜色设置

<gazebo reference="link节点名称"><material>Gazebo/Blue</material>
</gazebo>

PS:material 标签中,设置的值区分大小写,颜色可以设置为 Red Blue Green Black .....

5.3 URDF集成Gazebo实践

(1)需要编写封装惯性矩阵算法的 xacro 文件

(2)为机器人模型中的每一个 link 添加 collision 和 inertial 标签,并且重置颜色属性

(3)在 launch 文件中启动 gazebo 并添加机器人模型

5.4 Gazebo仿真环境搭建

(1)外部仿真环境载入

(2)添加内置组件创建仿真环境  

(3)自定义仿真环境

(4)使用官方提供的插件

        下载官方模型库:git clone GitHub - osrf/gazebo_models: Gazebo database of SDF models. This is a predecessor to https://app.gazebosim.org

        将模型库复制进 gazebo:将得到的gazebo_models文件夹内容复制到 /usr/share/gazebo-*/models

        应用:重启 Gazebo,选择左侧菜单栏的 insert 可以选择并插入相关道具。


http://www.mrgr.cn/news/49993.html

相关文章:

  • 免费设计元素下载,设计师必备,建议收藏!
  • javaweb实现下载功能报错sockettimeout
  • 数据结构与算法实验8——排序
  • 【wpf】05 几种容器动态创建控件的对比
  • 国产长芯微LM32M3C46完全P2P替代ADUCM322替代集成 ADC,DAC,比较器的 32 位 ARM® M3 内核信号链 MCU,成本更低
  • 穷举vs暴搜vs深搜vs回溯vs剪枝(一)
  • Linux_进程控制
  • 13.3寸工业三防平板数字化工厂产线数采手持终端
  • jmeter中设置属性值的注意事项
  • 【C】printf()与scanf()详介以及如何在VS中使用scanf(保姆级详细版)
  • 【Git】同步远程最新的代码,覆盖本地修改
  • 源码编译 FunASR for windows on arm
  • Electron-(一)创建桌面应用
  • 3.Linux中安装redis及环境搭建
  • 【NestJS入门到精通】装饰器
  • Spring Boot 整合 MyBatis 快速入门超详教程
  • WebGl学习使用attribute变量绘制一个水平移动的点
  • C++的IO流
  • 【微服务】微服务API网关详解:提升系统效率与安全性的关键策略
  • 使用多IP香港站群服务器对网站管理seo优化提升排名有益处